JCL DAY 2 4/8/2015 3 ER/CORP/CRS/OS02/003-2 EXEC STATEMENTS PGM COND PROC PARM ACCT REGION ADDRSPC TIME PERFORM 4/8/2015 4 ER/CORP/CRS/OS02/003-2 IMPORTANT EXEC PARAMETERS positional parameters (PGM & PROC) ex. //STEP1 EXEC PGM=IEFBR14 ex. //STEP1 EXEC PROC=MYPROC • The PGM parameter identifies the name of the program that is to be executed. • The PROC parameter identifies the name of the procedure that is to be called. 4/8/2015 5 ER/CORP/CRS/OS02/003-2 SEARCH SEQUENCE OF A PROGRAM JOB PACK AREA PAGEABLE LINK PACK AREA (PLPA) JOB LIBRARY / STEP LIBRARY FIXED LINK PACK AREA - FLPA MODIFIED LINK PACK AREA - MLPA SYS1.LINKLIB PGM NOT FOUND 4/8/2015 6 ER/CORP/CRS/OS02/003-2 MVS 370 memory map Virtual Storage SQA 16 MB PLPA Common area CSA Unallocated storage Private area User Region SWA System Region System area Nucleus 4/8/2015 7 ER/CORP/CRS/OS02/003-2 0 MB IMPORTANT EXEC PARAMETERS keyword parameters (PARM) ex. //STEP1 EXEC PGM=IEBUPDT,PARM=MOD • The PARM parameter is used to supply information to a program as it executes. 4/8/2015 8 ER/CORP/CRS/OS02/003-2 IMPORTANT EXEC PARAMETERS keyword parameters (ADDRSPC) ex. //STEP1 EXEC PGM=IEBUPDT, // ADDRSPC=VIRT • The ADDRSPC parameter is to indicate to the system that the job step is to use either VIRT (virtual) or REAL (real) storage. • By default it is virtual. 4/8/2015 9 ER/CORP/CRS/OS02/003-2 IMPORTANT EXEC PARAMETERS keyword parameters (COND) ex. //STEP3 EXEC PGM=IEBUPDT,COND=(8,LE,STEP1) • The COND Permits the execution of steps to depend on the return code from the previous steps. • The question should be is 8 less than the RC code of STEP1. If Yes then Bypass STEP3 If No Execute STEP3 • The COND parameter is also a JOB parameter. ER/CORP/CRS/OS02/003-2 4/8/2015 10 IMPORTANT EXEC PARAMETERS keyword parameters (COND) COND = TRUE BYPASS FALSE EXECUTE 4/8/2015 11 ER/CORP/CRS/OS02/003-2 COND parameter in detail Only code in the exec statement not in job statement Format : COND=( 0/4/6/8/12/16 , GT/GE/LT/LE/EQ/NE , step name , EVEN/ONLY ) RC comparison code (0 - 4095) Condition EVEN : step will be executed even if previous steps terminate abnormally ONLY : step will be executed only if previous steps 4/8/2015 terminate abnormally. ER/CORP/CRS/OS02/003-2 12 COND parameter examples (in JOB statement) 000100 //INF6244A JOB COND=(4,LT) 000200 //STEP1 EXEC PGM=IEFBR14 000300 //STEP2 EXEC PGM=IFBR14 000400 //STEP3 EXEC PGM=IEFBR14 • STEP1 executes with RC = 0 • STEP2 executes with RC *S806 that is it is greater than 4 • Job terminates ER/CORP/CRS/OS02/003-2 4/8/2015 13 COND parameter examples (in EXEC statement) 000100 //INF6244A JOB 000200 //STEP1 EXEC PGM=IEFBR14 000300 //STEP2 EXEC PGM=IEFBR14,COND=(0,EQ,STEP1) • STEP1 executes with RC = 0 • STEP2 does not execute ER/CORP/CRS/OS02/003-2 4/8/2015 14 COND parameter examples (in EXEC statement) 000100 //INF6244A JOB 000200 //STEP1 EXEC PGM=IEFBR14 000300 //STEP2 EXEC PGM=IEFBR14,COND=ONLY • STEP1 executes with RC = 0 • STEP2 does not execute 000100 //INF6244A JOB 000200 //STEP1 EXEC PGM=IFBR14 000210 //STEP2 EXEC PGM=IEFBR14 000220 //STEP3 EXEC PGM=IEFBR14,COND=ONLY • STEP1 abends with RC = *S806 • STEP2 does not execute ( if a single step abends all other steps are bypassed if no COND statement is there ) • STEP3 executes with RC = 0 ER/CORP/CRS/OS02/003-2 4/8/2015 15 COND parameter examples (in EXEC statement) 000100 //INF6244A JOB 000210 //STEP1 EXEC PGM=IEFBR14 000300 //STEP2 EXEC PGM=IEFBR14,COND=EVEN • STEP1 executes with RC = 0 • STEP2 executes with RC = 0 000100 //INF6244A JOB 000200 //STEP1 EXEC PGM=IFBR14 000210 //STEP2 EXEC PGM=IEFBR14 000220 //STEP3 EXEC PGM=IEFBR14,COND=EVEN • STEP1 abends with RC = *S806 • STEP2 does not execute ( if a single step abends all other steps are bypassed if no COND statement is there ) • STEP3 executes with RC = 0 ER/CORP/CRS/OS02/003-2 4/8/2015 16 COND parameter examples (in EXEC statement) //INF6244A JOB //STEP1 EXEC PGM=IEFBR14 //STEP2 EXEC PGM=IEFBR14 //STEP3 EXEC PGM=IEFBR14, // COND=((0,NE,STEP2),ONLY) • STEP1 executes with RC = 0 • STEP2 executes with RC = 0 • STEP3 does not execute 000100 //INF6244A JOB 000200 //STEP1 EXEC PGM=IEFBR14 000210 //STEP2 EXEC PGM=IEFBR14 000220 //STEP3 EXEC PGM=IEFBR14, 000230 // COND=((0,NE,STEP2)) • STEP1 executes with RC = 0 • STEP2 executes with RC = 0 • STEP3 executes with RC = 0 ER/CORP/CRS/OS02/003-2 4/8/2015 17 COND parameter examples (in EXEC statement) 000100 //INF6244A JOB 000200 //STEP1 EXEC PGM=IEFBR14 000210 //STEP2 EXEC PGM=IEFBR14 000220 //STEP3 EXEC PGM=IEFBR14, 000230 // COND=((0,NE,STEP2),(0,NE,STEP1)) • STEP1 executes with RC = 0 • STEP2 executes with RC = 0 • STEP3 executes with RC = 0 000100 //INF6244A JOB 000200 //STEP1 EXEC PGM=IEFBR14 000210 //STEP2 EXEC PGM=IEFBR14 000220 //STEP3 EXEC PGM=IEFBR14, 000230 // COND=((0,NE,STEP2),(0,EQ,STEP1)) • STEP1 executes with RC = 0 • STEP2 executes with RC = 0 • STEP3 does not execute ER/CORP/CRS/OS02/003-2 4/8/2015 18 COND parameter examples (STEP overriding JOB) 000100 //INF6244A JOB COND=(0,NE) 000200 //STEP1 EXEC PGM=IEFBR14 000210 //STEP2 EXEC PGM=IEFBR14 000220 //STEP3 EXEC PGM=IEFBR14 • STEP1 executes with RC = 0 • STEP2 executes with RC = 0 • STEP3 executes with RC = 0 000100 //INF6244A JOB COND=(0,NE) 000200 //STEP1 EXEC PGM=IEFBR14 000210 //STEP2 EXEC PGM=IEFBR14 000220 //STEP3 EXEC PGM=IEFBR14,COND=(0,EQ,STEP2) • STEP1 executes with RC = 0 • STEP2 executes with RC = 0 • STEP3 executes with RC = FFLUSH ER/CORP/CRS/OS02/003-2 4/8/2015 19 IMPORTANT EXEC PARAMETERS keyword parameters (IF/THEN/ELSE/ENDIF) ex. // IF (STEPA.RC GE 4) THEN //jcl statements // ELSE //jcl statements // ENDIF • The IF/THEN/ELSE/ENDIF statement construct provides a simple means of selectively executing job steps. • It is available in Release 4 or later , of MVS/ESA and eliminates the need to struggle with the COND parameter. ER/CORP/CRS/OS02/003-2 4/8/2015 20 IF/THEN/ELSE/ENDIF parameter examples 000100 //INF6244A JOB 2933100P,AMLAN,MSGCLASS=A,CLASS=A 000120 //STEP1 EXEC PGM=IEFBR14 000121 // IF (STEP1.RC GT 0) THEN 000130 //STEP3 EXEC PGM=IEFBR14 000150 //DD1 DD DSN=INF6244.TRUE.PS,DISP=(NEW,CATLG), 000160 // VOL=SER=INUSR2, 000170 // SPACE=(TRK,(1,1)), 000180 // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) 000190 // ELSE 000191 //STEP4 EXEC PGM=IEFBR14 000200 //DD2 DD DSN=INF6244.FALSE.PS,DISP=(NEW,CATLG), 000300 // VOL=SER=INUSR2, 000400 // SPACE=(TRK,(1,1)), 000500 // DCB=(LRECL=80,BLKSIZE=800,RECFM=FB) 000600 // ENDIF STEPNAME PROCSTEP RC 000610 /* STEP1 00 STEP3 FLUSH STEP4 ER/CORP/CRS/OS02/003-2 00 4/8/2015 21 COMMON keyword PARAMETERS in JOB & EXEC TIME COND REGION ER/CORP/CRS/OS02/003-2 4/8/2015 22 DD STATEMENTS ddname DD * VOL DCB DSN UNIT DISP SYSMDUMP REFERBACK STEPLIB DATA SYSOUT DUMMY DLM SYSUDUMP SYSABEND JOBLIB ER/CORP/CRS/OS02/003-2 4/8/2015 23 DSN • The name of the data set • Simple Name : 1 to 8 chars • Qualified Name : separated by periods each name 1 to 8 chars total 44 characters including periods • Temporary data sets : &&TEMP or do not mention DSN parameter • Refer back : DSN=*.STEP1.DD1 ER/CORP/CRS/OS02/003-2 4/8/2015 24 DISP DISP= NEW OLD ,DELETE ,KEEP ,DELETE ,KEEP SHR MOD ,CATLG ,UNCATLG ,PASS ,CATLG ,UNCATLG ER/CORP/CRS/OS02/003-2 4/8/2015 25 DCB LRECL=n (VALUE IN BYTES) RECFM=(F/FB/V/VB/U) BLKSIZE= multiple of LRECL DSORG=(PS/PO/DA) ER/CORP/CRS/OS02/003-2 4/8/2015 26 SPACE SPACE=(space units,(primary,secondary,dir),RLSE) space unit - TRK(tracks)/CYL(cylinders)/BLOCKSIZE in bytes eg: SPACE=(1024,(100,200) SPACE=(TRK,(10,5) - allocate 10 tracks primarily and if required as secondary allocation 5 tracks ER/CORP/CRS/OS02/003-2 4/8/2015 27 UNIT • Hardware address • Type • Group // // // UNIT=0320 OR UNIT=3390 OR UNIT=SYSDA To use the same unit that has been used by prior DD statement // UNIT=AFF=ddname ER/CORP/CRS/OS02/003-2 4/8/2015 28 VOL • It is used to specify a disk volume or specific tapes. // VOL=SER=INUSR2,UNIT=SYSDA To referback a volume used by some prior DD statement use: // VOL=REF=ddname ER/CORP/CRS/OS02/003-2 4/8/2015 29 SYSOUT • SYSOUT is used to route output to a device. // DDNAME DD SYSOUT=CLASS // DDNAME DD SYSOUT=A If you want to send the output to the same device described by MSGCLASS of the job use // DDNAME DD SYSOUT=* ER/CORP/CRS/OS02/003-2 4/8/2015 30 JOBLIB STATEMENTS ex. //INFOSYS1 JOB //JOBLIB DD DSN=INFOSYS.COMPLIB.LOAD, • // DISP = SHR DISP = (what should be the disposition) • //STEP1 EXEC PGM=INHOUSE • The JOBLIB statement defines the library where the program is residing. It is placed after the JOB statement and is effective for every JOB steps. ER/CORP/CRS/OS02/003-2 4/8/2015 31 STEPLIB STATEMENTS ex. //STEP1 EXEC PGM=INHOUSE //STEPLIB DD DSN=INFOSYS.COMPLIB.LOAD, • // DISP = SHR (what should be the disposition) • The STEPLIB statement defines the library where the program is residing. It is placed after the EXEC statement and is effective for that particular step and overrides any JOBLIB statement. ER/CORP/CRS/OS02/003-2 4/8/2015 32 The first JCL to create a PS. //AMLANX JOB 1234,AMLAN,CLASS=A,MSGCLASS=(1,1) TO CREATE PS //STEP1 EXEC PGM=IEFBR14 //PS1 DD DSN=AMLAN.FLOWER.ROSE,UNIT=SYSDA,VOL=SER=INUSR2, // DCB=(LRECL=80,RECFM=FB,BLKSIZE=800),SPACE=(TRK,(1,1)), // DISP=(NEW,CATLG) ER/CORP/CRS/OS02/003-2 4/8/2015 33 That’s all for DAY 2 ER/CORP/CRS/OS02/003-2 4/8/2015 34