Skip to content
CA Endevor® SCM - 18.0
Documentation powered by DocOps

Sample Processors

Last update November 8, 2018

The processor examples in this article demonstrate the use of CA Endevor® SCM utilities, keywords, and user-defined symbols within the processors. These capabilities let you easily convert your JCL and PROCs into CA Endevor® SCM processors. User-defined symbols can then be overridden by the administrator during processor group definition.

How to Convert PROCs to Processors

To convert an existing JCL PROC into a processor:

  1. Start with the current JCL or PROC.
  2. Copy the current PROC and make the following changes:
    1. Add the BC1PDSIN utility as the first step.
      The BC1PDSIN utility is used to initialize temporary data sets. These temporary data sets are then written to by subsequent compile, assemble, or link-edit steps, instead of SYSOUT=* (for example, SYSPRINT). The CONLIST step then bundles these temporary data sets together and either store them in a listings data set or print them.
      There is a sample BC1PDSIN step in the iprfx.iqual.CSIQSAMP library as member BC1PDSIN. It can be copied into your PROCs and modified to include or exclude data sets as appropriate.

    2. Add the CONWRITE utility as the second step.
      The CONWRITE utility is used to get a copy of the current level of the controlled base/delta source and write it to a temporary data set. The temporary data set can then be passed as input to a subsequent compile, assemble or link-edit step. For users of CA Panvalet and CA Librarian, the CONWRITE utility expands ++INCLUDE or -INC statements in the source.

      There is a sample CONWRITE step in the iprfx.iqual.CSIQSAMP library as member CONWRITE. This sample CONWRITE step uses the &EXPINC. and &MONITOR. symbols. You can define the following values for these symbols in your PROC statements:

      • EXPINC=N
        If you do not want to expand ++INCLUDE or -INC statements.
      • EXPINC=Y
        If you want to expand ++INCLUDE and -INC statements.
      • MONITOR= COMPONENTS
        If you want to monitor selected data sets in order to build component lists.
      • MONITOR=NONE
        If you do not have ACM or do not want the data set monitored.
    3. Add MAXRC=nnn to each step.
      The MAXRC keyword is added to each step on the EXEC statement. It tells CA Endevor® SCM of the highest acceptable OS return code (RC) for the step. If the utility returns an OS return code higher than the value coded, CA Endevor® SCM sets a failed flag on for the element and issue a CA Endevor® SCM return code of 12.
    4. Add MONITOR=COMPONENTS on appropriate DSN= parameters.
      The MONITOR keyword is added to each data set name in a DD statement. This keyword is for ACM users. It instructs ACM to monitor the specific data set for input or output components and to build a component list with the information captured. Add this keyword to copylibs, loadlibs and listing data sets. Non-ACM users can code the MONITOR=NONE keyword in anticipation of adding ACM at a later point in time.
    5. Add the CONLIST utility as the last step.
      The CONLIST utility is used to concatenate the output listings from several temporary data sets written to by the compile, assemble, and link-edit steps. It then places a banner page on the front of the combined listing and either prints or stores the listing.
      There is a sample CONLIST step in the iprfx.iqual.CSIQSAMP library as member CONLIST. It can be copied into your PROCs and modified to include or exclude data sets as appropriate. This sample CONLIST step uses the &LISTLIB symbol. If you add LISTLIB=listing library name to your PROC statement, CA Endevor® SCM stores the listing in the listing library name as coded. If you add LISTLIB=NO to your PROC statement CA Endevor® SCM prints the listing.
    6. Ensure that all user symbols are defined on the PROC statement.

Generate Processors

This section contains sample generate processors. Samples are provided in iprfx.iqual.CSIQSAMP. These processors are:

  • GASMNBL
    An Assembler compile and link-edit processor.
  • GCIIDBL
    A processor that performs a DB2 pre-compile, compiles, link-edits a COBOL II program, and binds the DB2 plan.
  • GCIINBL
    A COBOL II and COBOL/370 compile and link-edit processor.
  • GLNKNBL
    A link-edit-only processor (composite link).
  • LOADONLY
    This processor handles “sourceless” load modules or binary files that you want CA Endevor® SCM to manage It is used as a generate process for ADD and UPDATE, and a move process for MOVE and TRANSFER.

These processors are designed to execute at Stage 1. To use a processor at Stage 2, override during processor group definition the &CSYSLIB1, &LSYSLIB1, &LISTLIB and &LOADLIB symbols with the appropriate Stage 2 data set names.

For ACM users, each processor is coded to monitor the appropriate data sets. This option has been coded using the MONITOR=&MONITOR syntax. The MONITOR symbol defaults to COMPONENTS as defined on each PROC statement. If you do not have or use ACM, you can override the value for the MONITOR symbol to read NONE.

These processors also offer two alternatives for handling listings. If you override the value of the LISTLIB parameter to read no, the listings will be printed rather than stored.

Each sample is introduced with an expansion of its identifier. For example, GCIINBL is introduced as Generate COBOL II, No database, for Batch, and create a Load module.

The GASMNBL Generate Processor

Generate Assembler, No database, for Batch, and create a Load module.

//*******************************************************************
//**                                                               **
//**  ASSEMBLE AND LINK-EDIT PROCESSOR                             **
//**                                                               **
//*******************************************************************
//*
//GASMNBL PROC LISTLIB='&PROJECT..&GROUP.&C1ST..LISTLIB',
//        LOADLIB='&PROJECT..&GROUP.&C1ST..LOADLIB',
//        MACLIB='SYSMACLIB',
//        PROJECT='IPRFX.IQUAL',
//        GROUP='SMPL',
//        STG3='EMER',
//        STG4='PROD',
//        EXPINC=N,
//        LSYSLIB1='&PROJECT..&GROUP.&C1ST..LOADLIB',
//        LSYSLIB2='&PROJECT..&GROUP.&C1ST2..LOADLIB',
//        LSYSLIB3='&PROJECT..&GROUP.&STG3..LOADLIB',
//        LSYSLIB4='&PROJECT..&GROUP.&STG4..LOADLIB',
//        MACLIB1='&PROJECT..&GROUP.&C1ST..MACLIB',
//        MACLIB2='&PROJECT..&GROUP.&C1ST2..MACLIB',
//        MACLIB3='&PROJECT..&GROUP.&STG3..MACLIB',
//        MACLIB4='&PROJECT..&GROUP.&STG4..MACLIB',
//        MEMBER=&C1ELEMENT.,
//        MONITOR=COMPONENTS,
//        PARMASM='NODECK,OBJECT,NOTERM,XREF,NOUSING',
//        PARMLNK='LIST,MAP,RENT,XREF',
//        SYSOUT=*,
//        WRKUNIT=TDISK
//**********************************************************************
//*  ALLOCATE TEMPORARY LISTING DATASETS                               *
//**********************************************************************
//INIT   EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01 DD DSN=&&ASMLIST,DISP=(,PASS),
//            UNIT=&WRKUNIT.,SPACE=(TRK,(100,100),RLSE),
//            DCB=(RECFM=FBA,LRECL=125,BLKSIZE=0,DSORG=PS)
//C1INIT02 DD DSN=&&LNKLIST,DISP=(,PASS),
//            UNIT=&WRKUNIT.,SPACE=(TRK,(10,10),RLSE),
//            DCB=(RECFM=FBA,LRECL=125,BLKSIZE=0,DSORG=PS)

//*********************************************************************
//* READ SOURCE AND EXPAND INCLUDES                                   *
//*********************************************************************
//CONWRITE EXEC PGM=CONWRITE,COND=(0,LT),MAXRC=0,
// PARM='EXPINCL(&EXPINC)'.
//ELMOUT  DD DSN=&&ELMOUT,DISP=(,PASS),
//           UNIT=&WRKUNIT.,SPACE=(TRK,(100,100),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//           MONITOR=&MONITOR.
//*******************************************************************
//*   ASSEMBLE THE ELEMENT                                         **
//*******************************************************************
//ASM   EXEC PGM=ASMA90,COND=(0,LT),MAXRC=4,
// PARM='&PARMASM'.
//SYSLIB   DD DSN=&MACLIB1.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&MACLIB2.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&MACLIB3.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&MACLIB4.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&MACLIB.,
//            DISP=SHR
//SYSIN    DD DSN=&&ELMOUT,DISP=(OLD,DELETE)
//SYSLIN   DD DSN=&&SYSLIN,DISP=(,PASS,DELETE),
//            UNIT=&WRKUNIT.,SPACE=(TRK,(100,100),RLSE),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            FOOTPRNT=CREATE
//SYSPUNCH DD DUMMY
//SYSUT1   DD UNIT=&WRKUNIT.,SPACE=(CYL,(1,1))
//SYSUT2   DD UNIT=&WRKUNIT.,SPACE=(CYL,(1,1))
//SYSUT3   DD UNIT=&WRKUNIT.,SPACE=(CYL,(1,1))
//SYSPRINT DD DSN=&&ASMLIST,DISP=(OLD,PASS)
//*******************************************************************
//*   LINK EDIT THE ELEMENT                                        **
//*******************************************************************
//LKED   EXEC PGM=IEWL,COND=(4,LT),MAXRC=4,
// PARM='&PARMLNK'.
//SYSLIN   DD DSN=&&SYSLIN,DISP=(OLD,DELETE)
//SYSLMOD  DD DSN=&LOADLIB(&MEMBER).,
//            MONITOR=&MONITOR.,
//            FOOTPRNT=CREATE,
//            DISP=SHR
//SYSLIB   DD DSN=&LSYSLIB1.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB2.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB3.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB4.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//SYSUT1   DD UNIT=&WRKUNIT.,SPACE=(CYL,(1,1))
//SYSPRINT DD DSN=&&LNKLIST,DISP=(OLD,PASS)
//*******************************************************************
//*   STORE THE LISTINGS IF: &LISTLIB=LISTING. LIBRARY NAME         *
//*******************************************************************
//STORLIST EXEC PGM=CONLIST,MAXRC=0,PARM=STORE,COND=EVEN,
//              EXECIF=(&LISTLIB.,NE,NO)
//C1LLIBO    DD DSN=&LISTLIB.,DISP=SHR,
//              MONITOR=&MONITOR.
//C1BANNER   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//              DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0)
//LIST01     DD DSN=&&ASMLIST,DISP=(OLD,DELETE)
//LIST02     DD DSN=&&LNKLIST,DISP=(OLD,DELETE)
//*******************************************************************
//*   PRINT THE LISTINGS IF: &LISTLIB=NO.                           *
//*******************************************************************
//PRNTLIST EXEC PGM=CONLIST,MAXRC=0,PARM=PRINT,COND=EVEN,
//              EXECIF=(&LISTLIB.,EQ,NO)
//C1BANNER   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//              DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0,DSORG=PS)
//C1PRINT    DD SYSOUT=&SYSOUT.,
//              DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0,DSORG=PS)
//LIST01     DD DSN=&&ASMLIST,DISP=(OLD,DELETE)
//LIST02     DD DSN=&&LNKLIST,DISP=(OLD,DELETE)

The GCIIDBL Generate Processor

Generate Cobol II, for DB2, for Batch, and create a Load module.

//*******************************************************************

//**                                                               **
//** PERFORMS A DB2 PRECOMPILE, COBOL2 COMPILE AND LINK EDIT       **
//** BINDS THE DB2 APPL PLAN                                       **
//**                                                               **
//*******************************************************************
//GCIIDBL PROC LISTLIB='&PROJECT..&GROUP.&C1ST..LISTLIB',
//             CLECOMP='SYSCLECOMP',                        *SIGYCOMP
//             CLERUN='SYSCLERUN',                          *SCEERUN
//             CLELKED='SYSCLELKED',                        *SCEELKED
//             CIILIB='SYSCIILIB',
//             CIICOMP='SYSCIICOMP',
//             DB2SYS='DB2SYSTEM',
//             DB2LOADL='SYSDB2LIB',
//             DBRMLIB='&PROJECT..&GROUP.&C1ST..DBRMLIB',
//             PROJECT='IPRFX.IQUAL',
//             GROUP='SMPL',
//             STG1='&C1ST.',    CURRENT ENV STAGE 2 NAME
//             STG2='&C1ST2.',   CURRENT ENV STAGE 2 NAME
//             STG3='EMER',      EMER STAGE
//             STG4='PROD',      PROD STAGE
//             CSYSLIB1='&PROJECT..&GROUP.&STG1..COPYLIB',
//             CSYSLIB2='&PROJECT..&GROUP.&STG2..COPYLIB',
//             CSYSLIB3='&PROJECT..&GROUP.&STG3..COPYLIB',
//             CSYSLIB4='&PROJECT..&GROUP.&STG4..COPYLIB',
//             EXPINC=N,
//             LOADLIB='&PROJECT..&GROUP.&C1ST..LOADLIB',
//             LSYSLIB1='&LOADLIB'.,
//             LSYSLIB2='&PROJECT..&GROUP..&STG2..LOADLIB',
//             LSYSLIB3='&PROJECT..&GROUP..&STG3..LOADLIB',
//             LSYSLIB4='&PROJECT..&GROUP..&STG4..LOADLIB',
//             MEMBER=&C1ELEMENT.,
//             MONITOR=COMPONENTS,
//             PARMLIB='&PROJECT..&GROUP.&C1ST..PARMLIB',
//             PARMPC='HOST(COB2),APOST,APOSTSQL',
//             PARMCOB='LIB,NOSEQ,OBJECT,APOST,',
//             PARMLNK='LIST,MAP,XREF',
//             PLAN=&MEMBER.,
//             SYSOUT=A,
//             WRKUNIT=TDISK

