IBM Support

What changes do I have to make in my SCLM language definition for COBOL 6?

Question & Answer


Question

Now that we are on COBOL 6, our SCLM language definition from COBOL 4 doesn't work. How do we fix it?

Cause

The COBOL V6 compiler has several changes to the ddnames that have to be addressed in the SCLM language definition. For example,
  • with COBOL V5 and V6.1, there was no separate SYSDEBUG side file. With COBOL V6.2, though, the SYSDEBUG side file is back. If the FLMALLOC for the SYSDEBUG was removed for V5.1, V5.2 or V6.1, it needs to be replaced.
  • COBOL V5 and V6 have several ddnames that didn't exist in COBOL V4. You need to add the new ddnames with FLMALLOC statements.

If the ddnames are not updated correctly, one of the following errors might occur:

Abend C03000 hex occurred processing command 'FLMCMD '.

or

FLM07011 - ERROR ALLOCATING TEMPORARY DATA SET FOR TRANSLATOR: IBM COMPILER
DATA SET NUMBER: 5 CODE: 0

or

IGYCB7104-U Internal error while compiling function....

or

IGYOS4081-U DSNH005I DSNHPSRV FILE "SLxxxxxx " NO MEMBER NAME SPECIFIED

or

IEC212I 414-08,IGG0201B,jjjjjjjj,BUILD0,xxxxxxxx,uuuu,temp.data.set.name

Answer

Changes to all COBOL language definitions

Add the new required ddnames to the COBOL step of the language definition. The ddnames are documented here: Enterprise COBOL Programming Guide

Review the OPTIONS in FLMTRNSL statement, or in the data set specified by the SYSOPTF ddname.  Some options no longer apply.  For example, if you use option LIB, the following message is issued:

IGYOS4090-I   The "LIB" option specification is no longer required. 
      COBOL library processing is always in effect. 

Changes to COBOL language definitions with PORDER=1

If you are using PORDER=1 in the FLMTRNSL statement for IGYCRCTL, you need to add FLMALLOC statements for the new ddnames.

Here is a snippet of a language definition for COBOL V6 with PORDER=1 that includes the FLMALLOC statements:

           FLMTRNSL   CALLNAM='COBOL 6  COMPILER',                      C
               FUNCTN=BUILD,                                           C
               COMPILE=IGYCRCTL,                                       C
               VERSION=6.3,                                            C
               DSNAME=COBOL.V6R3M0.SIGYCOMP,                           C
               GOODRC=0,                                               C
               PORDER=1,                                               C
               OPTIONS=(XREF(FULL),APOST,NODYNAM,LIST,NONUMBER,NOSEQ)
*
* DDNAME ALLOCATION
*
           FLMALLOC  IOTYPE=O,DDNAME=SYSLIN,KEYREF=OBJ,                C
               RECNUM=5000,DFLTTYP=OBJ
*
           FLMALLOC  IOTYPE=I,DDNAME=SYSLIB,KEYREF=SINC
*
           FLMALLOC  IOTYPE=S,DDNAME=SYSIN,KEYREF=SINC,RECNUM=2000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT1,RECNUM=5000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT2,RECNUM=5000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT3,RECNUM=5000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT4,RECNUM=5000
*
           FLMALLOC  IOTYPE=A,DDNAME=SYSTERM
               FLMCPYLB NULLFILE
* 
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000,          C
               DDNAME=SYSUT5
* 
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000,          C
               DDNAME=SYSUT6
* 
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000,          C
               DDNAME=SYSUT7
* 
           FLMALLOC  IOTYPE=A,DDNAME=SYSADATA
              FLMCPYLB NULLFILE
*
           FLMALLOC  IOTYPE=A,DDNAME=SYSPUNCH
              FLMCPYLB NULLFILE
*
           FLMALLOC  IOTYPE=A,DDNAME=SYSJAVA
            FLMCPYLB NULLFILE
*
           FLMALLOC  IOTYPE=A,DDNAME=SYSDEBUG
            FLMCPYLB NULLFILE
*
           FLMALLOC IOTYPE=W,DDNAME=SYSMDECK,RECNUM=50000,RECFM=FB,    C
               LRECL=80
*
           FLMALLOC  IOTYPE=A,DDNAME=DBRMLIB
            FLMCPYLB NULLFILE
*
           FLMALLOC  IOTYPE=A,DDNAME=SYSOPTF
            FLMCPYLB NULLFILE
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT8,                           C
               RECFM=FB,LRECL=80,RECNUM=50000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT9,                           C
               RECFM=FB,LRECL=80,RECNUM=50000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT10,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT11,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT12,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT13,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT14,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
*
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT15,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
*
           FLMALLOC  IOTYPE=O,DDNAME=SYSPRINT,KEYREF=LIST,             C
               RECFM=FBA,LRECL=133,RECNUM=50000,PRINT=Y,DFLTTYP=LIST

Changes to COBOL language definitions with PORDER=3

If you are using PORDER=3 in the FLMTRNSL statement for IGYCRCTL, you need to update the statement to make sure the ddnames are presented to the compiler in the correct order.

