You are on page 1of 32

JCL

DAY 2

10/15/08 1

ER/CORP/CRS/OS02/003-2
EXEC STATEMENTS

PGM COND

PROC PARM

ACCT REGION

ADDRSPC TIME

PERFORM

10/15/08 2

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.
10/15/08 3

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 SYS1.LINKLIB

PGM NOT
MODIFIED LINK PACK
FOUND
AREA - MLPA
10/15/08 4

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 10/15/08 5


System area
Nucleus
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.

10/15/08 6

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.

10/15/08 7

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.

10/15/08 8

ER/CORP/CRS/OS02/003-2
IMPORTANT EXEC PARAMETERS
keyword parameters
(COND)

TRUE
COND = BYPASS

FALSE

EXECUTE

10/15/08 9

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 Condition
code
(0 - 4095)
EVEN : step will be executed even if previous steps
terminate abnormally

ONLY : step will be executed only if previous steps


terminate abnormally. 10/15/08
10
ER/CORP/CRS/OS02/003-2
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

10/15/08
11
ER/CORP/CRS/OS02/003-2
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

10/15/08
12
ER/CORP/CRS/OS02/003-2
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 10/15/08
13
ER/CORP/CRS/OS02/003-2
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


10/15/08
14
ER/CORP/CRS/OS02/003-2
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
000100 //INF6244A JOB
• STEP3 does not execute
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 10/15/08
15
ER/CORP/CRS/OS02/003-2
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
000100 //INF6244A JOB
• STEP3 executes with RC = 0
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 10/15/08
16
ER/CORP/CRS/OS02/003-2
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
10/15/08
• STEP3 executes with RC = FFLUSH 17
ER/CORP/CRS/OS02/003-2
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.
10/15/08
18
ER/CORP/CRS/OS02/003-2
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
000610 /* STEPNAME PROCSTEP RC
STEP1 00
STEP3 FLUSH 10/15/08
19
STEP4
ER/CORP/CRS/OS02/003-2 00
COMMON keyword PARAMETERS
in JOB & EXEC

TIME
COND
REGION

10/15/08
20
ER/CORP/CRS/OS02/003-2
DD STATEMENTS
ddname DD *
VOL DATA
DCB SYSOUT
DSN DUMMY
UNIT DLM
DISP SYSUDUMP
SYSMDUMP SYSABEND
REFERBACK JOBLIB
STEPLIB
10/15/08
21
ER/CORP/CRS/OS02/003-2
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


10/15/08
22
ER/CORP/CRS/OS02/003-2
DISP

NEW ,DELETE ,DELETE


OLD ,KEEP ,KEEP
DISP= SHR ,CATLG ,CATLG
MOD ,UNCATLG ,UNCATLG
,PASS

10/15/08
23
ER/CORP/CRS/OS02/003-2
DCB

LRECL=n (VALUE IN BYTES)


RECFM=(F/FB/V/VB/U)
BLKSIZE= multiple of LRECL
DSORG=(PS/PO/DA)

10/15/08
24
ER/CORP/CRS/OS02/003-2
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 10/15/08
25
ER/CORP/CRS/OS02/003-2
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
10/15/08
26
ER/CORP/CRS/OS02/003-2
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

10/15/08
27
ER/CORP/CRS/OS02/003-2
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=*

10/15/08
28
ER/CORP/CRS/OS02/003-2
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.

10/15/08
29
ER/CORP/CRS/OS02/003-2
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.

10/15/08
30
ER/CORP/CRS/OS02/003-2
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)

10/15/08
31
ER/CORP/CRS/OS02/003-2
That’s all for

DAY

2
10/15/08
32
ER/CORP/CRS/OS02/003-2

You might also like