//**********************************************************************
//*   ALLOCATE TEMPORARY LISTING DATASETS                               *
//**********************************************************************
//INIT      EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01    DD DISP=(,PASS),DSN=&&DB2PLIST,
//               UNIT=&WRKUNIT.,SPACE=(TRK,(10,10)),
//               DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0)
//C1INIT02    DD DISP=(,PASS),DSN=&&COBLIST,
//               UNIT=&WRKUNIT.,SPACE=(TRK,(10,10)),
//               DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0)
//C1INIT03    DD DISP=(,PASS),DSN=&&LNKLIST,
//               UNIT=&WRKUNIT.,SPACE=(TRK,(10,10)),
//               DCB=(RECFM=FBA,LRECL=125,BLKSIZE=0)
//C1INIT04    DD DISP=(,PASS),DSN=&&PARMLIST,
//               UNIT=&WRKUNIT.,SPACE=(TRK,(10,10)),
//               DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0)
//*********************************************************************
//* READ SOURCE AND EXPAND INCLUDES                                   *
//*********************************************************************
//CONWRITE EXEC PGM=CONWRITE,COND=(0,LT),MAXRC=0,
// PARM='EXPINCL(&EXPINC)'.
//C1INCL01   DD DSN=&CSYSLIB1.,DISP=SHR,
//              MONITOR=&MONITOR.
//C1INCL02   DD DSN=&CSYSLIB2.,DISP=SHR,
//              MONITOR=&MONITOR.
//C1INCL03   DD DSN=&CSYSLIB3.,DISP=SHR,
//              MONITOR=&MONITOR.
//C1INCL04   DD DSN=&CSYSLIB4.,DISP=SHR,
//              MONITOR=&MONITOR.
//ELMOUT     DD DSN=&&ELMOUT,DISP=(,PASS),
//              UNIT=&WRKUNIT.,SPACE=(TRK,(10,10),RLSE),
//              DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//              MONITOR=&MONITOR.
//*********************************************************************
//*  DB2 PRECOMPILIER PROCESSING                                      *
//*********************************************************************
//PRECOMP EXEC PGM=DSNHPC,COND=(0,NE),MAXRC=4,
// PARM='&PARMPC'.
//STEPLIB   DD DSN=&DB2LOADL.,DISP=SHR
//DBRMLIB   DD DSN=&DBRMLIB(&MEMBER).,DISP=SHR,
//             MONITOR=&MONITOR.,
//             FOOTPRNT=CREATE
//SYSIN     DD DSN=&&ELMOUT,DISP=OLD
//SYSCIN    DD DSN=&&PREOUT,DISP=(,PASS),
//             UNIT=&WRKUNIT.,SPACE=(TRK,(10,10),RLSE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSLIB    DD DSN=&CSYSLIB1.,
//             MONITOR=&MONITOR.,
//             DISP=SHR
//          DD DSN=&CSYSLIB2.,
//             MONITOR=&MONITOR.,
//             DISP=SHR
//          DD DSN=&CSYSLIB3.,
//             MONITOR=&MONITOR.,
//             DISP=SHR
//          DD DSN=&CSYSLIB4.,
//             MONITOR=&MONITOR.,
//             DISP=SHR
//SYSTERM   DD SYSOUT=&SYSOUT.
//SYSPRINT  DD DSN=&&DB2PLIST,DISP=(OLD,PASS)
//SYSUT1    DD UNIT=&WRKUNIT.,SPACE=(CYL,(1,1))
//SYSUT2    DD UNIT=&WRKUNIT.,SPACE=(CYL,(1,1))
//*******************************************************************
//**  COMPILE THE ELEMENT                                          **
//*******************************************************************
//COMPILE EXEC PGM=IGYCRCTL,COND=(0,LT),MAXRC=4,
// PARM='&PARMCOB'.
//* TEST PROCESSOR GROUP IF CIINBL THEN ALLOCATE COBOL2 LIBRARIES
//*           IF CLENBL ALLOCATE COBOL/MVS RUNTIME LIBS
// IF &C1PRGRP=CIINBL. THEN
//STEPLIB  DD DSN=&CIICOMP.,DISP=SHR
//         DD DSN=&CIILIB.,DISP=SHR
// ELSE
//* PROCESSOR GROUP IS COBOL/LE
//STEPLIB  DD DSN=&CLECOMP.,DISP=SHR
//         DD DSN=&CLERUN.,DISP=SHR
// ENDIF
//*******************************************************************
//*   COPYLIB CONCATENATIONS                                       **
//*******************************************************************
//SYSLIB   DD DSN=&CSYSLIB1.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&CSYSLIB2.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&CSYSLIB3.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&CSYSLIB4.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//SYSIN    DD DSN=&&PREOUT,DISP=(OLD,DELETE)
//SYSLIN   DD DSN=&&SYSLIN,DISP=(,PASS,DELETE),
//            UNIT=&WRKUNIT.,SPACE=(TRK,(10,10),RLSE),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            FOOTPRNT=CREATE
//SYSUT1   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT2   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT3   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT4   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT5   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT6   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT7   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSPRINT DD DSN=&&COBLIST,DISP=(OLD,PASS)
//*******************************************************************
//**  LINK EDIT THE ELEMENT                                        **
//*******************************************************************
//LKED   EXEC PGM=IEWL,COND=(4,LT),MAXRC=4,
// PARM='&PARMLNK'.
//SYSLIN   DD DSN=&&SYSLIN,DISP=(OLD,DELETE)
//SYSLMOD  DD DSN=&LOADLIB(&MEMBER).,
//            MONITOR=&MONITOR.,
//            FOOTPRNT=CREATE,
//            DISP=SHR
//SYSLIB   DD DSN=&LSYSLIB1.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB2.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB3.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB4.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&DB2LOADL.,
//            DISP=SHR
//* IF PROCESSOR GROUP IS CIINBL THEN ALLOC COB2 CALL LIBRARY COB2LIB
// IF &C1PRGRP=CIINBL. THEN
//         DD DSN=&CIILIB.,
//            DISP=SHR
// ELSE
//* IF PROCESSOR GROUP IS COBOL/LE THEN ALLOC LE CALL LIBRARY SCEELKED
//         DD DSN=&CLELKED.,
//            DISP=SHR
// ENDIF
//SYSUT1   DD UNIT=&WRKUNIT.,SPACE=(CYL,(1,1))
//SYSPRINT DD DSN=&&LNKLIST,DISP=(OLD,PASS)
//*********************************************************************
//* BIND APPLICATION PLAN IF EXECUTING IN FOREGROUND
//* NOTE: ATTEMPTING TO RUN THIS STEP IN BG WILL RESULT IN RC=5
//*********************************************************************
//BINDFG EXEC PGM=BC1PTMP0,MAXRC=5,COND=(4,LT),
// PARM='&PARMLIB(&C1ELEMENT)'.
//STEPLIB  DD DSN=&DB2LOADL.,DISP=SHR
//DBRMLIB  DD DSN=&DBRMLIB.,DISP=SHR
//SYSUDUMP DD SYSOUT=&SYSOUT.
//*********************************************************************
//* BIND APPLICATION PLAN IF EXECUTING IN BACKGROUND                  *
//*********************************************************************
//BINDBG EXEC PGM=IKJEFT01,COND=((5,NE,BINDFG),(5,LT)),MAXRC=7
//STEPLIB  DD DSN=&DB2LOADL.,DISP=SHR
//DBRMLIB  DD DSN=&DBRMLIB.,DISP=SHR
//SYSTSPRT DD DSN=&&PARMLIST,DISP=(OLD,PASS)
//SYSTSIN  DD DSN=&PARMLIB(&C1ELEMENT).,DISP=(OLD,PASS)
//*******************************************************************
//*   STORE THE LISTINGS IF: &LISTLIB=LISTING. LIBRARY NAME         *
//*******************************************************************
//STORLIST EXEC PGM=CONLIST,MAXRC=0,PARM=STORE,COND=EVEN,
//      EXECIF=(&LISTLIB.,NE,NO)
//C1LLIBO   DD DSN=&LISTLIB.,DISP=SHR,
//           MONITOR=&MONITOR.
//C1BANNER  DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//             DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//LIST01    DD DSN=&&DB2PLIST,DISP=(OLD,DELETE)
//LIST02    DD DSN=&&COBLIST,DISP=(OLD,DELETE)
//LIST03    DD DSN=&&LNKLIST,DISP=(OLD,DELETE)
//LIST04    DD DSN=&&PARMLIST,DISP=(OLD,DELETE)
//*******************************************************************
//*   PRINT THE LISTINGS IF: &LISTLIB=NO.                           *
//*******************************************************************
//PRNTLIST EXEC PGM=CONLIST,MAXRC=0,PARM=PRINT,COND=EVEN,
//      EXECIF=(&LISTLIB.,EQ,NO)
//C1BANNER  DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//             DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171,DSORG=PS)
//C1PRINT   DD SYSOUT=&SYSOUT.,
//             DCB=(RECFM=FBA,LRECL=133,BLKSIZE=1330,DSORG=PS)
//LIST01    DD DSN=&&DB2PLIST,DISP=(OLD,DELETE)
//LIST02    DD DSN=&&COBLIST,DISP=(OLD,DELETE)
//LIST03    DD DSN=&&LNKLIST,DISP=(OLD,DELETE)
//LIST04    DD DSN=&&PARMLIST,DISP=(OLD,DELETE)
//**

The GCIINBL Generate Processor

Generate Cobol II, No database, for Batch, and create a Load module. This processor uses If-Then-Else logic to specify the proper system libraries using the COBOL version selected during installation. Values are:

  • CII-COBOL II
  • CLE-COBOL/LE
  • COBOL-COBOL for z/OS

//*******************************************************************
//**                                                               **
//**  COBOL2 AND COBOL/MVS COMPILE AND LINK-EDIT PROCESSOR
//**                                                               **
//*******************************************************************
//GCIINBL PROC LISTLIB='&PROJECT..&GROUP.&C1ST..LISTLIB',
//             CLECOMP='SYSCLECOMP',                        *SIGYCOMP
//             CLERUN='SYSCLERUN',                          *SCEERUN
//             CLELKED='SYSCLELKED',                        *SCEELKED
//             CIILIB='SYSCIILIB',                          *COB2LIB
//             CIICOMP='SYSCIICOMP',                        *COB2COMP
//             PROJECT='IPRFX.IQUAL',
//             GROUP='SMPL',
//             STG3='EMER',             SMPLPROD/EMER STAGE
//             STG4='PROD',             SMPLPROD/PROD STAGE
//             CSYSLIB1='&PROJECT..&GROUP.&C1ST..COPYLIB',
//             CSYSLIB2='&PROJECT..&GROUP.&C1ST2..COPYLIB',
//             CSYSLIB3='&PROJECT..&GROUP.&STG3..COPYLIB',
//             CSYSLIB4='&PROJECT..&GROUP.&STG4..COPYLIB',
//             EXPINC=N,
//             LOADLIB='&PROJECT..&GROUP.&C1ST..LOADLIB',
//             LSYSLIB1='&LOADLIB'.,
//             LSYSLIB2='&PROJECT..&GROUP.&C1ST2..LOADLIB',
//             LSYSLIB3='&PROJECT..&GROUP.&STG3..LOADLIB',
//             LSYSLIB4='&PROJECT..&GROUP.&STG4..LOADLIB',
//             MEMBER=&C1ELEMENT.,
//             MONITOR=COMPONENTS,
//             PARMCOB='LIB,NOSEQ,OBJECT,APOST,',
//             PARMLNK='LIST,MAP,XREF',
//             SYSOUT=*,
//             WRKUNIT=TDISK

//**********************************************************************
//*   ALLOCATE TEMPORARY LISTING DATASETS                               *
//**********************************************************************
//INIT     EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01   DD DSN=&&COBLIST,DISP=(,PASS),
//              UNIT=&WRKUNIT.,SPACE=(TRK,(10,10)),
//              DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0,DSORG=PS)
//C1INIT02   DD DSN=&&LNKLIST,DISP=(,PASS),
//              UNIT=&WRKUNIT.,SPACE=(TRK,(10,10)),
//              DCB=(RECFM=FBA,LRECL=125,BLKSIZE=0,DSORG=PS)
//*********************************************************************
//* READ SOURCE AND EXPAND INCLUDES                                   *
//*********************************************************************
//CONWRITE EXEC PGM=CONWRITE,COND=(0,LT),MAXRC=0,
// PARM='EXPINCL(&EXPINC)'.
//ELMOUT     DD DSN=&&ELMOUT,DISP=(,PASS),
//              UNIT=&WRKUNIT.,SPACE=(TRK,(100,100),RLSE),
//              DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//              MONITOR=&MONITOR.
//*******************************************************************
//**  COMPILE THE ELEMENT                                          **
//*******************************************************************
//COMPILE EXEC PGM=IGYCRCTL,COND=(0,LT),MAXRC=4,
// PARM='&PARMCOB'.
//* TEST PROCESSOR GROUP IF CIINBL THEN ALLOCATE COBOL2 LIBRARIES
//*           IF CLENBL ALLOCATE COBOL/MVS RUNTIME LIBS
// IF &C1PRGRP=CIINBL. THEN
//STEPLIB   DD DSN=&CIICOMP.,DISP=SHR
//          DD DSN=&CIILIB.,DISP=SHR
// ELSE
//* PROCESSOR GROUP IS COBOL/LE
//STEPLIB   DD DSN=&CLECOMP.,DISP=SHR
//          DD DSN=&CLERUN.,DISP=SHR
// ENDIF
//*******************************************************************
//*   COPYLIB CONCATENATIONS                                       **
//*******************************************************************
//SYSLIB   DD DSN=&CSYSLIB1.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&CSYSLIB2.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&CSYSLIB3.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&CSYSLIB4.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//SYSIN    DD DSN=&&ELMOUT,DISP=(OLD,PASS)
//SYSLIN   DD DSN=&&SYSLIN,DISP=(,PASS,DELETE),
//            UNIT=&WRKUNIT.,SPACE=(TRK,(100,100),RLSE),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//            FOOTPRNT=CREATE
//SYSUT1   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT2   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT3   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT4   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT5   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT6   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSUT7   DD UNIT=&WRKUNIT.,SPACE=(CYL,(5,3))
//SYSPRINT DD DSN=&&COBLIST,DISP=(OLD,PASS)
//*******************************************************************
//**  LINK EDIT THE ELEMENT                                        **
//*******************************************************************
//LKED   EXEC PGM=IEWL,COND=(4,LT),MAXRC=4,
// PARM='&PARMLNK'.
//SYSLIN   DD DSN=&&SYSLIN,DISP=(OLD,DELETE)
//SYSLMOD  DD DSN=&LOADLIB(&MEMBER).,
//            MONITOR=&MONITOR.,
//            FOOTPRNT=CREATE,
//            DISP=SHR
//SYSLIB   DD DSN=&LSYSLIB1.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB2.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB3.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//         DD DSN=&LSYSLIB4.,
//            MONITOR=&MONITOR.,
//            DISP=SHR
//* IF PROCESSOR GROUP IS CIINBL THEN ALLOC COB2 CALL LIBRARY COB2LIB
// IF &C1PRGRP=CIINBL. THEN
//        DD DSN=&CIILIB.,
//           DISP=SHR
// ELSE
//* IF PROCESSOR GROUP IS COBOL/LE THEN ALLOC LE CALL LIBRARY SCEELKED
//         DD DSN=&CLELKED.,
//            DISP=SHR
// ENDIF
//SYSUT1   DD UNIT=&WRKUNIT.,SPACE=(CYL,(1,1))
//SYSPRINT DD DSN=&&LNKLIST,DISP=(OLD,PASS)
//*******************************************************************
//*   STORE THE LISTINGS IF: &LISTLIB=LISTING. LIBRARY NAME         *
//*******************************************************************
//STORLIST EXEC PGM=CONLIST,MAXRC=0,PARM=STORE,COND=EVEN,
//      EXECIF=(&LISTLIB.,NE,NO)
//C1LLIBO DD DSN=&LISTLIB.,DISP=SHR,
//      MONITOR=&MONITOR.
//C1BANNER DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//      DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0)
//LIST01  DD DSN=&&COBLIST,DISP=(OLD,DELETE)
//LIST02  DD DSN=&&LNKLIST,DISP=(OLD,DELETE)
//*******************************************************************
//*   PRINT THE LISTINGS IF: &LISTLIB=NO.                           *
//*******************************************************************
//PRNTLIST EXEC PGM=CONLIST,MAXRC=0,PARM=PRINT,COND=EVEN,
//      EXECIF=(&LISTLIB.,EQ,NO)
//C1BANNER DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0,DSORG=PS)
//C1PRINT  DD SYSOUT=&SYSOUT.,
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0,DSORG=PS)
//LIST01   DD DSN=&&COBLIST,DISP=(OLD,DELETE)
//LIST02   DD DSN=&&LNKLIST,DISP=(OLD,DELETE)
//**

The GLNKNBL Generate Processor

Generate Link-edit only No database for Batch and create a Load module.

//*******************************************************************
//**                                                               **
//** LINK-EDIT ONLY PROCESSOR (COMPOSITE LINK) FOR TYPE LINKCARD   **
//**  (USING ASSEMBLER OR COBOL OBJECT MODULES)                    **
//**                                                               **
//*******************************************************************
//*
//GLNKNBL PROC LISTLIB='&PROJECT..&GROUP.&STG1..LISTLIB',
//             LOADLIB='&PROJECT..&GROUP.&STG1..LOADLIB',
//             CII='C??',
//             CIILIB='SYSCIILIB',                          **COB2LIB
//             CLELIB='SYSCLELIB',                         **SCEELKED
//             EXPINC=N,
//             PROJECT='IPRFX.IQUAL',
//             GROUP='SMPL',
//             LSYSLIB1='&PROJECT..&GROUP.&C1ST..LOADLIB',
//             LSYSLIB2='&PROJECT..&GROUP.&C1ST2..LOADLIB',
//             LSYSLIB3='&PROJECT..&GROUP.&STG3..LOADLIB',
//             LSYSLIB4='&PROJECT..&GROUP.&STG4..LOADLIB',
//             STG3='EMER',
//             STG4='PROD',
//             MEMBER=&C1ELEMENT.,
//             MONITOR=COMPONENTS,
//             OBJLIB1='&PROJECT..&GROUP.&C1ST..OBJLIB',
//             OBJLIB2='&PROJECT..&GROUP.&C1ST2..OBJLIB',
//             OBJLIB3='&PROJECT..&GROUP.&STG3..OBJLIB',
//             OBJLIB4='&PROJECT..&GROUP.&STG4..OBJLIB',
//             PARMLNK='LIST,MAP,XREF',
//             WRKUNIT=TDISK
//**********************************************************************
//*  ALLOCATE TEMPORARY LISTING DATASETS                               *
//**********************************************************************
//INIT   EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01  DD DSN=&&LNKLIST,DISP=(,PASS),
//        UNIT=&WRKUNIT.,SPACE=(CYL,(1,2),RLSE),
//        DCB=(RECFM=FBA,LRECL=125,BLKSIZE=0,DSORG=PS)
//*******************************************************************
//**   LINK EDIT THE ELEMENT                                        **
//*******************************************************************
//LKED    EXEC PGM=IEWL,COND=(0,LT),MAXRC=0,
// PARM='&PARMLNK'.
//SYSPRINT  DD DSN=&&LNKLIST,DISP=(OLD,PASS)

//SYSUT1    DD UNIT=TDISK,SPACE=(CYL,(1,1))
//SYSLIB    DD DSN=&LSYSLIB1.,DISP=SHR,
//             MONITOR=COMPONENTS
//          DD DSN=&LSYSLIB2.,DISP=SHR,
//             MONITOR=COMPONENTS
//          DD DSN=&LSYSLIB3.,DISP=SHR,
//             MONITOR=COMPONENTS
//          DD DSN=&LSYSLIB4.,DISP=SHR,
//             MONITOR=COMPONENTS
// IF &CII=CII. THEN
//          DD DSN=&CIILIB.,DISP=SHR
// ELSE
//          DD DSN=&CLELIB.,DISP=SHR
// ENDIF
//OBJLIB    DD DSN=&OBJLIB1.,DISP=SHR,
//             MONITOR=COMPONENTS
//          DD DSN=&OBJLIB2.,DISP=SHR,
//             MONITOR=COMPONENTS
//          DD DSN=&OBJLIB3.,DISP=SHR,
//             MONITOR=COMPONENTS
//          DD DSN=&OBJLIB4.,DISP=SHR,
//             MONITOR=COMPONENTS
//SYSLIN    DD DSN=&C1BASELIB(&C1ELEMENT).,DISP=SHR
//SYSLMOD   DD DSN=&LOADLIB.,DISP=SHR,
//             FOOTPRNT=CREATE,
//             MONITOR=COMPONENTS
//*******************************************************************
//*   STORE THE LISTINGS IF: &LISTING=LISTING. LIBRARY NAME         *
//*******************************************************************
//STORLIST EXEC PGM=CONLIST,MAXRC=0,PARM=STORE,COND=EVEN,
//      EXECIF=(&LISTLIB.,NE,NO)
//C1LLIBO  DD DSN=&LISTLIB.,DISP=SHR,
//           MONITOR=&MONITOR.
//C1BANNER DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//LIST01   DD DSN=&&LNKLIST,DISP=(OLD,DELETE)
//*******************************************************************
//*   PRINT THE LISTINGS IF: &LISTING=NO.                           *
//*******************************************************************
//PRNTLIST EXEC PGM=CONLIST,MAXRC=0,PARM=PRINT,COND=EVEN,
//      EXECIF=(&LISTLIB.,EQ,NO)
//C1BANNER DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171,DSORG=PS)
//C1PRINT  DD SYSOUT=*,
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0,DSORG=PS)
//LIST01   DD DSN=&&LNKLIST,DISP=(OLD,DELETE)
//*

