This is what a procedure looks like when it is placed into a procedure library, such as SYS1.PROCLIB. This procedure will be merged with the JCL that you write to create a full set of working JCL for a job. This procedure only handles a compile and link; it does not "go". The first step in this procedure is not a compile step - it copies the input source program to a temporary dataset for use by the compiler. Look for the three internal steps in this procedure. These are the step names that you must use in your own JCL, when you wish to over-ride or replace DDnames from these steps. Example provided by Kevin Solomon. ---------------------------------------------------------------------- //********************************************************************* //* PROCEDURE TO COMPILE AND LINK A BATCH IBM COBOL FOR MVS MODULE //********************************************************************* //BCOB PROC SYSIN='NOT-SPECIFIED', ** INPUT SOURCE PDS // CSECT=, ** MEMBER NAME // SYSLMOD='NOT-SPECIFIED', ** OUTPUT LOAD PDS // SYSCLIB='SYSP.CICS.UR.SDFHCOB', ** CICS LIBRARY DFHEIBLK // SLIB0='SXS0.UA.SYSALL.GLOBAL.STAGE1.IDDCOPY', // SLIB1='SYSP.NULL.SOURCE', ** ENDEVOR // SLIB2='IT0.SYSALL.GLOBAL.IDDCOPY', ** ENDEVOR // SLIB3='QA0.SYSALL.GLOBAL.IDDCOPY', ** IDDCOPY // SLIB4='PROD0.SYSALL.GLOBAL.IDDCOPY', ** AND // SLIB5='SXS0.UA.SYSALL.GLOBAL.STAGE1.COPYBOOK', ** COPYBOOK // SLIB6='SYSP.NULL.SOURCE', ** LIBRARIES // SLIB7='IT0.SYSALL.GLOBAL.COPYBOOK', ** LIBRARIES // SLIB8='QA0SUB.SYSALL.GLOBAL.COPYBOOK', // SLIB9='QA0.SYSALL.GLOBAL.COPYBOOK', ** // SLIBA='PROD0.SYSALL.GLOBAL.COPYBOOK', ** // SYSLIB1='SYSP.NULL.SOURCE', ** USER COMPILE SYSLIB // SYSLIB2='SYSP.NULL.SOURCE', ** USER COMPILE SYSLIB // SYSLIB3='SYSP.NULL.SOURCE', ** USER COMPILE SYSLIB // SYSLIB4='SYSP.NULL.SOURCE', ** USER COMPILE SYSLIB // SYSLIB5='SYSP.NULL.SOURCE', ** USER COMPILE SYSLIB // SYSLIB6='SYSP.NULL.SOURCE', ** USER COMPILE SYSLIB // CPARM=, ** COMPILE PARM // LPARM='AMODE=31,RMODE=ANY' ** LINK PARM //********************************************************************* //* COPY SOURCE INPUT TO TEMPORARY DATASET //********************************************************************* //GENER EXEC PGM=FASTGENR //SYSUT1 DD DSN=&SYSIN(&CSECT),DISP=SHR //SYSUT2 DD DSN=&&COBSRC,DISP=(,PASS,DELETE), // UNIT=SYSDA,SPACE=(CYL,(1,1)), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=23440) //SYSPRINT DD DUMMY //SYSIN DD DUMMY //********************************************************************* //* EXECUTE IBM COBOL FOR MVS AND VM COMPILER //********************************************************************* //COB EXEC PGM=IGYCRCTL,COND=(0,LT,GENER), // PARM=(SSRANGE,DATA(24),&CPARM) //STEPLIB DD DSN=SYSP.HOST.NULLOAD,DISP=SHR // INCLUDE MEMBER=SYIGY00 //* ADDED TO MASTER JCLLIB 110697 * SWCLASS * //* REVISED TO VERSION V1R2M1 280300 * SWCLASS * //* REVISED TO VERSION V2R1M1 010600 * SWCLASS * // DD DISP=SHR,DSN=SYSP.IGY.V2R1M0.SIGYCOMP //SYSLIB DD DSN=&SYSLIB1,DISP=SHR // DD DSN=&SYSLIB2,DISP=SHR // DD DSN=&SYSLIB3,DISP=SHR // DD DSN=&SYSLIB4,DISP=SHR // INCLUDE MEMBER=SYNDVRA5 // DD DSN=SYSP.TSS.QA.TSSOPMAT,DISP=SHR // INCLUDE MEMBER=SYNDVRA6 // DD DSN=SYSP.TSS.V5R0M0.TSSOPMAT,DISP=SHR // DD DSN=&SLIB0,DISP=SHR // DD DSN=&SLIB1,DISP=SHR // DD DSN=&SLIB2,DISP=SHR // DD DSN=&SLIB3,DISP=SHR // DD DSN=&SLIB4,DISP=SHR // DD DSN=&SLIB5,DISP=SHR // DD DSN=&SLIB6,DISP=SHR // DD DSN=&SLIB7,DISP=SHR // DD DSN=&SLIB8,DISP=SHR // DD DSN=&SLIB9,DISP=SHR // DD DSN=&SLIBA,DISP=SHR // INCLUDE MEMBER=SYMQS21 //* ADDED TO MASTER JCLLIB 07APR00 * * //* UPGRADE MQN1 TO V2.1 27MAY00 * * //* DD DISP=SHR,DSN=SYSP.MQS.V210.SCSQMACS // DD DISP=SHR,DSN=SYSP.MQS.V2R1M0.SCSQCOBC //* DD DISP=SHR,DSN=SYSP.MQS.V210.SCSQPLIC // INCLUDE MEMBER=SYCEE03 //* ADDED TO MASTER JCLLIB 03JUN97 * SWCLASS * 00010000 // DD DSN=SYSP.CEE.V2R8M0.SCEESAMP,DISP=SHR 00020003 // DD DSN=&SYSCLIB,DISP=SHR // DD DSN=&SYSLIB5,DISP=SHR // DD DSN=&SYSLIB6,DISP=SHR //SYSLIN DD DSN=&&OBJECT,DISP=(,PASS),UNIT=SYSDA, // DCB=(LRECL=80,BLKSIZE=3200,RECFM=FB),SPACE=(CYL,(1,1)) //SYSIN DD DSN=&&COBSRC,DISP=(OLD,DELETE) //SYSIN1 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSIN2 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT4 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT5 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT6 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSUT7 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSPRINT DD SYSOUT=* //********************************************************************* //* LINKAGE EDITOR TO CREATE AN EXECUTABLE LOAD MODULE //********************************************************************* //LKED EXEC PGM=HEWL, // COND=((0,LT,GENER),(8,LE,COB)), // PARM=(RENT,LIST,LET,XREF,'&LPARM') //SYSPRINT DD SYSOUT=* //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(1,1)) //SYSLIB DD DSN=PROD0.DUMMY,DISP=SHR // INCLUDE MEMBER=SYCEE01 //* ADDED TO MASTER JCLLIB 03JUN97 * SWCLASS * 00010000 // DD DSN=SYSP.CEE.V2R8M0.SCEELKED,DISP=SHR 00020003 // INCLUDE MEMBER=SYCAPC00 //* NETRON/CAP V208 ADDED 250697 SWADPM // DD DISP=SHR,DSN=SYSP.NETRON.V208.CICSLOAD // INCLUDE MEMBER=SYCAPL00 //* NETRON/CAP V208 ADDED 250697 SWADPM // DD DISP=SHR,DSN=SYSP.NETRON.V208.LOAD // INCLUDE MEMBER=SYNDVRA4 //MQAPI DD DSN=HD.PROD.LOAD,DISP=SHR //SYSLMOD DD DSN=&SYSLMOD(&CSECT),DISP=SHR //SYSLIN DD DSN=&&OBJECT,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //********************************************************************* //* END OF BCOB PROCEDURE //*********************************************************************