Here is a snippet of a language definition for COBOL V6 with PORDER=3 that includes the FLMALLOC statements:

          FLMTRNSL   CALLNAM='COBOL 6  COMPILER',                      C
               FUNCTN=BUILD,                                           C
               COMPILE=IGYCRCTL,                                       C
               GOODRC=4,                                               C
               PORDER=3,                                               C
               VERSION=6.3,                                            C
               DSNAME=COBOL.V6R3M0.SIGYCOMP,                           C
               OPTIONS=(XREF(FULL),APOST,NODYNAM,LIST,NONUMBER,NOSEQ)
*
* DDNAME ALLOCATION (USING DDNAMELIST SUBSTITUTION)
*
*  1       (* SYSLIN *)
           FLMALLOC  IOTYPE=O,KEYREF=OBJ,RECFM=FB,LRECL=80,            C
               RECNUM=5000,DFLTTYP=OBJ
*  2       (* N/A *)
           FLMALLOC  IOTYPE=N
*  3       (* N/A *)
           FLMALLOC  IOTYPE=N
*  4       (* SYSLIB *)
           FLMALLOC  IOTYPE=I,KEYREF=SINC,DDNAME=SYSLIB
*  5       (* SYSIN *)
           FLMALLOC  IOTYPE=S,KEYREF=SINC,RECNUM=2000
*  6       (* SYSPRINT *)
           FLMALLOC  IOTYPE=O,KEYREF=LIST,RECFM=FBA,LRECL=133,         C
               RECNUM=250000,PRINT=Y,DFLTTYP=LIST
*  7       (* SYSPUNCH *)
           FLMALLOC  IOTYPE=A
            FLMCPYLB NULLFILE
*  8       (* SYSUT1 *)
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000
*  9       (* SYSUT2 *)
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000
* 10       (* SYSUT3 *)
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000
* 11       (* SYSUT4 *)
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000
* 12       (* SYSTERM *)
           FLMALLOC  IOTYPE=A,DDNAME=SYSTERM
            FLMCPYLB NULLFILE
* 13       (* SYSUT5 *)
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000
* 14       (* SYSUT6 *)
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000
* 15       (* SYSUT7 *)
           FLMALLOC  IOTYPE=W,RECFM=FB,LRECL=80,RECNUM=50000
* 16       (* SYSADATA *)
           FLMALLOC  IOTYPE=A
            FLMCPYLB NULLFILE
* 17       (* SYSJAVA  *)
           FLMALLOC  IOTYPE=A
            FLMCPYLB NULLFILE
* 18       (* SYSDEBUG *)
           FLMALLOC  IOTYPE=A
            FLMCPYLB NULLFILE
* 19       (* SYSMDECK *)
           FLMALLOC IOTYPE=W,DDNAME=SYSMDECK,RECNUM=50000,RECFM=FB,    C
               LRECL=80
* 20       (* DBRMLIB  *)
           FLMALLOC  IOTYPE=A
            FLMCPYLB NULLFILE
* 21       (* SYSOPTF  *)
           FLMALLOC  IOTYPE=A
            FLMCPYLB NULLFILE
* 22       (* SYSUT8 *)
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT8,                           C
               RECFM=FB,LRECL=80,RECNUM=50000
* 23       (* SYSUT9 *)
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT9,                           C
               RECFM=FB,LRECL=80,RECNUM=50000
* 24       (* SYSUT10 *)
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT10,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
* 25       (* SYSUT11 *)
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT11,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
* 26       (* SYSUT12 *)
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT12,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
* 27       (* SYSUT13 *)
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT13,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
* 28       (* SYSUT14 *)
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT14,                          C
               RECFM=FB,LRECL=80,RECNUM=50000
* 29       (* SYSUT15 *)
           FLMALLOC  IOTYPE=W,DDNAME=SYSUT15,                          C
               RECFM=FB,LRECL=80,RECNUM=50000

Use PORDER=3 for SCLM Language types that invoke an external CICS translator and the COBOL compiler. The external translator processes members and creates output to be passed to the compiler. In order to pass output to the COBOL compiler, code the FLMTRNSL macro for the COBOL compiler with PORDER=3. PORDER=3 causes the "compiler option list" followed by a "DDNAME substitution list" to be passed to the compiler.

Changes to Binder Language Definitions

The binder no longer allows PDS for SYSLMOD ddname. PDSEs are required. If you get error message

IEW2606S 4B39 MODULE INCORPORATES VERSION 3 PROGRAM OBJECT FEATURES AND CANNOT BE SAVED IN LOAD MODULE FORMAT.


on the binder step, update the IEWL language definition to use PDSE for SYSLMOD. Make sure the FLMALLOC statement includes both DSNTYPE=LIBRARY and CATLG=Y.

           FLMALLOC  IOTYPE=P,KEYREF=LOAD,RECFM=U,LRECL=0,             C
               RECNUM=500,DSNTYPE=LIBRARY,CATLG=Y                       

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSAU5Z","label":"COBOL Compilers"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Component":"","Version":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}},{"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSCVRUA","label":"SCLM for z\/OS"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
20 July 2021

UID

dwa1247614