The LOADONLY Generate Processor

The LOADONLY processor can be used as a generate or a move processor. The processing varies depending on the type of processor requested.

  • Generate-Copies the requested element, file, or member from the user's file into and CA Endevor® SCM managed library.
  • Move-Copies the member from one stage's output library to the next stage's output library.

//**********************************************************************
//*                                                                    *
//* COPY SOURCELES LOAD MODULES FROM USER DATA SETS TO STAGE1          *
//*                                                                    *
//**********************************************************************
//*
//LOADONLY PROC LISTLIB='&PROJECT..&GROUP.SMPL&C1ST..LISTLIB',
//              LOADLIB1='&PROJECT..&GROUP.SMPL&C1ST..LOADLIB',
//              LOADLIB2='&PROJECT..&GROUP.SMPL&STG2..LOADLIB',
//              PROJECT='IPRFX',
//              GROUP='IQUAL',
//              STG2='&C1SSTAGE.', FROM STAGE FOR TRANSFER/MOVE
//              MONITOR=COMPONENTS,
//              SYSOUT=*,
//              WRKUNIT=TDISK
//**********************************************************************
//*  ALLOCATE TEMPORARY LISTING DATASETS                               *
//**********************************************************************
//INIT   EXEC PGM=BC1PDSIN
//C1INIT01 DD DSN=&&COPYLIST,
//            DISP=(NEW,PASS,DELETE),
//            UNIT=&WRKUNIT.,
//            SPACE=(CYL,(1,2),RLSE),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0,DSORG=PS)
//**********************************************************************
//*                                                                    *
//* ONLY PERFORM COPY FROM USER LOADLIB WHEN ADD OR UPDATE IS REQUESTED*
//*                                                                    *
//**********************************************************************

//IF1 IF ((&C1ACTION=ADD). OR (&C1ACTION=UPDATE)). THEN
//ADD    EXEC PGM=BSTCOPY,MAXRC=04
//SYSPRINT DD DSN=&&COPYLIST,DISP=(OLD,PASS)
//SYSUT3   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//SYSUT4   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//INDD     DD DSN=&C1USRDSN.,DISP=SHR
//OUTDD    DD DSN=&LOADLIB1.,DISP=SHR,FOOTPRNT=CREATE
//SYSIN    DD *
 COPY  I=INDD,O=OUTDD
 SELECT MEMBER=((&C1USRMBR.,&C1ELEMENT.,R))
//END1 ENDIF
//**********************************************************************
//*                                                                    *
//* IF TRANSFER,COPY FROM SOURCE LOADLIB TO CURRENT LOADLIB            *
//*                                                                    *
//**********************************************************************
//IF2 IF (&C1ACTION=TRANSFER). OR (&C1ACTION=MOVE). THEN
//TRANSFER EXEC PGM=BSTCOPY,MAXRC=04
//SYSPRINT DD DSN=&&COPYLIST,DISP=(OLD,PASS)
//SYSUT3   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//SYSUT4   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//INDD  DD DSN=&LOADLIB1.,DISP=SHR,FOOTPRNT=VERIFY
//OUTDD DD DSN=&LOADLIB2.,DISP=SHR,FOOTPRNT=CREATE
//SYSIN    DD *
 COPY  I=INDD,O=OUTDD
 SELECT MEMBER=((&C1ELEMENT.,,R))
//END2 ENDIF
//*******************************************************************
//*      STORE THE LISTINGS IF: &LISTLIB=LISTING. LIBRARY           *
//*******************************************************************
//STORLIST EXEC PGM=CONLIST,PARM='STORE',COND=EVEN,
//      EXECIF=(&LISTLIB.,NE,NO)
//C1LLIBO    DD DSN=&LISTLIB.,DISP=SHR
//C1BANNER   DD DSN=&&BANNER,DISP=(,PASS,DELETE),
//              UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//              DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0,DSORG=PS)
//LIST01     DD DSN=&&COPYLIST,DISP=(OLD,DELETE)
//*******************************************************************
//*   PRINT THE LISTINGS IF: &LISTLIB=NO.                           *
//*******************************************************************
//PRNTLIST EXEC PGM=CONLIST,MAXRC=0,PARM=PRINT,COND=EVEN,
//      EXECIF=(&LISTLIB.,EQ,NO)
//C1BANNER  DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//             DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0,DSORG=PS)
//C1PRINT   DD SYSOUT=&SYSOUT.,
//             DCB=(RECFM=FBA,LRECL=133,BLKSIZE=0,DSORG=PS)
//LIST01    DD DSN=&&COPYLIST,DISP=(OLD,DELETE)
//*
//**

Delete Processors

Delete processors clean up (delete) what generate processors create. Since most generate processors create a load module and possibly a listing, delete processors can be generic. A single delete processor can be used to clean up the work created by several generate processors.

This section contains two sample delete processors. Samples are provided in the iprfx.iqual.CSIQSAMP. These processors are:

  • DLODDNL
    Delete Load modules, for DB2, No (All) operating environments, No (All) output types.
  • DLODNNL
    Delete Load modules, No (All) databases, No (All) operating environments, No (All) output types. These processors can be used as Stage 1 or Stage 2 delete processors. To change the PROC statement symbol values, override the data set names during processor group definition.

If you do not want to store listings, change the &LISTLIB symbol to NO.

The DLODDNL Delete Processor

Delete LOad modules, for DB2, No (All) operating environments, No (All) output types.

//**********************************************************************
//*                                                                    *
//* DELETE COBOL LOAD AND LISTING MODULES & DBRM                       *
//*                                                                    *
//**********************************************************************
//*
//DLODDNL PROC DBRMLIB='&PROJECT..&GROUP.&STG1..DBRMLIB',
//             LISTLIB='&PROJECT..&GROUP.&STG1..LISTLIB',
//             LOADLIB='&PROJECT..&GROUP.&STG1..LOADLIB',
//             PROJECT='IPRFX.IQUAL',
//             GROUP='SMPL',
//             STG1='&C1STAGE.'   CURRENT STAGE
//*
//DELLOD  EXEC PGM=CONDELE,MAXRC=12
//C1LIB     DD DSN=&LOADLIB.,DISP=SHR
//*
//DELDBRM EXEC PGM=CONDELE,MAXRC=12
//C1LIB     DD DSN=&DBRMLIB.,DISP=SHR
//*
//DELLIST EXEC PGM=CONLIST,PARM='DELETE',MAXRC=12,COND=EVEN,
//       EXECIF=(&LISTLIB.,NE,NO)
//C1LLIBI   DD DSN=&LISTLIB.,DISP=SHR

The DLODNNL Delete Processor

Delete LOad modules, No (All) databases, No (All) operating environments and Listings

//**********************************************************************
//*                                                                    *
//* DELETE LOAD/OBJECT AND LISTING MODULES                             *
//*                                                                    *
//**********************************************************************
//*
//DLODNNL PROC LISTLIB='&PROJECT..&GROUP.&STG1..LISTLIB',
//             LOADLIB='&PROJECT..&GROUP.&STG1..LOADLIB',
//             PROJECT='IPRFX.IQUAL',
//             GROUP='SMPL',
//             STG1='&C1STAGE.'   CURRENT STAGE
//*
//DELMOD  EXEC PGM=CONDELE,MAXRC=12
//C1LIB     DD DSN=&LOADLIB.,DISP=SHR
//**********************************************************************
//* DELETE THE LISTING IF: &LISTLIB=LISTING. LIBRARY NAME              *
//**********************************************************************
//CONLIST EXEC PGM=CONLIST,PARM='DELETE',MAXRC=12,COND=EVEN,
//      EXECIF=(&LISTLIB.,NE,NO)
//C1LLIBI   DD DSN=&LISTLIB.,DISP=SHR

Move Processors

Move processors are used during a MOVE action to create the appropriate outputs at the target stage. This can be accomplished by:

  • Copying the outputs (load modules and listings) from the source to the target stage. This section includes two sample move processors that accomplish this.
  • Recreating the load module at the target stage. This occurs when a generate processor is used as a move processor.

    Note: For more information, see Generate Processors.
  • To use a generate processor as a move processor, make sure to specify G in the PROCESSOR TO USE FOR THE MOVE ACTION field on the definition panel for the APPROPRIATE PROCESSOR GROUP.
Note: Do not re-create load modules at the target stage by coding a compile and link step in a move processor, this causes the load module footprint to become out of sync with Master Control File information for the element.

This section contains two sample move processors that are provided in iprfx.iqual.CSIQSAMP. These processors copy load modules, and their associated component lists and listings, from a source to a target stage. By using symbolic overrides for LOADLIB1 and LOADLIB2, these processors can be used for almost every type in your inventory structure. If the &LISTLIB2 symbol is overridden during processor group definition to read NO, CA Endevor® SCM copies the load modules and component lists, but prints the listings, instead of copying them to the target stage.

If ACM is not installed, or if you do not wish to copy component lists to the target stage, you can override the MONITOR symbol with any value except components.

The MLODDNL Move Processor

Move Load Modules, for DB2, No (All) operating environments, to Load modules.

//**********************************************************************
//*                                                                    *
//* COPY LOAD MODULES FROM STAGE 1 TO STAGE 2 AND THEIR ASSOCIATED     *
//* COMPONENT LIST AND LISTINGS. ALSO COPY DBRM MEMBERS AND BIND       *
//* APPLICATION PLAN.                                                  *
//*                                                                    *
//**********************************************************************
//*
//MLODDNL PROC DBRMLIB1='&PROJECT..&GROUP.&STG1..DBRMLIB',
//             DBRMLIB2='&PROJECT..&GROUP.&STG2..DBRMLIB',
//             DB2SYS='DB2SYSTEM',
//             DB2LOADL='SYSDB2LIB',

//             EDB2AUTH='IPRFX.IQUAL.EDB2.AUTHLIB',
//             EDB2CONL='IPRFX.IQUAL.EDB2.LOADLIB',
//             LISTLIB='&PROJECT..&GROUP.&STG1..LISTLIB',
//             LISTLIB1='&PROJECT..&GROUP.&STG1..LISTLIB',
//             LISTLIB2='&PROJECT..&GROUP.&STG2..LISTLIB',
//             LOADLIB1='&PROJECT..&GROUP.&STG1..LOADLIB',
//             LOADLIB2='&PROJECT..&GROUP.&STG2..LOADLIB',
//             PARMLIB='&PROJECT..&GROUP.&STG2..PARMLIB',
//             PROJECT='IPRFX.IQUAL',
//             GROUP='SMPL',
//             STG1='&C1SSTAGE.',   CURRENT STAGE
//             STG2='&C1STAGE.',  TO STAGE
//             PLAN=&C1ELEMENT.,
//             MONITOR=COMPONENTS,
//             SYSOUT=A,
//             WRKUNIT=PDISK
//**********************************************************************
//*  ALLOCATE TEMPORARY LISTING DATASET                                *
//**********************************************************************
//INIT   EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01 DD DISP=(,PASS),DSN=&&COPY1LST,
//            UNIT=&WRKUNIT.,SPACE=(TRK,(5,2),RLSE),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1INIT02 DD DISP=(,PASS),DSN=&&COPY2LST,

//            UNIT=&WRKUNIT.,SPACE=(TRK,(5,2),RLSE),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1INIT03 DD DISP=(,PASS),DSN=&&PARMLIST,
//            UNIT=&WRKUNIT.,SPACE=(TRK,(5,2),RLSE),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//**********************************************************************
//* COPY THE LOAD MODULE                                               *
//**********************************************************************
//BSTCOPY EXEC PGM=BSTCOPY,MAXRC=04,COND=(0,LT)
//SYSPRINT  DD DSN=&&COPY1LST,DISP=OLD
//SYSUT3    DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//SYSUT4    DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//INDD      DD DSN=&LOADLIB1.,DISP=SHR
//OUTDD     DD DSN=&LOADLIB2.,DISP=SHR,MONITOR=&MONITOR.
//SYSIN     DD *
 COPY O=OUTDD,I=INDD
 SELECT MEMBER=((&C1ELEMENT.,,R))
//**********************************************************************
//* COPY THE DBRM MODULE                                               *
//**********************************************************************
//BSTCOPY EXEC PGM=BSTCOPY,MAXRC=04,COND=(4,LT)
//SYSPRINT  DD DSN=&&COPY2LST,DISP=OLD
//SYSUT3    DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//SYSUT4    DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//INDD      DD DSN=&DBRMLIB1.,DISP=SHR
//OUTDD     DD DSN=&DBRMLIB2.,DISP=SHR,MONITOR=&MONITOR.
//SYSIN     DD *
 COPY O=OUTDD,I=INDD
 SELECT MEMBER=((&C1ELEMENT.,,R))
//**********************************************************************
//* MOVE THE COMPONENT LIST                                            *
//**********************************************************************
//*
//*
//**********************************************************************
//* BIND APPLICATION PLAN IF EXECUTING IN FOREGROUND
//* NOTE: ATTEMPTING TO RUN THIS STEP IN BG WILL RESULT IN RC=5
//*********************************************************************
//BINDFG EXEC PGM=BC1PTMP0,MAXRC=5,COND=(4,LT),
// PARM='&PARMLIB(&C1ELEMENT)'.
//STEPLIB  DD DSN=&DB2LOADL.,DISP=SHR
//DBRMLIB  DD DSN=&DBRMLIB2.,DISP=SHR
//SYSTSPRT DD DSN=&&PARMLIST,DISP=(OLD,PASS)
//SYSUDUMP DD SYSOUT=&SYSOUT.
//*********************************************************************
//* BIND APPLICATION PLAN IF EXECUTING IN BACKGROUND                  *
//*********************************************************************
//BINDBG EXEC PGM=IKJEFT01,COND=((5,NE,BINDFG),(5,LT)),MAXRC=7
//STEPLIB  DD DSN=&DB2LOADL.,DISP=SHR
//DBRMLIB  DD DSN=&DBRMLIB2.,DISP=SHR
//SYSTSPRT DD DSN=&&PARMLIST,DISP=(OLD,PASS)
//SYSTSIN  DD DSN=&PARMLIB(&C1ELEMENT).,DISP=(OLD,PASS)
//**********************************************************************
//* FOOTPRINT DB2 PLAN                                                 *
//**********************************************************************
//FOOTDB2 EXEC PGM=BC1PCAF,COND=(8,LE),MAXRC=0,
// PARM='&DB2SYS.,BC1PSQL1,BC1PDBFP'
//STEPLIB   DD DSN=&EDB2AUTH.,DISP=SHR
//          DD DSN=&EDB2CONL.,DISP=SHR
//DBRMLIB   DD DSN=&DBRMLIB2.,DISP=SHR
//BSTIPT    DD DSN=&PARMLIB(&C1ELEMENT).,DISP=(OLD,PASS)
//*******************************************************************
//*   COPY THE LISTINGS IF: &LISTING=LISTING. LIBRARY NAME          *
//*******************************************************************
//CONLIST EXEC PGM=CONLIST,MAXRC=0,PARM=COPY,COND=EVEN,
//     EXECIF=(&LISTLIB.,NE,NO)
//C1LLIBI  DD DSN=&LISTLIB1.,DISP=SHR
//C1LLIBO  DD DSN=&LISTLIB2.,DISP=SHR,MONITOR=&MONITOR.
//C1BANNER DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//             DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//LIST01   DD DSN=&&COPY1LST,DISP=(OLD,DELETE)
//LIST02   DD DSN=&&COPY2LST,DISP=(OLD,DELETE)
//LIST03   DD DSN=&&PARMLIST,DISP=(OLD,DELETE)
//*******************************************************************
//*   PRINT THE LISTINGS IF: &LISTING=NO.                           *
//*******************************************************************
//PRNTLIST EXEC PGM=CONLIST,MAXRC=0,PARM=PRINT,COND=EVEN,
//     EXECIF=(&LISTLIB.,EQ,NO)
//C1BANNER DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1PRINT  DD SYSOUT=&SYSOUT.,
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=1330,DSORG=PS)
//LIST01  DD DSN=&&COPY1LST,DISP=(OLD,DELETE)
//LIST02  DD DSN=&&COPY2LST,DISP=(OLD,DELETE)
//LIST03  DD DSN=&&PARMLIST,DISP=(OLD,DELETE)
//MOVECL  EXEC PGM=BC1PMVCL,MAXRC=04,COND=(4,LT)
//*
_

The MLODNNL Move Processor

In the following sample move processor (MLODNNL), we specify that when the load module is moved from Stage 1 to Stage 2, its associated Component List information is also moved and updated.

//**********************************************************************
//*                                                                    *
//* COPY LOAD MODULES FROM STAGE 1 TO STAGE 2 AND THEIR ASSOCIATED     *
//* COMPONENT LIST AND LISTINGS.                                       *
//*                                                                    *
//**********************************************************************
//*
//MLODNNL PROC LISTLIB='YES',
//             LISTLIB1='&PROJECT..&GROUP.&STG1..LISTLIB',
//             LISTLIB2='&PROJECT..&GROUP.&STG2..LISTLIB',
//             LOADLIB1='&PROJECT..&GROUP.&STG1..LOADLIB',
//             LOADLIB2='&PROJECT..&GROUP.&STG2..LOADLIB',
//             PROJECT='IPRFX.IQUAL',
//             GROUP='SMPL',
//             STG1='&C1SSTAGE.',   CURRENT STAGE
//             STG2='&C1STAGE.',   TO STAGE
//             MONITOR=COMPONENTS,
//             SYSOUT=*,
//             WRKUNIT=TDISK
//**********************************************************************
//*  ALLOCATE TEMPORARY LISTING DATASETS                               *
//**********************************************************************
//INIT   EXEC PGM=BC1PDSIN
//C1INIT01 DD DSN=&&COPYLIST,DISP=(,PASS,DELETE),
//           UNIT=&WRKUNIT.,SPACE=(CYL,(1,2),RLSE),
//           DCB=(RECFM=V,LRECL=121,BLKSIZE=125,DSORG=PS)
//**********************************************************************
//* COPY THE LOAD MODULE                                               *
//**********************************************************************
//BSTCOPY EXEC PGM=BSTCOPY,MAXRC=04
//SYSPRINT DD DSN=&&COPYLIST,DISP=(OLD,PASS)
//SYSUT3   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))
//SYSUT4   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1))

