Here is an invented example of a JCL procedure:
//LOAF PROC APARM=, // ACREAGE='OLD.MCDONALD.FARM', // BTIME=10 // CCOND=, // CREGION=784K //ASTEP EXEC PGM=FARM,PARM=&APARM,REGION=256K,TIME=(0,6) //STEPLIB DD DSN=RURAL.LOADLIB,DISP=SHR //ACRE DD DSN=&ACREAGE,DISP=SHR //CROP DD DSN=&&CROP,UNIT=SYSALLDA,SPACE=(TRK,(600,200)), // DISP=(NEW,PASS) //PRINTER DD SYSOUT=* //BSTEP EXEC PGM=MILL,COND=(13,LT,ASTEP),TIME=(0,&BTIME),REGION=512K //STEPLIB DD DSN=MIDDLE.LOADLIB,DISP=SHR //GRAIN DD DSN=&&CROP,UNIT=SYSALLDA,DISP=(OLD,DELETE) //PRODUCT DD DSN=MILL.PRODUCT,UNIT=SYSALLDA,SPACE=(TRK,(500,100)), // DISP=(NEW,KEEP,DELETE) //REPORT DD SYSOUT=* //CSTEP EXEC PGM=OVEN,COND=&COND,REGION=&CREGION,TIME=(0,8) //STEPLIB DD DSN=BAKERY.LOADLIB,DISP=SHR //FLOUR DD DSN=MILL.PRODUCT,UNIT=SYSALLDA,SPACE=(TRK,(20,100), // DISP=(NEW,CATLG,DELETE) //BREAD DD DSN=BAKED.GOODS,UNIT=SYSALLDA,SPACE=(TRK,(400,80)), // DISP=(NEW,CATLG,DELETE) //OUTPUT DD SYSOUT=* // PEND
Notice that this is an in-stream procedure.
When we make changes to a JCL procedure, if there is a symbolic parameter that can be used to make the change, it should be used rather than make the change in some other fashion.
In each of the following parts, you will need one EXEC statement and perhaps one or more DD statements.