10/26/2015 3 er/corp/crs/os02/003-3 jcl day 3. 10/26/2015 4 er/corp/crs/os02/003-3 procedures it is...
TRANSCRIPT
04/21/23 1
ER/CORP/CRS/OS02/003-3
JCL
DAY 3
04/21/23 2
ER/CORP/CRS/OS02/003-3
PROCEDURES
It is a prepacked JCL.
JCL needed by many different users
A JCL executed on a repetitive basis
JCL often repeated within the execution of a single job
04/21/23 3
ER/CORP/CRS/OS02/003-3
TYPE OF PROCEDURES
• In-stream procedures Coded in the executing job max of 15 per JOB
• Catalogued Procedure Member of a PDS (procedure library) max 255 steps
04/21/23 4
ER/CORP/CRS/OS02/003-3
Invoking a Procedure
// EXEC procname
// EXEC PROC=procname
eg:
//name1 EXEC MYPROC
//name1 EXEC PROC=MYPROC
04/21/23 5
ER/CORP/CRS/OS02/003-3
JCLLIBSpecifies the names of the private libraries the system is to search for:Procedures named on any EXEC statement
JCL referenced by the INCLUDE statement (after release 4)
ex: // INCLUDE MEMBER=MYJCL
• The JCLLIB statement must be placed before the first EXEC
statement in the job
// [name] JCLLIB ORDER=(library[,library]....)//MYLIB JCLLIB ORDER=(MYPROC.JCL.PROCLIB,// MYPROC.JCL.PROCLIB1)
04/21/23 6
ER/CORP/CRS/OS02/003-3
PROCEDURES must not contain :
1) JOB statement X 2) EXEC statement invoking a procedure 3) JOBLIB DD statement 4) DD * , DD DATA - In-stream data 5) /* delimiter statement 6) // Null statement 7) JES statements 8) PEND statement (for cataloged procedures)
04/21/23 7
ER/CORP/CRS/OS02/003-3
CATALOGED PROCEDURE
• It must be a member of PDS
• PEND statement is not permitted
• It can have a maximum of 255 steps
• The name of the library (PDS) should be specified
if cataloged library is not in the system defined
library (SYS1.PROCLIB) using JES JOBPARM
statement or JCLLIB statement
04/21/23 8
ER/CORP/CRS/OS02/003-3
In-stream procedure
• It must begin with a PROC statement and end with a PEND
statement
• It should be coded before the first EXEC statement invoking
the instream procedure
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000210 //PROC1 PROC 000220 //STEP2 EXEC PGM=IEFBR14 000300 //DD1 DD DSN=&&TEMP,SPACE=(TRK,(1,1)), 000400 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80),VOL=SER=INUSR3, 000500 // DISP=(NEW,KEEP),UNIT=SYSDA 000600 // PEND 000610 //STEP1 EXEC PROC1 000700 /*
04/21/23 9
ER/CORP/CRS/OS02/003-3
Cataloged procedure• It must begin with a PROC statement and must not contain a
PEND statement
• It must be cataloged in order to access it that is it must be a
member of a PDS.
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000110 //LIB1 JCLLIB ORDER=(INF6244.JCL.SOURCE) 000260 //STEP1 EXEC MYPROC
000200 //MYPROC PROC 000210 //STEP2 EXEC PGM=IEFBR14 000220 //DD1 DD DSN=&&TEMP,SPACE=(TRK,(1,1)), 000230 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80),VOL=SER=INUSR3, 000240 // DISP=(NEW,KEEP),UNIT=SYSDA
• Cataloged procedure:
• Cataloged procedure called through a JCL :
04/21/23 10
ER/CORP/CRS/OS02/003-3
Questions ??
If a JCL has two an instream procedure and a cataloged procedure with the same name which one will be executed ?
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000110 //LIB1 JCLLIB ORDER=(INF6244.JCL.SOURCE) 000120 //MYPROC PROC 000130 //STEP1 EXEC PGM=IEFBR14 000140 //DD1 DD DSN=INF6244.TEST.CAT,SPACE=(TRK,(1,1)), 000150 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80),VOL=SER=INUSR3,000160 // DISP=(NEW,DELETE),UNIT=SYSDA 000170 // PEND 000180 //STEP1 EXEC MYPROC 000190 /*
Answer :Instream procedure will be executed
04/21/23 11
ER/CORP/CRS/OS02/003-3
Questions ??
If a JCL has two an instream procedure and a cataloged procedure with the same name which one will be executed ?
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000110 //LIB1 JCLLIB ORDER=(INF6244.JCL.SOURCE) 000111 //STEP1 EXEC MYPROC 000120 //MYPROC PROC 000130 //STEP1 EXEC PGM=IEFBR14 000140 //DD1 DD DSN=INF6244.TEST.CAT,SPACE=(TRK,(1,1)), 000150 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80),VOL=SER=INUSR3,000160 // DISP=(NEW,DELETE),UNIT=SYSDA 000170 // PEND 000190 /*
Answer :Cataloged procedure will be executed
04/21/23 12
ER/CORP/CRS/OS02/003-3
Questions ??
Is the JCL given below correct? Yes/No , Justify your answer ?
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000110 //LIB1 JCLLIB ORDER=(INF6244.JCL.SOURCE) 000111 //TEST PROC 000112 //STEP1 EXEC MYPROC 000113 // PEND 000114 //STEP1 EXEC TEST 000115 /*
Restriction relieve:Procedure can have a exec statement calling another procedure
04/21/23 13
ER/CORP/CRS/OS02/003-3
Nested Procedures
• Cataloged and In-stream procedure can invoke other procedure ( up to 15 level)
• An In-stream procedure cannot be defined within
another procedure
04/21/23 14
ER/CORP/CRS/OS02/003-3
Nested Procedures (examples)
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000110 //LIB1 JCLLIB ORDER=(INF6244.JCL.SOURCE) 000111 //FSTPROC PROC 000112 //STEP1 EXEC MYPROC 000113 // PEND 000114 //SNDPROC PROC 000115 //STEP1 EXEC FSTPROC 000116 // PEND 000120 //STEP1 EXEC SNDPROC 000130 /*
• SNDPROC is called first which calls FSTPROC which initiates cataloged procedure MYPROC
04/21/23 15
ER/CORP/CRS/OS02/003-3
Nested Procedures (examples)
• NSTPROC 000200 //NSTPROC PROC 000201 //STEP1 EXEC PGM=IEFBR14
• MYPROC 000200 //MYPROC PROC 000201 //STEP1 EXEC NESTPROC 000210 //STEP2 EXEC PGM=IEFBR14,COND=(0,NE) 000220 //DD1 DD DSN=&&TEMP,SPACE=(TRK,(1,1)), 000230 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80), 000231 // VOL=SER=INUSR3, 000240 // DISP=(NEW,KEEP),UNIT=SYSDA
• CALLJCL
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000110 //LIB1 JCLLIB ORDER=(INF6244.JCL.SOURCE) 000260 //STEP1 EXEC MYPROC
04/21/23 16
ER/CORP/CRS/OS02/003-3
Identifying procedure statements injob’s JCL listing
Identifier Identifier MeaningFor In stream for CataloguedProcedure procedure
// // Statement from Input JCL++ XX Statement from procedure+/ X/ Procedure statement that you modified++* XX* Procedure statements, other than comment statements that were converted to comments*** *** Comments and JES2/JES3 control statements
04/21/23 17
ER/CORP/CRS/OS02/003-3
Modifying the Procedure
SYMBOLIC PARAMETERS
OVERRIDING EXEC & DD PARAMETERS
04/21/23 18
ER/CORP/CRS/OS02/003-3
Symbolic Parameters
Symbolic parameters are variables used in procedures
Syntax - &Varname
Varname - 1-7 character
Value can be specified at :
1) SET statement2) EXEC PROC statement 3) PROC statement
04/21/23 19
ER/CORP/CRS/OS02/003-3
Symbolic Parameters examples ...
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000101 //SET1 SET A=INF6244.SYMB.TEST 000107 //STEP1 EXEC PGM=IEFBR14 000109 //DD1 DD DSN=&A,SPACE=(TRK,(1,1)), 000110 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80),VOL=SER=INUSR3,000120 // DISP=(NEW,DELETE),UNIT=SYSDA
04/21/23 20
ER/CORP/CRS/OS02/003-3
Symbolic Parameters examples ...
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000101 //MYPROC PROC A=INF6244.SYMB.TEST 000102 //STEP2 EXEC PGM=IEFBR14 000103 //DD1 DD DSN=&A,SPACE=(TRK,(1,1)), 000104 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80),VOL=SER=INUSR3, 000105 // DISP=(NEW,DELETE),UNIT=SYSDA 000106 // PEND 000107 //STEP1 EXEC MYPROC
04/21/23 21
ER/CORP/CRS/OS02/003-3
Question ??
• What will happen if the same symbolic parameters having different values are declared in the PROC, SET statement of the cataloged procedure & SET statement of the calling JCL ?
• State the order of precedence ?
04/21/23 22
ER/CORP/CRS/OS02/003-3
REFERING BACK AND MODIFYING(examples)
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000102 //STEP1 EXEC PGM=IEFBR14 000103 //DD1 DD DSN=INF6244.TEST.PS1,SPACE=(TRK,(1,1)), 000104 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80),VOL=SER=INUSR3, 000105 // DISP=(NEW,DELETE),UNIT=SYSDA 000106 //DD2 DD DSN=INF6244.TEST.PS2,SPACE=(TRK,(1,1)), 000107 // DCB=*.DD1,VOL=SER=INUSR3, 000108 // DISP=(NEW,DELETE),UNIT=SYSDA
04/21/23 23
ER/CORP/CRS/OS02/003-3
REFERING BACK AND MODIFYING(examples)
000100 //INF62441 JOB (AMLAN),NOTIFY=INF6244,CLASS=A 000101 //STEP1 EXEC PGM=IEFBR14 000102 //DD1 DD DSN=INF6244.TEST.PS1,SPACE=(TRK,(1,1)), 000103 // DCB=(RECFM=FB,BLKSIZE=800,LRECL=80),VOL=SER=INUSR3,000104 // DISP=(NEW,CATLG),UNIT=SYSDA 000105 //STEP2 EXEC PGM=IEFBR14 000106 //DD1 DD DSN=*.STEP1.DD1,SPACE=(TRK,(1,1)), 000107 // DCB=*.STEP1.DD1,VOL=SER=INUSR3, 000108
04/21/23 24
ER/CORP/CRS/OS02/003-3
Questions ??
• Can all the parameters of DD statement refer back. Discuss ?
04/21/23 25
ER/CORP/CRS/OS02/003-3
IBM UTILITY PROGRAMS
Provides a variety of useful function like
• Copying a member/data set
• Listing
• Maintaining source libraries etc.
• MVS provides a number of pre-written utility programs that can be used by analysts, system programmers, and application programmers to assist them in maintaining and organizing data.
04/21/23 26
ER/CORP/CRS/OS02/003-3
UTILITY PROGRAMS
SYSTEM UTILITY
• IEHATLAS
• IEHINITT
• IEHMOVE
• IEHPROGM
• IFHSTATR
DATA SET UTILITY
• IEBCOMPR
• IEBCOPY
• IEBDG
• IEBEDIT
• IEBGENER
• IEBISAM
04/21/23 27
ER/CORP/CRS/OS02/003-3
GENERAL FORMAT FOR IEBXXXX
//STEP EXEC PGM=IEBxxxx
//SYSPRINT DD -message data set ,no DCB
//SYSIN DD -control information for utility
//SYSUT1 DD -input data set
//SYSUT2 DD -output dataset
04/21/23 28
ER/CORP/CRS/OS02/003-3
IEBGENER utility
• It is used to copy one sequential file to another.
000001 //INF6244B JOB CLASS=A,NOTIFY=INF6244 000002 //STEP1 EXEC PGM=IEBGENER 000003 //SYSPRINT DD SYSOUT=* 000004 //SYSUT2 DD DSN=INF6244.IEBGENER.NEWPS, 000005 // VOL=SER=INUSR2,SPACE=(TRK,(1,1)), 000006 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=800), 000007 // DISP=(NEW,CATLG) 000008 //SYSUT1 DD DSN=INF6244.INPUT.JCLPS1,DISP=SHR 000009 //SYSIN DD DUMMY
04/21/23 29
ER/CORP/CRS/OS02/003-3
IEBCOPY
• To copy PDS on to DASD
• To copy PDS on to Tapes by converting it to sequential dataset etc
000001 //INF6244A JOB NOTIFY=INF6244 000002 //STEP1 EXEC PGM=IEBCOPY 000003 //SYSPRINT DD SYSOUT=A 000004 //SYSUT1 DD DSN=INF6244.JCL.SOURCE,DISP=SHR 000005 //SYSUT2 DD DSN=INF6244.IEBCOPY.PDS, 000006 // VOL=SER=INUSR2,SPACE=(TRK,(5,5,8)), 000007 // DCB=(RECFM=FB,LRECL=80,BLKSIZE=800), 000008 // DISP=(NEW,CATLG) 000009 //SYSIN DD * 000010 COPY INDD=SYSUT1,OUTDD=SYSUT2 000011 /*
04/21/23 30
ER/CORP/CRS/OS02/003-3
IEHPROGM PROGRAM
• SCRATCHES– RENAMES– CATALOGS
• UNCATALOGS
UTILITY CONTROL STATEMENTS
SCRATCH DSNAME=dsname,VOL=device=serial
UNCATLG DSNAME=dsname
04/21/23 31
ER/CORP/CRS/OS02/003-3
IEHLIST PROGRAM
• LIST CATALOG• LIST PDS• LIST VTOC
UTILITY CONTROL STATEMENT
LISTPDS DSNAME=dsname, x VOL=device=serial,format
LISTVTOC DSNAME=dsname, x VOL=device=serial,format
04/21/23 32
ER/CORP/CRS/OS02/003-3
That’s all for
DAY
3