//INDD     DD DSN=&LOADLIB1.,DISP=SHR
//OUTDD    DD DSN=&LOADLIB2.,DISP=SHR,MONITOR=&MONITOR.
//SYSIN    DD *
 COPY O=OUTDD,I=INDD
 SELECT MEMBER=((&C1ELEMENT.,,R))

//*******************************************************************
//*   COPY & STORE THE LISTINGS IF: &LISTING=LISTING LIBRARY        *
//*******************************************************************
//COPYLIST EXEC PGM=CONLIST,MAXRC=0,PARM=COPY,COND=EVEN,
//     EXECIF=(&LISTLIB.,EQ,YES)
//C1LLIBI    DD DSN=&LISTLIB1.,DISP=SHR
//C1LLIBO    DD DSN=&LISTLIB2.,DISP=SHR,MONITOR=&MONITOR.
//C1BANNER   DD DSN=&&BANNER,DISP=(,PASS,DELETE),
//              UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//              DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171,DSORG=PS)
//LIST01     DD DSN=&&COPYLIST,DISP=(OLD,DELETE)
//*******************************************************************
//*   PRINT THE LISTINGS IF: &LISTING=NO.                           *
//*******************************************************************
//PRNTLIST EXEC PGM=CONLIST,MAXRC=0,PARM=PRINT,COND=EVEN,
//     EXECIF=(&LISTLIB.,EQ,NO)
//C1BANNER   DD UNIT=&WRKUNIT.,SPACE=(TRK,(1,1)),
//              DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171,DSORG=PS)
//C1PRINT    DD SYSOUT=&SYSOUT.,
//              DCB=(RECFM=FBA,LRECL=133,BLKSIZE=1330,DSORG=PS)
//LIST01     DD DSN=&&COPYLIST,DISP=(OLD,DELETE)
//**********************************************************************
//* UPDATE THE COMPONENT LIST WITH THE NEW OUTPUT COMPONENTS           *
//* AND MOVE THE COMPONENT LIST TO THE NEXT STAGE
//**********************************************************************
//MOVECL  EXEC PGM=BC1PMVCL,COND=(0,NE)
//*

Other Processors

These processors are provided as an example of how to manage other types of source. Use these processors as a guide. The following samples are provided in the iprfx.iqual.CSIQSAMP.

  • ALIASMOV
    Moves alias load modules associated with the current element
  • BINDPLAN
    Stand-alone Generate processor for bind cards
  • CICSMAP
    Generate processor for CICS maps and copybooks
  • EASYTRIE
    Generate processor for CA Easytrieve IQ Online Query
  • GCPYIMP
    Ascertains a copybook's impact by executing a list action (using ACMQ) and providing a list of elements using the copybook
  • IDEAL01
    Sample processor for CA Ideal for CA Datacom
  • IMSDBD
    Sample IMS processor
  • JCLCHK
    Sample processor for CA JCLCheck™ Workload Automation (formerly known as Unicenter CA JCLCheck)

    Note: If the processor that invokes CA JCLCheck Workload Automation is named JCLCHECK rather than JCLCHK, the processor step that invokes CA JCLCheck Workload Automation fails with an S406-04 message code.

  • JOBSCAN
    Sample JOBSCAN Processor
  • SDFIIMAP
    Generate Processor for SDF II maps

CSP Processors

Examples of Generate processors that use the LEXTRCTR and BC1PCCSP utilities follow:

  • GELCL
  • GELPCLB
  • GELTCL
  • GELPTCLB
  • GCSP41LN (for CSP Extension Facility elements)

The GELCL CSP Processor

//**********************************************************************

//** GENERATE, COMPILE, LINK-EDIT CSP APPLS, TABLES AND MAP GROUPS    **
//**********************************************************************
//*
//GELCL  PROC CGHLQ='USER',
//     COBCOMP='SYS1.COB2COMP',
//     COBLIB='SYS1.COB2LIB',
//     CONLIB='iprfx.iqual.CSIQLOAD',
//     CRS='CRS210',
//     CSP='CSP410',
//     CSPVSAM='CSP410',
//     CSPCUST='CSP410',
//     CSPUSER='CSPUSER',
//     DATA='31',
//     ENV='MVSBATCH',
//     LISTLIB=NULLFILE,
//     LOADLIB=NULLFILE,
//     MAP='NONE',
//     NLS='ENU',
//     RESLIB='IMSVS.RESLIB',  (UNCOMMENT BELOW IF NECESSARY)
//     SOUT='*',
//     TABLE='NONE',
//     USR1MSL=NULLFILE,
//     USR2MSL=NULLFILE,
//     WSPC=500
//*
//* CSP PARMS: (PARM VALUES SHOULD BE SPECIFIED VIA PROC GROUPS)
//*
//*   CGHLQ   = COBOL GENERATION USER DATA SET HIGH-LEVEL QUALIFIER
//*   COBCOMP = COBOL COMPILER LIBRARY
//*   COBLIB  = COBOL RUN TIME LIBRARY
//*   CRS     = CSP/370RS HIGH LEVEL QUALIFIER
//*   CSP     = CSP/370AD HIGH LEVEL QUALIFIER
//*   CSPVSAM = HIGH LEVEL QUALIFIER FOR VSAM DATA SETS
//*   CSPCUST = HIGH LEVEL QUALIFIER FOR CUSTOMIZED LIBRARIES
//*   CSPUSER = CSP/370AD USER WORK DATA SET HIGH LEVEL QUALIFIER
//*   DATA    = COMPILE OPTION FOR PLACING WORKING STORAGE
//*             ABOVE 16M LINE

//*   ENV     = COBOL GENERATION USER DATA SET ENVIRONMENT QUALIFIER
//*             (SHOULD BE EQUAL TO GENERATION TARGET ENVIRONMENT)
//*   MAP     = NONE/ALL - FOR APPLICATION, GEN MAPS WITH APPL
//*   NLS     = NLS CODE (NATIONAL LANGUAGE DATA SET QUALIFIER)
//*   RESLIB  = IMS RESLIB LIBRARY
//*   SOUT    = SYSOUT ASSIGNMENT
//*   TABLE   = NONE/ALL - FOR APPLICATION, GEN TABLES WITH APPL
//*   WSPC    = PRIMARY AND SECONDARY SPACE ALLOCATION
//* Endevor PARMS: (PARM VALUES SHOULD BE SPECIFIED VIA PROC GROUPS)
//*   CONLIB  = Endevor RUN TIME LIBRARY
//*   LISTLIB = Endevor LISTINGS LIBRARY
//*   LOADLIB = Endevor/CSP OUTPUT LOAD LIBRARY
//*   USR1MSL = READ/WRITE MSL
//*   USR2MSL = READ-ONLY MSL
//*
//*********************************************************************
//*  INITIALIZE GENERATE/COMPILE/LINK-EDIT LISTING DATA SETS          *
//*********************************************************************
//*
//INITLIST EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01 DD DSN=&&EZECOUT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1INIT02 DD DSN=&&EZEPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=VBA,LRECL=654,BLKSIZE=6000)
//C1INIT03 DD DSN=&&COBPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(30,15)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT04 DD DSN=&&CB2PRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT05 DD DSN=&&LNKPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=3630)
//*
//COBGEN EXEC PGM=BC1PDCGB,COND=(0,NE),MAXRC=4
//*-----------------------
//*  LOADLIB AND MESSAGE FILES
//*-----------------------
//STEPLIB DD DISP=SHR,DSN=&CRS..SELALMD
//        DD DISP=SHR,DSN=&CSP..SEZELMD
//*       DD DISP=SHR,DSN=EDC.SEDCLINK
//*       DD DISP=SHR,DSN=PLI.SIBMLINK
//        DD DISP=SHR,DSN=&COBLIB.
//        DD DISP=SHR,DSN=&CONLIB.
//*
//EZECOMM DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZECOMM
//*
//*----------------------------------------------------------
//*  THE FOLLOWING MESSAGE FILES SHOULD BE PRE-ALLOCATED
//*----------------------------------------------------------
//*EZEDMSG DD DISP=SHR,DSN=&CSPVSAM..FZEMSG
//*EZEEMSG DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZEMSG
//*EZETES  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZETUTOR
//*EZEMAP  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZEMAPDS
//*-----------------------
//*  WORK FILES
//*-----------------------
//EZEWORK  DD DISP=OLD,DSN=&CSPUSER..EZEWORK
//EZEWRK1  DD UNIT=tdisk,SPACE=(CYL,(2,1)),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//*-----------------------
//*  COMMAND AND LOG FILES
//*-----------------------
//EZECOUT  DD DSN=&&EZECOUT,DISP=(OLD,PASS)
//*-----------------------
//*  PRINT FILES
//*-----------------------
//EZEPRINT DD DSN=&&EZEPRINT,DISP=(OLD,PASS)
//EZECPRT  DD SYSOUT=&SOUT.
//SYSPRINT DD SYSOUT=&SOUT.
//*-----------------------
//*  COBOL GENERATION CONTROL FILES
//*-----------------------
//EZEOPT   DD DISP=SHR,DSN=&CSPCUST..PDS.EZEOPT
//*EZEOPT  DD DISP=SHR,DSN=&CSPVSAM..VSAM.EZEOPT
//EZEJTMP  DD DISP=SHR,DSN=&CSPCUST..EZESAMP
//EZEWORD  DD DISP=SHR,DSN=&CSPCUST..EZESAMP(EZEWORDS)
//EZESNAP  DD SYSOUT=&SOUT.
//*-----------------------
//*  INTERNAL READER FILE FOR PREPARATION JCL SUBMISSION
//*-----------------------
//EZEJCL  DD DSN=&&EZEJCL,DISP=(,PASS),
//           UNIT=tdisk,SPACE=(TRK,(1,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*-----------------------
//*-----------------------
//*  ENVIRONMENT DEPENDENT CONTROL AND OUTPUT FILES
//*
//*  THE FOLLOWING FILES MAY OR MAY NOT BE REQUIRED, DEPENDING
//*  ON FUNCTIONS USED AT SPECIFIC INSTALLATIONS. THE DD CARDS
//*  ARE SHOWN AS COMMENTS IN THE PROCEDURE. THE GENERATOR USES
//*  DYNAMIC ALLOCATION TO ALLOCATE EXISTING DATA SETS WITH THE
//*  NAMES AS SHOWN IN THE DD CARDS, WHERE &CGHLQ. IS THE DATA SET
//*  QUALIFIER FROM THE USERID COBOL GENERATION OPTION AND &ENV.
//*  IS THE TARGET EXECUTION ENVIRONMENT.
//*
//*  TO USE DATA SETS WITH OTHER NAMES, MODIFY THE PROCEDURE OR THE
//*  JCL TO ALLOCATE THE DATA SETS WITH THE APPROPRIATE DD NAMES
//*  AS SHOWN BELOW. THE GENERATOR CHECKS TO SEE IF A DATA SET
//*  HAS ALREADY BEEN ALLOCATED TO THE DD NAME BEFORE ATTEMPTING TO
//*  DYNAMICALLY ALLOCATE A DATA SET WITH THE STANDARD NAME.
//*
//*-----------------------
//*  COBOL SOURCE FILE
//*-----------------------
//EZESRC  DD DISP=(NEW,PASS),DSN=&&EZESRC,
//           UNIT=tdisk,SPACE=(CYL,(5,5,10),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*
//EZEDUMMY DD DUMMY,DISP=SHR,DSN=&CGHLQ..&ENV..EZEDUMMY
//*-----------------------
//*-----------------------
//*  USER DEFINED LINK EDIT CONTROL STATEMENTS
//*-----------------------
//EZELINK DD DUMMY
//*-----------------------
//*  USER DEFINED BIND CONTROL STATEMENTS
//*-----------------------
//EZEBIND DD DUMMY
//*--------------------------
//*  IMS COBOL COPY LIBRARY
//*--------------------------
//*EZECOPY DD DISP=SHR,DSM=&CGHLQ..&ENV..EZECOPY
//*-----------------------
//*  OBJECT LIBRARIES FOR GENERATED MAP GROUPS
//*-----------------------
//EZEFOBJ DD DISP=(NEW,PASS),DSN=&&EZEFOBJ,
//           UNIT=tdisk,SPACE=(TRK,(5,5,1),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*EZEPOBJ DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEPOBJ
//*-----------------------
//*  TSO CLIST LIBRARY
//*-----------------------
//EZECLST DD DISP=SHR,DSN=NULLFILE
//*-----------------------
//*  PARTS LIST LIBRARY
//*-----------------------
//EZEPCTL DD DISP=SHR,DSN=NULLFILE
//*-----------------------
//*  MFS SOURCE LIBRARY
//*-----------------------
//*EZEMFS  DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEMFS
//*-----------------------
//*  JCL LIBRARIES
//*-----------------------
//*EZEJCLX DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEJCLX
//*EZEJCLP DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEJCLP
//USR1MSL  DD DISP=SHR,DSN=&USR1MSL.
//USR2MSL  DD DISP=SHR,DSN=&USR2MSL.
//NDVRIPT  DD *
 M=USR1MSL ROMSL=USR2MSL CMDIN=EZECIN CMDOUT=EZECOUT
//EZECIN  DD *
 GENERATE MEMBER(&C1ELEMENT). SYSTEM(&ENV).
      TABLES(&TABLE). MAPS(&MAP). BATCH(NO) ;
//EZEPARM  DD UNIT=tdisk,SPACE=(TRK,1),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=80)
//*
//**********************************************************************
//*      EXTRACT THE LINKAGE-EDITOR CONTROL STATEMENTS FROM
//*      THE SEQUENTIAL FILE CREATED BY THE GENERATE STEP
//**********************************************************************
//*
//EXTRLNK EXEC PGM=LEXTRCTR,COND=(5,LT),MAXRC=0
//STEPLIB DD DISP=SHR,DSN=&CONLIB.
//INPUT   DD DSN=&&EZEJCL,DISP=(OLD,PASS)
//OUTPUT  DD DSN=&&CONTROL,DISP=(,PASS),
//           UNIT=tdisk,SPACE=(TRK,(1,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*
//**********************************************************************
//** ELACL - COBOL COMPILE AND LINK-EDIT
//**********************************************************************
//*
//*
//**********************************************************************
//*      COMPILE THE COBOL PROGRAM
//**********************************************************************
//*
//C        EXEC PGM=IGYCRCTL,COND=(4,LT),MAXRC=4,
//         PARM=(NOSEQ,QUOTE,OFFSET,LIB,RES,RENT,NODYNAM,DBCS,OPT,
//         'TRUNC(BIN)','NUMPROC(NOPFD)',NOCMPR2,'DATA(&DATA)').
//STEPLIB  DD DISP=SHR,DSN=&COBCOMP.
//SYSIN    DD DISP=(OLD,PASS),DSN=&&EZESRC(&C1ELEMENT)
//SYSLIB   DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSLIN   DD DISP=(NEW,PASS),DSN=&&LOADSET(&C1ELEMENT),
//            UNIT=tdisk,SPACE=(800,(&WSPC.,&WSPC.,10)),
//            FOOTPRNT=CREATE,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//SYSPRINT DD DSN=&&COBPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT3   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT4   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT5   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT6   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT7   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//*
//**********************************************************************
//*      COMPILE ANY ADDITIONAL MAPS AND TABLES                        *
//**********************************************************************
//*
//C2       EXEC PGM=BC1PCCSP,COND=(4,LT),MAXRC=4,
//         PARM=(NOSEQ,QUOTE,OFFSET,LIB,RES,RENT,NODYNAM,DBCS,OPT,
//         'TRUNC(BIN)','NUMPROC(NOPFD)',NOCMPR2,'DATA(&DATA)').
//COBCOMP  DD DISP=SHR,DSN=&COBCOMP.
//SYSLIB   DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSIN    DD UNIT=tdisk,SPACE=(6400,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=6400)
//SYSLIN   DD UNIT=tdisk,SPACE=(3120,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//SYSPRINT DD UNIT=tdisk,SPACE=(3630,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//GENCNTL  DD DISP=(OLD,PASS),DSN=&&CONTROL
//EZESRC   DD DISP=(OLD,PASS),DSN=&&EZESRC
//OBJLIB   DD DISP=(OLD,PASS),DSN=&&LOADSET
//PRINTLIB DD DISP=(OLD,PASS),DSN=&&CB2PRINT
//GENINFO  DD *
ELEMENT=&C1ELEMENT.       KEEP THESE CARDS IN ORDER,
 COMPILER=IGYCRCTL       LEFT JUST WITH NO BLANKS
//SYSUT1  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT3  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT4  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT5  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT6  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT7  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//*
//**********************************************************************
//*      LINK-EDIT THE COBOL PROGRAM AND ANY MAPS/TABLES               *
//*      IF THE RETURN CODE ON ALL PREVIOUS STEPS IS 4 OR LESS         *
//**********************************************************************
//*
//L        EXEC PGM=IEWL,COND=(5,LT),MAXRC=0,
//         PARM='RENT,REUS,LIST,XREF,MAP,AMODE(31),RMODE(ANY)'
//SYSLIB   DD DISP=SHR,DSN=&COBLIB.,MONITOR=COMPONENTS
//*        DD DISP=SHR,DSN=&RESLIB.,MONITOR=COMPONENTS
//OBJLIB   DD DISP=(OLD,DELETE),DSN=&&LOADSET,MONITOR=COMPONENTS
//         DD DISP=(OLD,DELETE),DSN=&&EZEFOBJ,MONITOR=COMPONENTS
//SELALMD  DD DISP=SHR,DSN=&CRS..SELALMD,MONITOR=COMPONENTS
//SYSLMOD  DD DISP=SHR,DSN=&LOADLIB.,
//            FOOTPRNT=CREATE,MONITOR=COMPONENTS
//SYSPRINT DD DSN=&&LNKPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(1024,(&WSPC.,&WSPC)).,UNIT=tdisk
//SYSLIN   DD DSN=&&CONTROL,DISP=(OLD,DELETE)
//*
//*********************************************************************
//*  STORE OUTPUT LISTINGS IN LIST LIBRARY                            *
//*********************************************************************
//CONLIST  EXEC PGM=CONLIST,PARM=STORE,MAXRC=0,COND=EVEN
//C1LLIBO  DD DSN=&LISTLIB.,DISP=SHR,MONITOR=COMPONENTS
//C1BANNER DD UNIT=tdisk,SPACE=(TRK,1),
//            DCB=(RECFM=FBA,LRECL=121)
//LIST01   DD DSN=&&EZECOUT,DISP=(OLD,DELETE)
//LIST02   DD DSN=&&EZEPRINT,DISP=(OLD,DELETE)
//LIST03   DD DSN=&&EZEJCL,DISP=(OLD,DELETE)
//LIST04   DD DSN=&&COBPRINT,DISP=(OLD,DELETE)
//LIST05   DD DSN=&&CB2PRINT,DISP=(OLD,DELETE)
//LIST06   DD DSN=&&LNKPRINT,DISP=(OLD,DELETE)
//*

The GELPCLB CSP Processor

//**********************************************************************

//** GENERATE, DB2 PRE-PROCESS, COMPILE, LINK-EDIT AND BIND           **
//**  CSP APPLICATIONS                                                **
//**********************************************************************
//*
//GELPCLB PROC CGHLQ='USER',
//         BINDDSN='&C1USERID..NDVRCSP.BINDDSN',
//         COBCOMP='SYS1.COB2COMP',
//         COBLIB='SYS1.COB2LIB',
//         CONLIB='iprfx.iqual.CSIQLOAD',
//         CRS='CRS210',
//         CSP='CSP410',
//         CSPVSAM='CSP410',
//         CSPCUST='CSP410',
//         CSPUSER='CSPUSER',
//         DATA='31',
//         DBRMLIB='NULLFILE',
//         DSNEXIT='DSN220.DSNEXIT',
//         DSNLOAD='DSN220.DSNLOAD',
//         ENV='MVSBATCH',
//         LISTLIB='NULLFILE',
//         LOADLIB='NULLFILE',
//         MAP='NONE',
//         NLS='ENU',
//         RESLIB='IMSVS.RESLIB',  (UNCOMMENT BELOW IF NECESSARY)
//         SOUT='*',
//         TABLE='NONE',
//         USR1MSL='NULLFILE',
//         USR2MSL='NULLFILE',
//         WSPC=500
//*
//*
//* CSP PARMS: (PARM VALUES SHOULD BE SPECIFIED VIA PROC GROUPS)
//*
//*    CGHLQ   = COBOL GENERATION USER DATA SET HIGH-LEVEL QUALIFIER
//*    COBCOMP = COBOL COMPILER LIBRARY
//*    COBLIB  = COBOL RUN TIME LIBRARY
//*    CRS     = CSP/370RS HIGH LEVEL QUALIFIER
//*    CSP     = CSP/370AD HIGH LEVEL QUALIFIER
//*    CSPVSAM = HIGH LEVEL QUALIFIER FOR VSAM DATA SETS
//*    CSPCUST = HIGH LEVEL QUALIFIER FOR CUSTOMIZED LIBRARIES

//*    CSPUSER = CSP/370AD USER WORK DATA SET HIGH LEVEL QUALIFIER
//*    DATA    = COMPILE OPTION FOR PLACING WORKING STORAGE
//*         ABOVE 16M LINE
//*    DSNEXIT = DB2 DSNEXIT LIBRARY
//*    DSNLOAD = DB2 DSNLOAD LIBRARY
//*    ENV     = COBOL GENERATION USER DATA SET ENVIRONMENT QUALIFIER
//*              (SHOULD BE EQUAL TO GENERATION TARGET ENVIRONMENT)
//*    MAP     = NONE/ALL - FOR APPLICATION, GEN MAPS WITH APPL
//*    NLS     = NLS CODE (NATIONAL LANGUAGE DATA SET QUALIFIER)
//*    RESLIB  = IMS RESLIB LIBRARY
//*   SOUT     = SYSOUT ASSIGNMENT
//*   TABLE    = NONE/ALL - FOR APPLICATION, GEN TABLES WITH APPL
//*   WSPC     = PRIMARY AND SECONDARY SPACE ALLOCATION
//*
//* Endevor PARMS: (PARM VALUES SHOULD BE SPECIFIED VIA PROC GROUPS)
//*
//*   BINDDSN  = 'PERMANENTLY-ALLOCATED' TEMPORARY BIND CNTL CARD LIB
//*   CONLIB   = Endevor RUN TIME LIBRARY
//*   DBRMLIB  = DB2 DBRMLIB LIBRARY
//*   LISTLIB  = Endevor/CSP LISTINGS LIBRARY
//*   LOADLIB  = Endevor/CSP OUTPUT LOAD LIBRARY
//*   USR1MSL  = READ/WRITE MSL
//*   USR2MSL  = READ-ONLY MSL
//*
//*********************************************************************
//*  INITIALIZE GENERATE/COMPILE/LINK-EDIT LISTING DATA SETS          *
//*********************************************************************
//*
//INITLIST EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01 DD DSN=&&EZECOUT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1INIT02 DD DSN=&&EZEPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=VBA,LRECL=654,BLKSIZE=6000)
//C1INIT03 DD DSN=&&PRPPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT04 DD DSN=&&COBPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT05 DD DSN=&&CB2PRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT06 DD DSN=&&LNKPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=3630)
//C1INIT07 DD DSN=&&BNDPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,2)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//*********************************************************************
//* INVOKE IDCAMS TO ENSURE THE BIND CNTL CARD O/P DATA SET IS DELETED*
//*********************************************************************
//IDCAMS   EXEC PGM=IDCAMS
//SYSPRINT DD DUMMY
//SYSIN    DD *
 DELETE '&BINDDSN'.
 SET MAXCC = 0
//COBGEN EXEC PGM=BC1PDCGB,COND=(0,NE),MAXRC=4
//*-----------------------
//*  LOADLIB AND MESSAGE FILES
//*-----------------------
//STEPLIB  DD DISP=SHR,DSN=&CRS..SELALMD
//         DD DISP=SHR,DSN=&CSP..SEZELMD
//*        DD DISP=SHR,DSN=EDC.SEDCLINK
//*        DD DISP=SHR,DSN=PLI.SIBMLINK
//         DD DISP=SHR,DSN=&COBLIB.
//         DD DISP=SHR,DSN=&CONLIB.
//*
//EZECOMM  DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZECOMM
//*
//*----------------------------------------------------------
//*  THE FOLLOWING MESSAGE FILES SHOULD BE PRE-ALLOCATED
//*----------------------------------------------------------
//*EZEDMSG DD DISP=SHR,DSN=&CSPVSAM..FZEMSG
//*EZEEMSG DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZEMSG
//*EZETES  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZETUTOR
//*EZEMAP  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZEMAPDS
//*-----------------------
//*  WORK FILES
//*-----------------------
//EZEWORK DD DISP=OLD,DSN=&CSPUSER..EZEWORK
//EZEWRK1 DD UNIT=tdisk,SPACE=(CYL,(2,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//*-----------------------
//*  COMMAND AND LOG FILES
//*-----------------------
//EZECOUT DD DSN=&&EZECOUT,DISP=(OLD,PASS)
//*-----------------------
//*  PRINT FILES
//*-----------------------
//EZEPRINT DD DSN=&&EZEPRINT,DISP=(OLD,PASS)
//EZECPRT  DD SYSOUT=&SOUT.
//SYSPRINT DD SYSOUT=&SOUT.
//*-----------------------
//*  COBOL GENERATION CONTROL FILES
//*-----------------------
//EZEOPT   DD DISP=SHR,DSN=&CSPCUST..PDS.EZEOPT
//*EZEOPT  DD DISP=SHR,DSN=&CSPVSAM..VSAM.EZEOPT
//EZEJTMP  DD DISP=SHR,DSN=&CSPCUST..EZESAMP
//EZEWORD  DD DISP=SHR,DSN=&CSPCUST..EZESAMP(EZEWORDS)
//EZESNAP  DD SYSOUT=&SOUT.
//*-----------------------
//*  INTERNAL READER FILE FOR PREPARATION JCL SUBMISSION
//*-----------------------
//EZEJCL  DD DSN=&&EZEJCL,DISP=(,PASS),
//           UNIT=tdisk,SPACE=(TRK,(1,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*EZEJCL DD SYSOUT=(,INTRDR)
//*-----------------------
//*-----------------------
//*  ENVIRONMENT DEPENDENT CONTROL AND OUTPUT FILES
//*
//*  THE FOLLOWING FILES MAY OR MAY NOT BE REQUIRED, DEPENDING
//*  ON FUNCTIONS USED AT SPECIFIC INSTALLATIONS. THE DD CARDS
//*  ARE SHOWN AS COMMENTS IN THE PROCEDURE. THE GENERATOR USES
//*  DYNAMIC ALLOCATION TO ALLOCATE EXISTING DATA SETS WITH THE
//*  NAMES AS SHOWN IN THE DD CARDS, WHERE &CGHLQ. IS THE DATA SET
//*  QUALIFIER FROM THE USERID COBOL GENERATION OPTION AND &ENV.
//*  IS THE TARGET EXECUTION ENVIRONMENT.
//*
//*  TO USE DATA SETS WITH OTHER NAMES, MODIFY THE PROCEDURE OR THE
//*  JCL TO ALLOCATE THE DATA SETS WITH THE APPROPRIATE DD NAMES
//*  AS SHOWN BELOW. THE GENERATOR CHECKS TO SEE IF A DATA SET
//*  HAS ALREADY BEEN ALLOCATED TO THE DD NAME BEFORE ATTEMPTING TO
//*  DYNAMICALLY ALLOCATE A DATA SET WITH THE STANDARD NAME.
//*
//*-----------------------
//*  COBOL SOURCE FILE
//*-----------------------
//EZESRC  DD DISP=(NEW,PASS),DSN=&&EZESRC,
//           UNIT=tdisk,SPACE=(CYL,(5,5,10),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*
//EZEDUMMY DD DUMMY,DISP=SHR,DSN=&CGHLQ..&ENV..EZEDUMMY
//*-----------------------
//*-----------------------
//*  USER DEFINED LINK EDIT CONTROL STATEMENTS
//*-----------------------
//EZELINK DD DUMMY
//*-----------------------
//*  USER-DEFINED BIND CONTROL STATEMENTS
//*-----------------------
//EZEBIND DD DSN=&BINDDSN.,DISP=(,CATLG,DELETE),
//           UNIT=tdisk,SPACE=(TRK,(1,1,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*--------------------------
//*  IMS COBOL COPY LIBRARY
//*--------------------------
//*EZECOPY DD DISP=SHR,DSM=&CGHLQ..&ENV..EZECOPY
//*-----------------------
//*  OBJECT LIBRARIES FOR GENERATED MAP GROUPS
//*-----------------------
//EZEFOBJ DD DISP=(NEW,PASS),DSN=&&EZEFOBJ,
//           UNIT=tdisk,SPACE=(TRK,(5,5,1),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*EZEPOBJ DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEPOBJ
//*-----------------------
//*  TSO CLIST LIBRARY
//*-----------------------
//EZECLST DD DISP=SHR,DSN=NULLFILE
//*-----------------------
//*  PARTS LIST LIBRARY
//*-----------------------
//EZEPCTL DD DISP=SHR,DSN=NULLFILE
//*-----------------------
//*  MFS SOURCE LIBRARY
//*-----------------------
//*EZEMFS  DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEMFS
//*-----------------------
//*  JCL LIBRARIES
//*-----------------------
//*EZEJCLX DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEJCLX
//*EZEJCLP DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEJCLP
//USR1MSL  DD DISP=SHR,DSN=&USR1MSL.
//USR2MSL  DD DISP=SHR,DSN=&USR2MSL.
//NDVRIPT  DD *
 M=USR1MSL ROMSL=USR2MSL CMDIN=EZECIN CMDOUT=EZECOUT
//EZECIN  DD *
 GENERATE MEMBER(&C1ELEMENT). SYSTEM(&ENV).
      TABLES(&TABLE). MAPS(&MAP). BATCH(NO) ;
//EZEPARM  DD UNIT=tdisk,SPACE=(TRK,1),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=80)
//*
//**********************************************************************
//*      EXTRACT THE LINKAGE-EDITOR CONTROL STATEMENTS FROM           **
//*      THE SEQUENTIAL FILE CREATED BY THE GENERATE STEP             **
//**********************************************************************
//*
//EXTRLNK EXEC PGM=LEXTRCTR,COND=(5,LT),MAXRC=0
//STEPLIB DD  DISP=SHR,DSN=&CONLIB.
//INPUT   DD  DSN=&&EZEJCL,DISP=(OLD,PASS)
//OUTPUT  DD  DSN=&&CONTROL,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//**********************************************************************
//** ELAPCLB - COBOL PRECOMPILE/COMPILE AND LINK-EDIT                 **
//**********************************************************************
//*
//*****************************************************************
//*      PRECOMPILE THE COBOL PROGRAM                            **
//*****************************************************************
//*
//P        EXEC PGM=DSNHPC,MAXRC=4,
//         PARM=('HOST(COB2),APOSTSQL,QUOTE')
//STEPLIB  DD DISP=SHR,DSN=&DSNEXIT.
//         DD DISP=SHR,DSN=&DSNLOAD.
//DBRMLIB  DD DISP=OLD,DSN=&DBRMLIB.(&C1ELEMENT).
//SYSCIN   DD DISP=(NEW,PASS),DSN=&&DSNHOUT,UNIT=tdisk,
//            SPACE=(800,(&WSPC.,&WSPC)).
//SYSLIB   DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSPRINT DD DSN=&&PRPPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSIN    DD DISP=(OLD,PASS),DSN=&&EZESRC(&C1ELEMENT)
//*
//*
//**********************************************************************
//*      COMPILE THE COBOL PROGRAM                                    **
//**********************************************************************
//*
//C        EXEC PGM=IGYCRCTL,COND=(4,LT),MAXRC=4,
//         PARM=(NOSEQ,QUOTE,OFFSET,LIB,RES,RENT,NODYNAM,DBCS,OPT,
//         'TRUNC(BIN)','NUMPROC(NOPFD)',NOCMPR2,'DATA(&DATA)').
//STEPLIB  DD DISP=SHR,DSN=&COBCOMP.
//SYSIN    DD DISP=(OLD,DELETE),DSN=&&DSNHOUT
//SYSLIB   DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSLIN   DD DISP=(NEW,PASS),DSN=&&LOADSET(&C1ELEMENT),UNIT=tdisk,
//            SPACE=(800,(&WSPC.,&WSPC.,10)),FOOTPRNT=CREATE,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//SYSPRINT DD DSN=&&COBPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT3   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT4   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT5   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT6   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT7   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//*
//**********************************************************************
//*      COMPILE ANY ADDITIONAL MAPS AND TABLES                       **
//**********************************************************************
//*
//C2       EXEC PGM=BC1PCCSP,COND=(4,LT),MAXRC=4,
//         PARM=(NOSEQ,QUOTE,OFFSET,LIB,RES,RENT,NODYNAM,DBCS,OPT,
//        'TRUNC(BIN)','NUMPROC(NOPFD)',NOCMPR2,'DATA(&DATA)').
//COBCOMP  DD DISP=SHR,DSN=&COBCOMP.
//SYSLIB   DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSIN    DD UNIT=tdisk,SPACE=(6400,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=6400)
//SYSLIN   DD UNIT=tdisk,SPACE=(3120,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//SYSPRINT DD UNIT=tdisk,SPACE=(3630,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//GENCNTL  DD DISP=(OLD,PASS),DSN=&&CONTROL
//EZESRC   DD DISP=(OLD,PASS),DSN=&&EZESRC
//OBJLIB   DD DISP=(OLD,PASS),DSN=&&LOADSET
//PRINTLIB DD DISP=(OLD,PASS),DSN=&&CB2PRINT
//GENINFO DD *
ELEMENT=&C1ELEMENT.       KEEP THESE CARDS IN ORDER,
 COMPILER=IGYCRCTL       LEFT JUST WITH NO BLANKS
//SYSUT1  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT3  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT4  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT5  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT6  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT7  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//*
//**********************************************************************
//*      LINK-EDIT THE COBOL PROGRAM                                  **
//*      IF THE RETURN CODE ON ALL PREVIOUS STEPS IS 4 OR LESS        **
//**********************************************************************
//*
//L        EXEC PGM=IEWL,COND=(5,LT),MAXRC=0,
//         PARM='RENT,REUS,LIST,XREF,MAP,AMODE(31),RMODE(ANY)'
//SYSLIB   DD DISP=SHR,DSN=&COBLIB.,MONITOR=COMPONENTS
//*        DD DISP=SHR,DSN=&RESLIB.,MONITOR=COMPONENTS
//         DD DISP=SHR,DSN=&DSNLOAD.,MONITOR=COMPONENTS
//OBJLIB   DD DISP=(OLD,DELETE),DSN=&&LOADSET,MONITOR=COMPONENTS
//         DD DISP=(OLD,DELETE),DSN=&&EZEFOBJ,MONITOR=COMPONENTS
//SELALMD  DD DISP=SHR,DSN=&CRS..SELALMD,MONITOR=COMPONENTS
//SYSLMOD  DD DISP=SHR,DSN=&LOADLIB.,
//            FOOTPRNT=CREATE,MONITOR=COMPONENTS
//SYSPRINT DD DSN=&&LNKPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(1024,(&WSPC.,&WSPC)).,UNIT=tdisk
//SYSLIN   DD DSN=&&CONTROL,DISP=(OLD,DELETE)
//*
//**********************************************************************
//* BIND APPLICATION PLAN IN FOREGROUND                               **
//* NOTE: ATTEMPTING TO RUN THIS STEP IN BG WILL RESULT IN RC=5       **
//**********************************************************************
//BINDFG   EXEC PGM=BC1PTMP0,COND=(8,LT),MAXRC=5,
//         PARM='&BINDDSN(&C1ELEMENT)'.
//STEPLIB  DD DISP=SHR,DSN=&DSNLOAD.
//DBRMLIB  DD DISP=SHR,DSN=&DBRMLIB.,MONITOR=COMPONENTS
//         DD DISP=SHR,DSN=&CRS..SELADBRM,MONITOR=COMPONENTS
//SYSTSPRT DD DISP=(OLD,PASS),DSN=&&BNDPRINT
//**********************************************************************
//* BIND APPLICATION PLAN IN BACKGROUND                                *
//**********************************************************************
//BINDBG   EXEC PGM=IKJEFT01,COND=((8,LT),(5,NE,BINDFG)),MAXRC=0
//STEPLIB  DD DISP=SHR,DSN=&DSNLOAD.
//SYSTSIN  DD DISP=SHR,DSN=&BINDDSN.(&C1ELEMENT).
//DBRMLIB  DD DISP=SHR,DSN=&DBRMLIB.,MONITOR=COMPONENTS
//         DD DISP=SHR,DSN=&CRS..SELADBRM,MONITOR=COMPONENTS
//SYSTSPRT DD DISP=(OLD,PASS),DSN=&&BNDPRINT
//**********************************************************************
//* FOOTPRINT DB2 PLAN                                                 *
//**********************************************************************
//FOOTDB2 EXEC PGM=BC1PCAF,COND=(8,LT),MAXRC=0,
//        PARM='DB2T,BC1PSQL1,BC1PDBFP'
//STEPLIB DD DISP=SHR,DSN=&DSNLOAD.
//DBRMLIB DD DISP=SHR,DSN=&DBRMLIB.
//        DD DISP=SHR,DSN=&CRS..SELADBRM
//BSTIPT  DD DISP=SHR,DSN=&BINDDSN.(&C1ELEMENT).
//*********************************************************************
//* INVOKE IDCAMS TO ENSURE THE BIND CNTL CARD O/P DATA SET IS DELETED*
//*********************************************************************
//IDCAMS   EXEC PGM=IDCAMS
//SYSPRINT DD DUMMY
//SYSIN    DD *
 DELETE '&BINDDSN'.
 SET MAXCC = 0
//*********************************************************************
//*  STORE OUTPUT LISTINGS IN LIST LIBRARY                            *
//*********************************************************************
//CONLIST  EXEC PGM=CONLIST,PARM=STORE,MAXRC=0,COND=EVEN
//C1LLIBO  DD DSN=&LISTLIB.,DISP=SHR,MONITOR=COMPONENTS
//C1BANNER DD UNIT=tdisk,SPACE=(TRK,1),
//            DCB=(RECFM=FBA,LRECL=121)
//LIST01   DD DSN=&&EZECOUT,DISP=(OLD,DELETE)
//LIST02   DD DSN=&&EZEPRINT,DISP=(OLD,DELETE)
//LIST03   DD DSN=&&EZEJCL,DISP=(OLD,DELETE)
//LIST04   DD DSN=&&PRPPRINT,DISP=(OLD,DELETE)
//LIST05   DD DSN=&&COBPRINT,DISP=(OLD,DELETE)
//LIST06   DD DSN=&&CB2PRINT,DISP=(OLD,DELETE)
//LIST07   DD DSN=&&LNKPRINT,DISP=(OLD,DELETE)
//LIST08   DD DSN=&&BNDPRINT,DISP=(OLD,DELETE)
//*

The GELTCL CSP Processor

//**********************************************************************

//** GENERATE, CICS TRANLATE, COMPILE AND LINK-EDIT CSP APPLICATIONS   *
//**********************************************************************
//*
//GELTCL  PROC CGHLQ='USER',
//         COBCICS='SYS1.COB2CICS',
//         COBCOMP='SYS1.COB2COMP',
//         COBLIB='SYS1.COB2LIB',
//         CONLIB='iprfx.iqual.CSIQLOAD',
//         CRS='CRS210',
//         CSP='CSP410',
//         CSPVSAM='CSP410',
//         CSPCUST='CSP410',
//         CSPUSER='CSPUSER',
//         DATA='31',
//         DBCS=,
//         DFHLOAD='SYS5.CICS212.LOADLIB',
//         ENV='MVSCICS',
//         LISTLIB=NULLFILE,
//         LOADLIB=NULLFILE,
//         MAP='NONE',
//         NLS='ENU',
//         RESLIB='IMSVS.RESLIB',  (UNCOMMENT BELOW IF NECESSARY)
//         SOUT='*',
//         SP=,
//         SUFF=1$,
//         TABLE='NONE',
//         USR1MSL=NULLFILE,
//         USR2MSL=NULLFILE,
//         WSPC=500
//*
//*
//* CSP PARMS: (PARM VALUES SHOULD BE SPECIFIED VIA PROC GROUPS)
//*
//*   CGHLQ   = COBOL GENERATION USER DATA SET HIGH-LEVEL QUALIFIER
//*   COBCICS = COBOL CICS RUN TIME LIBRARY
//*   COBCOMP = COBOL COMPILER LIBRARY
//*   COBLIB  = COBOL RUN TIME LIBRARY
//*   CRS     = CSP/370RS HIGH LEVEL QUALIFIER
//*   CSP     = CSP/370AD HIGH LEVEL QUALIFIER
//*   CSPVSAM = HIGH LEVEL QUALIFIER FOR VSAM DATA SETS
//*   CSPCUST = HIGH LEVEL QUALIFIER FOR CUSTOMIZED LIBRARIES

//*   CSPUSER = CSP/370AD USER WORK DATA SET HIGH LEVEL QUALIFIER
//*   DATA    = COMPILE OPTION FOR PLACING WORKING STORAGE
//*             ABOVE 16M LINE
//*   DBCS    = DOUBLE BYTE CHARACTER SUPPORT
//*   DFHLOAD = CICS TRANSLATOR LIBRARY
//*   ENV     = COBOL GENERATION USER DATA SET ENVIRONMENT QUALIFIER
//*             (SHOULD BE EQUAL TO GENERATION TARGET ENVIRONMENT)
//*   MAP     = NONE/ALL - FOR APPLICATION, GEN MAPS WITH APPL
//*   NLS     = NLS CODE (NATIONAL LANGUAGE DATA SET QUALIFIER)
//*   RESLIB  = IMS RESLIB LIBRARY
//*   SOUT    = SYSOUT ASSIGNMENT
//*   SP      = CICS/ESA SYSTEM PROGRAMMING TRANSLATOR OPTION
//*   SUFF    = CICS TRANSLATOR PROGRAM NAME SUFFIX
//*   TABLE   = NONE/ALL - FOR APPLICATION, GEN TABLES WITH APPL
//*   WSPC    = PRIMARY AND SECONDARY SPACE ALLOCATION
//*
//* Endevor PARMS: (PARM VALUES SHOULD BE SPECIFIED VIA PROC GROUPS)
//*   CONLIB  = Endevor RUN TIME LIBRARY
//*   LISTLIB = Endevor/CSP LISTINGS LIBRARY
//*   LOADLIB = Endevor/CSP OUTPUT LOAD LIBRARY
//*   USR1MSL = READ/WRITE MSL
//*   USR2MSL = READ-ONLY MSL
//*
//*********************************************************************
//*  INITIALIZE GENERATE/COMPILE/LINK-EDIT LISTING DATA SETS          *
//*********************************************************************
//*
//INITLIST EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01 DD DSN=&&EZECOUT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1INIT02 DD DSN=&&EZEPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=VBA,LRECL=654,BLKSIZE=6000)
//C1INIT02 DD DSN=&&TRNPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1INIT04 DD DSN=&&COBPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT05 DD DSN=&&CB2PRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT06 DD DSN=&&LNKPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=3630)
//*
//COBGEN EXEC PGM=BC1PDCGB,COND=(0,NE),MAXRC=4

//*-----------------------
//*   LOADLIB AND MESSAGE FILES
//*-----------------------
//STEPLIB DD DISP=SHR,DSN=&CRS..SELALMD
//        DD DISP=SHR,DSN=&CSP..SEZELMD
//*       DD DISP=SHR,DSN=EDC.SEDCLINK
//*       DD DISP=SHR,DSN=PLI.SIBMLINK
//        DD DISP=SHR,DSN=&COBLIB.
//        DD DISP=SHR,DSN=&CONLIB.
//*
//EZECOMM DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZECOMM
//*
//*----------------------------------------------------------
//*  THE FOLLOWING MESSAGE FILES SHOULD BE PRE-ALLOCATED
//*----------------------------------------------------------
//*EZEDMSG DD DISP=SHR,DSN=&CSPVSAM..FZEMSG
//*EZEEMSG DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZEMSG
//*EZETES  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZETUTOR
//*EZEMAP  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZEMAPDS
//*-----------------------
//*  WORK FILES
//*-----------------------
//EZEWORK DD DISP=OLD,DSN=&CSPUSER..EZEWORK
//EZEWRK1 DD UNIT=tdisk,SPACE=(CYL,(2,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//*-----------------------
//*  COMMAND AND LOG FILES
//*-----------------------
//EZECOUT  DD DSN=&&EZECOUT,DISP=(OLD,PASS)
//*-----------------------
//*  PRINT FILES
//*-----------------------
//EZEPRINT DD DSN=&&EZEPRINT,DISP=(OLD,PASS)
//EZECPRT  DD SYSOUT=&SOUT.
//SYSPRINT DD SYSOUT=&SOUT.
//*-----------------------
//*  COBOL GENERATION CONTROL FILES
//*-----------------------
//EZEOPT  DD DISP=SHR,DSN=&CSPCUST..PDS.EZEOPT
//*EZEOPT  DD DISP=SHR,DSN=&CSPVSAM..VSAM.EZEOPT
//EZEJTMP DD DISP=SHR,DSN=&CSPCUST..EZESAMP
//EZEWORD DD DISP=SHR,DSN=&CSPCUST..EZESAMP(EZEWORDS)
//EZESNAP DD SYSOUT=&SOUT.
//*-----------------------
//*  INTERNAL READER FILE FOR PREPARATION JCL SUBMISSION
//*-----------------------
//EZEJCL  DD DSN=&&EZEJCL,DISP=(,PASS),
//           UNIT=tdisk,SPACE=(TRK,(1,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*EZEJCL  DD SYSOUT=(,INTRDR)
//*-----------------------
//*-----------------------
//*  ENVIRONMENT DEPENDENT CONTROL AND OUTPUT FILES
//*
//*  THE FOLLOWING FILES MAY OR MAY NOT BE REQUIRED, DEPENDING
//*  ON FUNCTIONS USED AT SPECIFIC INSTALLATIONS. THE DD CARDS
//*  ARE SHOWN AS COMMENTS IN THE PROCEDURE. THE GENERATOR USES
//*  DYNAMIC ALLOCATION TO ALLOCATE EXISTING DATA SETS WITH THE
//*  NAMES AS SHOWN IN THE DD CARDS, WHERE &CGHLQ. IS THE DATA SET
//*  QUALIFIER FROM THE USERID COBOL GENERATION OPTION AND &ENV.
//*  IS THE TARGET EXECUTION ENVIRONMENT.
//*
//*  TO USE DATA SETS WITH OTHER NAMES, MODIFY THE PROCEDURE OR THE
//*  JCL TO ALLOCATE THE DATA SETS WITH THE APPROPRIATE DD NAMES
//*  AS SHOWN BELOW. THE GENERATOR CHECKS TO SEE IF A DATA SET
//*  HAS ALREADY BEEN ALLOCATED TO THE DD NAME BEFORE ATTEMPTING TO
//*  DYNAMICALLY ALLOCATE A DATA SET WITH THE STANDARD NAME.
//*
//*-----------------------
//*  COBOL SOURCE FILE
//*-----------------------
//EZESRC  DD DISP=(NEW,PASS),DSN=&&EZESRC,
//           UNIT=tdisk,SPACE=(CYL,(5,5,10),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*
//EZEDUMMY DD DUMMY,DISP=SHR,DSN=&CGHLQ..&ENV..EZEDUMMY
//*-----------------------
//*-----------------------
//*  USER DEFINED LINK EDIT CONTROL STATEMENTS
//*-----------------------
//EZELINK DD DUMMY
//*-----------------------
//*  USER DEFINED BIND CONTROL STATEMENTS
//*-----------------------
//EZEBIND DD DUMMY
//*--------------------------
//*  IMS COBOL COPY LIBRARY
//*--------------------------
//*EZECOPY DD DISP=SHR,DSM=&CGHLQ..&ENV..EZECOPY
//*-----------------------
//*  OBJECT LIBRARIES FOR GENERATED MAP GROUPS
//*-----------------------
//EZEFOBJ DD DISP=(NEW,PASS),DSN=&&EZEFOBJ,
//           UNIT=tdisk,SPACE=(TRK,(5,5,1),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*EZEPOBJ DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEPOBJ
//*-----------------------
//*  TSO CLIST LIBRARY
//*-----------------------
//EZECLST DD DISP=SHR,DSN=NULLFILE
//*-----------------------
//*  PARTS LIST LIBRARY
//*-----------------------
//EZEPCTL DD DISP=SHR,DSN=NULLFILE
//*-----------------------
//*  MFS SOURCE LIBRARY
//*-----------------------
//*EZEMFS  DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEMFS
//*-----------------------
//*  JCL LIBRARIES
//*-----------------------
//*EZEJCLX DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEJCLX
//*EZEJCLP DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEJCLP
//USR1MSL  DD DISP=SHR,DSN=&USR1MSL.
//USR2MSL  DD DISP=SHR,DSN=&USR2MSL.
//NDVRIPT  DD *
 M=USR1MSL ROMSL=USR2MSL CMDIN=EZECIN CMDOUT=EZECOUT
//EZECIN  DD *
 GENERATE MEMBER(&C1ELEMENT). SYSTEM(&ENV).
      TABLES(&TABLE). MAPS(&MAP). BATCH(NO) ;
//EZEPARM  DD UNIT=tdisk,SPACE=(TRK,1),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=80)
//*
//**********************************************************************
//*      EXTRACT THE LINKAGE-EDITOR CONTROL STATEMENTS FROM           **
//*      THE SEQUENTIAL FILE CREATED BY THE GENERATE STEP             **
//**********************************************************************
//*
//EXTRLNK EXEC PGM=LEXTRCTR,COND=(5,LT),MAXRC=0
//STEPLIB DD DISP=SHR,DSN=&CONLIB.
//INPUT   DD DSN=&&EZEJCL,DISP=(OLD,PASS)
//OUTPUT  DD DSN=&&CONTROL,DISP=(,PASS),
//           UNIT=tdisk,SPACE=(TRK,(1,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*
//**********************************************************************
//** ELATCL - CICS TRANSLATE, COBOL COMPILE AND LINK-EDIT             **
//**********************************************************************
//T    EXEC PGM=DFHECP&SUFF.,MAXRC=4,
//       PARM='COBOL2,QUOTE,NOSEQ&SP&DBCS'.
//STEPLIB  DD DISP=SHR,DSN=&DFHLOAD.
//SYSPRINT DD DSN=&&TRNPRINT,DISP=(OLD,PASS)
//SYSPUNCH DD DSN=&&SYSCIN,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(800,(&WSPC.,&WSPC)).
//SYSIN    DD DSN=&&EZESRC(&C1ELEMENT),DISP=(OLD,PASS)
//*
//**********************************************************************
//*      COMPILE THE COBOL PROGRAM                                    **
//**********************************************************************
//*
//C    EXEC PGM=IGYCRCTL,COND=(4,LT),MAXRC=4,
//     PARM=(NOSEQ,QUOTE,OFFSET,LIB,RES,RENT,NODYNAM,DBCS,OPT,
//     'TRUNC(BIN)','NUMPROC(NOPFD)',NOCMPR2,'DATA(&DATA)').
//STEPLIB DD DISP=SHR,DSN=&COBCOMP.
//SYSIN   DD DISP=(OLD,DELETE),DSN=&&SYSCIN
//SYSLIB  DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSLIN  DD DISP=(NEW,PASS),DSN=&&LOADSET(&C1ELEMENT),UNIT=tdisk,
//           SPACE=(800,(&WSPC.,&WSPC.,10)),FOOTPRNT=CREATE,
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//SYSPRINT DD DSN=&&COBPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT3   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT4   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT5   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT6   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT7   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//*
//**********************************************************************
//*      COMPILE ANY ADDITIONAL MAPS AND TABLES                       **
//**********************************************************************
//*
//C2    EXEC PGM=BC1PCCSP,COND=(4,LT),MAXRC=4,
//          PARM=(NOSEQ,QUOTE,OFFSET,LIB,RES,RENT,NODYNAM,DBCS,OPT,
//     'TRUNC(BIN)','NUMPROC(NOPFD)',NOCMPR2,'DATA(&DATA)').
//COBCOMP  DD DISP=SHR,DSN=&COBCOMP.
//SYSLIB   DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSIN    DD UNIT=tdisk,SPACE=(6400,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=6400)
//SYSLIN   DD UNIT=tdisk,SPACE=(3120,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//SYSPRINT DD UNIT=tdisk,SPACE=(3630,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//GENCNTL  DD DISP=(OLD,PASS),DSN=&&CONTROL
//EZESRC   DD DISP=(OLD,PASS),DSN=&&EZESRC
//OBJLIB   DD DISP=(OLD,PASS),DSN=&&LOADSET
//PRINTLIB DD DISP=(OLD,PASS),DSN=&&CB2PRINT
//GENINFO  DD *
ELEMENT=&C1ELEMENT.       KEEP THESE CARDS IN ORDER,
 COMPILER=IGYCRCTL       LEFT JUST WITH NO BLANKS
//SYSUT1  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT3  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT4  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT5  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT6  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT7  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//*
//*
//**********************************************************************
//*      LINK-EDIT THE COBOL PROGRAM                                  **
//*      IF THE RETURN CODE ON ALL PREVIOUS STEPS IS 4 OR LESS        **
//**********************************************************************
//*
//L    EXEC PGM=IEWL,COND=(5,LT),MAXRC=0,
//     PARM='RENT,REUS,LIST,XREF,MAP,AMODE(31),RMODE(ANY)'
//SYSLIB  DD DISP=SHR,DSN=&DFHLOAD.,MONITOR=COMPONENTS
//        DD DISP=SHR,DSN=&COBCICS.,MONITOR=COMPONENTS
//        DD DISP=SHR,DSN=&COBLIB.,MONITOR=COMPONENTS
//*       DD DISP=SHR,DSN=&RESLIB.,MONITOR=COMPONENTS
//OBJLIB  DD DISP=(OLD,DELETE),DSN=&&LOADSET,MONITOR=COMPONENTS
//        DD DISP=(OLD,DELETE),DSN=&&EZEFOBJ,MONITOR=COMPONENTS
//SELALMD DD DISP=SHR,DSN=&CRS..SELALMD,MONITOR=COMPONENTS
//SYSLMOD DD DISP=SHR,DSN=&LOADLIB.,
//       FOOTPRNT=CREATE,MONITOR=COMPONENTS
//SYSPRINT DD DSN=&&LNKPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(1024,(&WSPC.,&WSPC)).,UNIT=tdisk
//SYSLIN   DD DSN=&&CONTROL,DISP=(OLD,DELETE)
//*********************************************************************
//*  STORE OUTPUT LISTINGS IN LIST LIBRARY                           **
//*********************************************************************
//CONLIST  EXEC PGM=CONLIST,PARM=STORE,MAXRC=0,COND=EVEN
//C1LLIBO  DD DSN=&LISTLIB.,DISP=SHR,MONITOR=COMPONENTS
//C1BANNER DD UNIT=tdisk,SPACE=(TRK,1),
//            DCB=(RECFM=FBA,LRECL=121)
//LIST01   DD DSN=&&EZECOUT,DISP=(OLD,DELETE)
//LIST02   DD DSN=&&EZEPRINT,DISP=(OLD,DELETE)
//LIST03   DD DSN=&&EZEJCL,DISP=(OLD,DELETE)
//LIST04   DD DSN=&&TRNPRINT,DISP=(OLD,DELETE)
//LIST05   DD DSN=&&COBPRINT,DISP=(OLD,DELETE)
//LIST06   DD DSN=&&CB2PRINT,DISP=(OLD,DELETE)
//LIST07   DD DSN=&&LNKPRINT,DISP=(OLD,DELETE)
//*

The GELPTCLB CSP Processor

//**********************************************************************

//** GENERATE, DB2 PRE-PROCESS, CICS TRANSLATE, COMPILE, LINK-EDIT    **
//**  AND BIND CSP APPLICATIONS                                       **
//**********************************************************************
//*
//GELPTCLB PROC CGHLQ='USER',
//          BINDDSN  ='&C1USERID..NDVRCSP.BINDDSN',
//          COBCICS  ='SYS1.COB2CICS',
//          COBCOMP  ='SYS1.COB2COMP',
//          COBLIB   ='SYS1.COB2LIB',
//          CONLIB   ='iprfx.iqual.CSIQLOAD',
//          CRS      ='CRS210',
//          CSP      ='CSP410',
//          CSPVSAM  ='CSP410',
//          CSPCUST  ='CSP410',
//          CSPUSER  ='CSPUSER',
//          DATA     ='31',
//          DBRMLIB  ='NULLFILE',
//          DSNEXIT  ='DSN220.DSNEXIT',
//          DSNLOAD  ='DSN220.DSNLOAD',
//          ENV      ='MVSCICS',
//          DBCS     =,
//          DFHLOAD  ='SYS5.CICS212.LOADLIB',
//          LISTLIB  ='NULLFILE',
//          LOADLIB  ='NULLFILE',
//          MAP      ='NONE',
//          NLS      ='ENU',
//          RESLIB   ='IMSVS.RESLIB',  (UNCOMMENT BELOW IF NECESSARY)
//          SOUT     ='*',
//          SP       =,
//          SUFF     =1$,
//          TABLE    ='NONE',
//          USR1MSL  ='NULLFILE',
//          USR2MSL  ='NULLFILE',
//          WSPC     =500
//*
//*
//* CSP PARMS: (PARM VALUES SHOULD BE SPECIFIED VIA PROC GROUPS)
//*
//*    CGHLQ   = COBOL GENERATION USER DATA SET HIGH-LEVEL QUALIFIER
//*    COBCICS = COBOL CICS RUN TIME LIBRARY
//*    COBCOMP = COBOL COMPILER LIBRARY
//*    COBLIB  = COBOL RUN TIME LIBRARY


//*    CRS     = CSP/370RS HIGH LEVEL QUALIFIER
//*    CSP     = CSP/370AD HIGH LEVEL QUALIFIER
//*    CSPVSAM = HIGH LEVEL QUALIFIER FOR VSAM DATA SETS
//*    CSPCUST = HIGH LEVEL QUALIFIER FOR CUSTOMIZED LIBRARIES
//*    CSPUSER = CSP/370AD USER WORK DATA SET HIGH LEVEL QUALIFIER
//*    DATA    = COMPILE OPTION FOR PLACING WORKING STORAGE
//*              ABOVE 16M LINE
//*   DBCS     = DOUBLE BYTE CHARACTER SUPPORT
//*   DFHLOAD  = CICS TRANSLATOR LIBRARY
//*   DSNEXIT  = DB2 DSNEXIT LIBRARY
//*   DSNLOAD  = DB2 DSNLOAD LIBRARY
//*   ENV      = COBOL GENERATION USER DATA SET ENVIRONMENT QUALIFIER
//*              (SHOULD BE EQUAL TO GENERATION TARGET ENVIRONMENT)
//*   MAP      = NONE/ALL - FOR APPLICATION, GEN MAPS WITH APPL
//*   NLS      = NLS CODE (NATIONAL LANGUAGE DATA SET QUALIFIER)
//*   RESLIB   = IMS RESLIB LIBRARY
//*   SOUT     = SYSOUT ASSIGNMENT
//*   SP       = CICS/ESA SYSTEM PROGRAMMING TRANSLATOR OPTION
//*   SUFF     = CICS TRANSLATOR PROGRAM NAME SUFFIX
//*   TABLE    = NONE/ALL - FOR APPLICATION, GEN TABLES WITH APPL
//*   WSPC     = PRIMARY AND SECONDARY SPACE ALLOCATION
//*
//* Endevor PARMS: (PARM VALUES SHOULD BE SPECIFIED VIA PROC GROUPS)
//*   BINDDSN  = 'PERMANENTLY-ALLOCATED' TEMPORARY BIND CNTL CARD LIB
//*   CONLIB   = Endevor RUN TIME LIBRARY
//*   DBRMLIB  = DB2 DBRMLIB LIBRARY
//*   LISTLIB  = Endevor/CSP LISTINGS LIBRARY
//*   LOADLIB  = Endevor/CSP OUTPUT LOAD LIBRARY
//*   USR1MSL  = READ/WRITE MSL
//*   USR2MSL  = READ-ONLY MSL
//*
//*
//*********************************************************************
//*  INITIALIZE GENERATE/COMPILE/LINK-EDIT LISTING DATA SETS          *
//*********************************************************************
//*
//INITLIST EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01 DD DSN=&&EZECOUT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1INIT02 DD DSN=&&EZEPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=VBA,LRECL=654,BLKSIZE=6000)
//C1INIT03 DD DSN=&&PRPPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT04 DD DSN=&&TRNPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//C1INIT05 DD DSN=&&COBPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT06 DD DSN=&&CB2PRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(15,5)),
//            DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//C1INIT07 DD DSN=&&LNKPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,5)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=3630)
//C1INIT08 DD DSN=&&BNDPRINT,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(5,2)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//*********************************************************************
//* INVOKE IDCAMS TO ENSURE THE BIND CNTL CARD O/P DATA SET IS DELETED*
//*********************************************************************
//IDCAMS EXEC PGM=IDCAMS
//SYSPRINT DD DUMMY
//SYSIN    DD *
 DELETE '&BINDDSN'.
 SET MAXCC = 0
//COBGEN EXEC PGM=BC1PDCGB,COND=(0,NE),MAXRC=4
//*
//*-----------------------
//*  LOADLIB AND MESSAGE FILES
//*-----------------------
//STEPLIB DD DISP=SHR,DSN=&CRS..SELALMD
//        DD DISP=SHR,DSN=&CSP..SEZELMD
//*       DD DISP=SHR,DSN=EDC.SEDCLINK
//*       DD DISP=SHR,DSN=PLI.SIBMLINK
//        DD DISP=SHR,DSN=&COBLIB.
//        DD DISP=SHR,DSN=&CONLIB.
//*
//EZECOMM DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZECOMM
//*
//*----------------------------------------------------------
//*  THE FOLLOWING MESSAGE FILES SHOULD BE PRE-ALLOCATED
//*----------------------------------------------------------
//*EZEDMSG DD DISP=SHR,DSN=&CSPVSAM..FZEMSG
//*EZEEMSG DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZEMSG
//*EZETES  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZETUTOR
//*EZEMAP  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZEMAPDS
//*-----------------------
//*  WORK FILES
//*-----------------------
//EZEWORK DD DISP=OLD,DSN=&CSPUSER..EZEWORK
//EZEWRK1 DD UNIT=tdisk,SPACE=(CYL,(2,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//*-----------------------
//*  COMMAND AND LOG FILES
//*-----------------------
//EZECOUT DD DSN=&&EZECOUT,DISP=(OLD,PASS)
//*-----------------------
//*  PRINT FILES
//*-----------------------
//EZEPRINT DD DSN=&&EZEPRINT,DISP=(OLD,PASS)
//EZECPRT  DD SYSOUT=&SOUT.
//SYSPRINT DD SYSOUT=&SOUT.
//*-----------------------
//*  COBOL GENERATION CONTROL FILES
//*-----------------------
//EZEOPT   DD DISP=SHR,DSN=&CSPCUST..PDS.EZEOPT
//*EZEOPT  DD DISP=SHR,DSN=&CSPVSAM..VSAM.EZEOPT
//EZEJTMP  DD DISP=SHR,DSN=&CSPCUST..EZESAMP
//EZEWORD  DD DISP=SHR,DSN=&CSPCUST..EZESAMP(EZEWORDS)
//EZESNAP  DD SYSOUT=&SOUT.
//*-----------------------
//*  INTERNAL READER FILE FOR PREPARATION JCL SUBMISSION
//*-----------------------
//EZEJCL   DD DSN=&&EZEJCL,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*EZEJCL  DD SYSOUT=(,INTRDR)
//*-----------------------
//*-----------------------
//*  ENVIRONMENT DEPENDENT CONTROL AND OUTPUT FILES
//*
//*  THE FOLLOWING FILES MAY OR MAY NOT BE REQUIRED, DEPENDING
//*  ON FUNCTIONS USED AT SPECIFIC INSTALLATIONS. THE DD CARDS
//*  ARE SHOWN AS COMMENTS IN THE PROCEDURE. THE GENERATOR USES
//*  DYNAMIC ALLOCATION TO ALLOCATE EXISTING DATA SETS WITH THE
//*  NAMES AS SHOWN IN THE DD CARDS, WHERE &CGHLQ. IS THE DATA SET
//*  QUALIFIER FROM THE USERID COBOL GENERATION OPTION AND &ENV.
//*  IS THE TARGET EXECUTION ENVIRONMENT.
//*
//*  TO USE DATA SETS WITH OTHER NAMES, MODIFY THE PROCEDURE OR THE
//*  JCL TO ALLOCATE THE DATA SETS WITH THE APPROPRIATE DD NAMES
//*  AS SHOWN BELOW. THE GENERATOR CHECKS TO SEE IF A DATA SET
//*  HAS ALREADY BEEN ALLOCATED TO THE DD NAME BEFORE ATTEMPTING TO
//*  DYNAMICALLY ALLOCATE A DATA SET WITH THE STANDARD NAME.
//*
//*-----------------------
//*  COBOL SOURCE FILE
//*-----------------------
//EZESRC  DD DISP=(NEW,PASS),DSN=&&EZESRC,
//           UNIT=tdisk,SPACE=(CYL,(5,5,10),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=6160)
//*
//EZEDUMMY DD DUMMY,DISP=SHR,DSN=&CGHLQ..&ENV..EZEDUMMY
//*-----------------------
//*-----------------------
//*  USER DEFINED LINK EDIT CONTROL STATEMENTS
//*-----------------------
//EZELINK DD DUMMY
//*-----------------------
//*  USER-DEFINED BIND CONTROL STATEMENTS
//*-----------------------
//EZEBIND DD DSN=&BINDDSN.,DISP=(,CATLG,DELETE),
//           UNIT=tdisk,SPACE=(TRK,(1,1,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*--------------------------
//*  IMS COBOL COPY LIBRARY
//*--------------------------
//*EZECOPY DD DISP=SHR,DSM=&CGHLQ..&ENV..EZECOPY
//*-----------------------
//*  OBJECT LIBRARIES FOR GENERATED MAP GROUPS
//*-----------------------
//EZEFOBJ DD DISP=(NEW,PASS),DSN=&&EZEFOBJ,
//           UNIT=tdisk,SPACE=(TRK,(5,5,1),RLSE),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*EZEPOBJ DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEPOBJ
//*-----------------------
//*  TSO CLIST LIBRARY
//*-----------------------
//EZECLST DD DISP=SHR,DSN=NULLFILE
//*-----------------------
//*  PARTS LIST LIBRARY
//*-----------------------
//EZEPCTL DD DISP=SHR,DSN=NULLFILE
//*-----------------------
//*  MFS SOURCE LIBRARY
//*-----------------------
//*EZEMFS  DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEMFS
//*-----------------------
//*  JCL LIBRARIES
//*-----------------------
//*EZEJCLX DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEJCLX
//*EZEJCLP DD DISP=SHR,DSN=&CGHLQ..&ENV..EZEJCLP
//USR1MSL  DD DISP=SHR,DSN=&USR1MSL.
//USR2MSL  DD DISP=SHR,DSN=&USR2MSL.
//NDVRIPT  DD *
 M=USR1MSL ROMSL=USR2MSL CMDIN=EZECIN CMDOUT=EZECOUT
//EZECIN  DD *
 GENERATE MEMBER(&C1ELEMENT). SYSTEM(&ENV).
      TABLES(&TABLE). MAPS(&MAP). BATCH(NO) ;
//EZEPARM  DD UNIT=tdisk,SPACE=(TRK,1),
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=80)
//*
//**********************************************************************
//*      EXTRACT THE LINKAGE-EDITOR CONTROL STATEMENTS FROM           **
//*      THE SEQUENTIAL FILE CREATED BY THE GENERATE STEP             **
//**********************************************************************
//*
//EXTRLNK EXEC PGM=LEXTRCTR,COND=(5,LT),MAXRC=0
//STEPLIB DD DISP=SHR,DSN=&CONLIB.
//INPUT   DD DSN=&&EZEJCL,DISP=(OLD,PASS)
//OUTPUT  DD DSN=&&CONTROL,DISP=(,PASS),
//           UNIT=tdisk,SPACE=(TRK,(1,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//*
//**********************************************************************
//** ELAPCLB - COBOL PRECOMPILE/COMPILE AND LINK-EDIT                 **
//**********************************************************************
//*
//*****************************************************************
//*      PRECOMPILE THE COBOL PROGRAM                            **
//*****************************************************************
//*
//P     EXEC PGM=DSNHPC,MAXRC=4,
//      PARM=('HOST(COB2),APOSTSQL,QUOTE')
//STEPLIB DD DISP=SHR,DSN=&DSNEXIT.
//        DD DISP=SHR,DSN=&DSNLOAD.
//DBRMLIB DD DISP=OLD,DSN=&DBRMLIB.(&C1ELEMENT).
//SYSCIN  DD DISP=(NEW,PASS),DSN=&&DSNHOUT,UNIT=tdisk,
//           SPACE=(800,(&WSPC.,&WSPC)).
//SYSLIB  DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSPRINT DD DSN=&&PRPPRINT,DISP=(OLD,PASS)
//SYSUT1  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSIN   DD DISP=(OLD,PASS),DSN=&&EZESRC(&C1ELEMENT)
//*
//**********************************************************************
//** ELATCL - CICS TRANSLATE, COBOL COMPILE AND LINK-EDIT             **
//**********************************************************************
//T      EXEC PGM=DFHECP&SUFF.,MAXRC=4,
//       PARM='COBOL2,QUOTE,NOSEQ&SP&DBCS'.
//STEPLIB  DD DISP=SHR,DSN=&DFHLOAD.
//SYSPRINT DD DSN=&&TRNPRINT,DISP=(OLD,PASS)
//SYSPUNCH DD DSN=&&SYSCIN,DISP=(,PASS),
//            UNIT=tdisk,SPACE=(800,(&WSPC.,&WSPC)).
//SYSIN    DD DSN=&&DSNHOUT,DISP=(OLD,DELETE)
//*
//*
//**********************************************************************
//*      COMPILE THE COBOL PROGRAM                                    **
//**********************************************************************
//*
//C     EXEC PGM=IGYCRCTL,COND=(4,LT),MAXRC=4,
//      PARM=(NOSEQ,QUOTE,OFFSET,LIB,RES,RENT,NODYNAM,DBCS,OPT,
//     'TRUNC(BIN)','NUMPROC(NOPFD)',NOCMPR2,'DATA(&DATA)').
//STEPLIB DD DISP=SHR,DSN=&COBCOMP.
//SYSIN   DD DISP=(OLD,DELETE),DSN=&&SYSCIN
//SYSLIB  DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSLIN  DD DISP=(NEW,PASS),DSN=&&LOADSET(&C1ELEMENT),UNIT=tdisk,
//           SPACE=(800,(&WSPC.,&WSPC.,10)),FOOTPRNT=CREATE,
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//SYSPRINT DD DSN=&&COBPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT3   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT4   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT5   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT6   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT7   DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//
* **********************************************************************
//*      COMPILE ANY ADDITIONAL MAPS AND TABLES                       **
//**********************************************************************
//*
//C2     EXEC PGM=BC1PCCSP,COND=(4,LT),MAXRC=4,
//       PARM=(NOSEQ,QUOTE,OFFSET,LIB,RES,RENT,NODYNAM,DBCS,OPT,
//      'TRUNC(BIN)','NUMPROC(NOPFD)',NOCMPR2,'DATA(&DATA)').
//COBCOMP  DD DISP=SHR,DSN=&COBCOMP.
//SYSLIB   DD DISP=SHR,DSN=&CRS..SELACOPY,MONITOR=COMPONENTS
//SYSIN    DD UNIT=tdisk,SPACE=(6400,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=6400)
//SYSLIN   DD UNIT=tdisk,SPACE=(3120,(&WSPC.,&WSPC)).,
//            DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//SYSPRINT  DD UNIT=tdisk,SPACE=(3630,(&WSPC.,&WSPC)).,
//             DCB=(RECFM=FBA,LRECL=133,BLKSIZE=6251)
//GENCNTL  DD DISP=(OLD,PASS),DSN=&&CONTROL
//EZESRC   DD DISP=(OLD,PASS),DSN=&&EZESRC
//OBJLIB   DD DISP=(OLD,PASS),DSN=&&LOADSET
//PRINTLIB DD DISP=(OLD,PASS),DSN=&&CB2PRINT
//GENINFO DD *
ELEMENT=&C1ELEMENT.       KEEP THESE CARDS IN ORDER,
 COMPILER=IGYCRCTL       LEFT JUST WITH NO BLANKS
//SYSUT1  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT2  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT3  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT4  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT5  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT6  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//SYSUT7  DD SPACE=(800,(&WSPC.,&WSPC).,,,ROUND),UNIT=tdisk
//*
//*
//**********************************************************************
//*      LINK-EDIT THE COBOL PROGRAM                                  **
//*      IF THE RETURN CODE ON ALL PREVIOUS STEPS IS 4 OR LESS        **
//**********************************************************************
//*
//L      EXEC PGM=IEWL,COND=(5,LT),MAXRC=0,
//       PARM='RENT,REUS,LIST,XREF,MAP,AMODE(31),RMODE(ANY)'
//SYSLIB  DD DISP=SHR,DSN=&DFHLOAD.,MONITOR=COMPONENTS
//        DD DISP=SHR,DSN=&COBCICS.,MONITOR=COMPONENTS
//        DD DISP=SHR,DSN=&COBLIB.,MONITOR=COMPONENTS
//        DD DISP=SHR,DSN=&DSNLOAD.,MONITOR=COMPONENTS
//*       DD DISP=SHR,DSN=&RESLIB.,MONITOR=COMPONENTS
//OBJLIB  DD DISP=(OLD,DELETE),DSN=&&LOADSET,MONITOR=COMPONENTS
//     DD DISP=(OLD,DELETE),DSN=&&EZEFOBJ,MONITOR=COMPONENTS
//SELALMD DD DISP=SHR,DSN=&CRS..SELALMD,MONITOR=COMPONENTS
//SYSLMOD DD DISP=SHR,DSN=&LOADLIB.,
//       FOOTPRNT=CREATE,MONITOR=COMPONENTS
//SYSPRINT DD DSN=&&LNKPRINT,DISP=(OLD,PASS)
//SYSUT1   DD SPACE=(1024,(&WSPC.,&WSPC)).,UNIT=tdisk
//SYSLIN   DD DSN=&&CONTROL,DISP=(OLD,DELETE)
//*
//**********************************************************************
//* BIND APPLICATION PLAN IN FOREGROUND                               **
//* NOTE: ATTEMPTING TO RUN THIS STEP IN BG WILL RESULT IN RC=5       **
//**********************************************************************
//BINDFG  EXEC PGM=BC1PTMP0,COND=(8,LT),MAXRC=5,
//        PARM='&BINDDSN(&C1ELEMENT)'.
//STEPLIB  DD DISP=SHR,DSN=&DSNLOAD.
//DBRMLIB  DD DISP=SHR,DSN=&DBRMLIB.,MONITOR=COMPONENTS
//         DD DISP=SHR,DSN=&CRS..SELADBRM,MONITOR=COMPONENTS
//SYSTSPRT DD DISP=(OLD,PASS),DSN=&&BNDPRINT
//**********************************************************************
//* BIND APPLICATION PLAN IN BACKGROUND                               **
//**********************************************************************
//BINDBG  EXEC PGM=IKJEFT01,COND=((8,LT),(5,NE,BINDFG)),MAXRC=0
//STEPLIB DD DISP=SHR,DSN=&DSNLOAD.
//SYSTSIN DD DISP=SHR,DSN=&BINDDSN.(&C1ELEMENT).
//DBRMLIB DD DISP=SHR,DSN=&DBRMLIB.,MONITOR=COMPONENTS
//        DD DISP=SHR,DSN=&CRS..SELADBRM,MONITOR=COMPONENTS
//SYSTSPRT DD DISP=(OLD,PASS),DSN=&&BNDPRINT
//**********************************************************************
//* FOOTPRINT DB2 PLAN                                                **
//**********************************************************************
//FOOTDB2 EXEC PGM=BC1PCAF,COND=(8,LT),MAXRC=0,
//       PARM='DB2T,BC1PSQL1,BC1PDBFP'
//STEPLIB DD DISP=SHR,DSN=&DSNLOAD.
//DBRMLIB DD DISP=SHR,DSN=&DBRMLIB.
//        DD DISP=SHR,DSN=&CRS..SELADBRM
//BSTIPT  DD DISP=SHR,DSN=&BINDDSN.(&C1ELEMENT).
//*********************************************************************
//* INVOKE IDCAMS TO ENSURE THE BIND CNTL CARD O/P DATA SET IS DELETED*
//*********************************************************************
//IDCAMS   EXEC PGM=IDCAMS
//SYSPRINT DD DUMMY
//SYSIN    DD *
 DELETE '&BINDDSN'.
 SET MAXCC = 0
//*********************************************************************
//*  STORE OUTPUT LISTINGS IN LIST LIBRARY                           **
//*********************************************************************
//CONLIST  EXEC PGM=CONLIST,PARM=STORE,MAXRC=0,COND=EVEN
//C1LLIBO  DD DSN=&LISTLIB.,DISP=SHR,MONITOR=COMPONENTS
//C1BANNER DD UNIT=tdisk,SPACE=(TRK,1),
//            DCB=(RECFM=FBA,LRECL=121)
//LIST01   DD DSN=&&EZECOUT,DISP=(OLD,DELETE)
//LIST02   DD DSN=&&EZEPRINT,DISP=(OLD,DELETE)
//LIST03   DD DSN=&&EZEJCL,DISP=(OLD,DELETE)
//LIST04   DD DSN=&&PRPPRINT,DISP=(OLD,DELETE)
//LIST05   DD DSN=&&TRNPRINT,DISP=(OLD,DELETE)
//LIST06   DD DSN=&&COBPRINT,DISP=(OLD,DELETE)
//LIST07   DD DSN=&&CB2PRINT,DISP=(OLD,DELETE)
//LIST08   DD DSN=&&LNKPRINT,DISP=(OLD,DELETE)
//LIST09   DD DSN=&&BNDPRINT,DISP=(OLD,DELETE)
//*

The GCSP41LN CSP Processor

//************************+++ GCSP41LN +++****************************
//* GENERATE PROCESSOR THE CSP EXTENSION FACILITY.
//* EXTENSION TYPES ARE RECDEX, PROCEX AND SGRPEX.
//* THIS PROCESSOR PERFORMS THE FOLLOWING ACTIVITIES:
//* 1) ALLOCATE LISTING DATA SETS.
//* 2) WRITE A CURRENT COPY OF THE ELEMENT TO A TEMP FILE.
//* 3) ALLOCATE EZEWORK FILE.
//* 4) INVOKE CSP/AD VIA BC1PDCGB TO IMPORT THE MEMBER FROM
//* THE TEMP FILE TO THE STAGE MSL.
//* 5) WRITE LISTINGS TO LISTINGS LIBRARY.
//**********************************************************************
//*
//GCSP41LN PROC COBLIB='SYS1.COB2LIB', COBOL RUN-TIME LIBRARY00130002
//         CONLIB='iprfx.iqual.CSIQLOAD', 00140002
//         CRS='CRS210', CSP/370RS HIGH LEVEL QUALIFIER
//         CSP='CSP410', CSP/370AD HIGH LEVEL QUALIFIER
//         CSPUSER='CSPUSER', USER WORK DATASET HIGH QUALIFIER
//         CSPVSAM='CSP410', HIGH LEVEL QUALIFIER - VSAM DS
//         LISTLIB='NULLFILE', Endevor/CSP LISTINGS LIBRARY
//         NLS='LLL', NATIONAL LANGUAGE QUALIFIER
//         WORKDISK='tdisk', UNITNAME FOR TEMP DATASETS
//         USR1MSL='NULLFILE', READ/WRITE MSL
//         USR2MSL='NULLFILE', READ-ONLY MSL
//         vvolser=''VOLSER FOR VSAM EZEWORK
//**********************************************************************
//* STEP1 - ALLOCATE AND INITIALIZE ALL THE TEMP DATA SETS            **
//**********************************************************************
//INITTDS EXEC PGM=BC1PDSIN,MAXRC=0
//C1INIT01  DD DISP=(,PASS),DSN=&&AMSLST,
//             UNIT=&WORKDISK.,SPACE=(TRK,(5,2),RLSE),
//             DCB=(RECFM=FBA,LRECL=121,BLKSIZE=1210)
//C1INIT02  DD DISP=(,PASS),DSN=&&LOGLST,
//             UNIT=&WORKDISK.,SPACE=(TRK,(5,2),RLSE),
//             DCB=(RECFM=FBA,LRECL=121,BLKSIZE=1210)
//C1INIT03  DD DISP=(,PASS),DSN=&&CMDLST,
//             UNIT=&WORKDISK.,SPACE=(TRK,(5,2),RLSE),
//             DCB=(RECFM=VBA,LRECL=650,BLKSIZE=654)
//C1INIT04  DD DISP=(,PASS),DSN=&&TEMPSRC,
//             UNIT=&WORKDISK.,SPACE=(TRK,(5,2),RLSE),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=3120)
//**********************************************************************
//* STEP2 - WRITE A CURRENT COPY OF THE ELEMENT TO THE ESF DATA SET   **
//**********************************************************************
//CONWRT EXEC PGM=CONWRITE,PARM='EXPINCL(N)',COND=(0,LT),MAXRC=0
//ELMOUT DD DISP=(OLD,PASS),DSN=&&TEMPSRC

//**********************************************************************
//* STEP3 - ALLOCATE THE EZEWORK VSAM FILE                            **
//**********************************************************************
//ALLOWRK  EXEC PGM=IDCAMS,COND=(0,LT),MAXRC=0
//SYSPRINT DD DISP=(OLD,PASS),DSN=&&AMSLST
//SYSIN DD *
 DELETE '&CSPUSER..EZEWORK' PURGE
 SET MAXCC=0
 DEFINE CLUSTER (NAME('&CSPUSER..EZEWORK') -
        VOL(&vvolser). -
        CYLINDERS(02 01) -
        KEYS(14 0) -
        RECORDSIZE(272 272) -
        SHR (3 3) -
      INDEXED            ) -
 DATA  (NAME('&CSPUSER..EZEWORK.DATA')) -
 INDEX (NAME('&CSPUSER..EZEWORK.INDEX'))
//**********************************************************************
//* STEP4 - INVOKE CSP/AD VIA E/CSP UTILITY TO PERFORM CSP COMMAND    **
//**********************************************************************
//IMPORT EXEC PGM=BC1PDCGB,COND=(0,LT),MAXRC=8
//STEPLIB DD DISP=SHR,DSN=&CRS..SELALMD
//        DD DISP=SHR,DSN=&CSP..SEZELMD
//*       DD DISP=SHR,DSN=EDC.SEDCLINK
//*       DD DISP=SHR,DSN=PLI.SIBMLINK
//        DD DISP=SHR,DSN=&COBLIB.
//        DD DISP=SHR,DSN=&CONLIB.
//**********************************************************************
//* CSP MESSAGE AND TUTORIAL FILES                                    **
//**********************************************************************
//EZECOMM  DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZECOMM
//*----------------------------------------------------------
//* THE FOLLOWING MESSAGE FILES SHOULD BE PRE-ALLOCATED
//*----------------------------------------------------------
//*EZEDMSG DD DISP=SHR,DSN=&CSPVSAM..FZEMSG
//*EZEEMSG DD DISP=SHR,DSN=&CSPVSAM..&NLS..EZEMSG
//*EZETES  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZETUTOR
//*EZEMAP  DD DISP=SHR,DSN=&CSPVSAM..&NLS..FZEMAPDS

//**********************************************************************
//* STAGE MEMBER SPECIFICATION LIBRARY (R/W MSL)                      **
//**********************************************************************
//USR1MSL DD DISP=SHR,DSN=&USR1MSL.
//USR2MSL DD DISP=SHR,DSN=&USR2MSL.
//*********************************************************************
//* CSP TEMPORARY WORK FILE
//*********************************************************************
//EZEWORK DD DISP=SHR,DSN=&CSPUSER..EZEWORK
//EZEWRK1 DD UNIT=&WORKDISK.,SPACE=(CYL,(2,1)),
//           DCB=(RECFM=FB,LRECL=80,BLKSIZE=3200)
//*********************************************************************
//* CSP ESF SERIAL FILE                                              **
//*********************************************************************
//TEMPSRC DD DISP=(OLD,DELETE),DSN=&&TEMPSRC
//*********************************************************************
//* CSP INVOCATION PARAMETER                                         **
//*********************************************************************
//NDVRIPT DD *
M=USR1MSL ROMSL=USR2MSL CMDIN=EZECIN CMDOUT=EZECOUT
/*
//*********************************************************************
//* CSP LOG AND LISTINGS FILES                                       **
//*********************************************************************
//EZECOUT  DD DISP=(OLD,PASS),DSN=&&LOGLST
//EZEPRINT DD DISP=(OLD,PASS),DSN=&&CMDLST
//SYSPRINT DD SYSOUT=*
//*********************************************************************
//* CSP COMMAND INPUT                                               ** 
//*********************************************************************
//EZECIN DD *
IMPORT SERIAL(TEMPSRC) REPLACE(Y);
 /*
//**********************************************************************
//* STEP5 - STORE THE LISTINGS FROM THE PREVIOUS STEPS                **
//**********************************************************************
//STRLST EXEC PGM=CONLIST,COND=EVEN,MAXRC=0,PARM=STORE
//C1LLIBO  DD DSN=&LISTLIB.,DISP=SHR
//C1BANNER DD UNIT=&WORKDISK.,SPACE=(TRK,(1,1)),
//            DCB=(RECFM=FBA,LRECL=121,BLKSIZE=6171)
//LIST01   DD DISP=(OLD,DELETE),DSN=&&AMSLST
//LIST02   DD DISP=(OLD,DELETE),DSN=&&LOGLST
//LIST03   DD DISP=(OLD,DELETE),DSN=&&CMDLST
//*

Was this helpful?

Please log in to post comments.

  1. OLLIVIER DORSO
    2016-12-30 05:17

    Library "iprfx.iqual.JCL" doesn't exist, this must be changed by "iprfx.iqual.CSIQSAMP" where the samples are stored.

    1. MARGARET ALLEN
      2017-01-19 05:38

      The references to "iprfx.iqual.JCL"  have been changed to "iprfx.iqual.CSIQSAMP.

      Thanks.

  2. Bernie Beriau
    2018-11-07 03:56

    If the processor name that invokes JCLCHECK is called JCLCHECK, the processor step invoking JCLCHECK will fail with S406-04 message code. I think this should be included in the documentation as a note. I created a processor called JCLCHECK and when executed, failed in the JCLCHECK step S406.

    1. Sam Beckwith
      2018-11-08 04:22

      Thanks for pointing this out, Bernie. I'll make a change.