Presentation is loading. Please wait.

Presentation is loading. Please wait.

Stephen Linkin Houston Community College 21-Feb-07 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM 1 Using JCL Procedures.

Similar presentations


Presentation on theme: "Stephen Linkin Houston Community College 21-Feb-07 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM 1 Using JCL Procedures."— Presentation transcript:

1

2 Stephen Linkin Houston Community College 21-Feb-07 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM 1 Using JCL Procedures

3 2 Objectives Applied objectives Code a JCL procedure (cataloged or instream) using any or all of the facilities in this chapter, including symbolic parameters. Code a job stream invoking a procedure that: a. adds, changes, or nullifies EXEC, DD, and OUTPUT statement parameters in the procedure as necessary b. assigns values to symbolic parameters in the procedure as necessary Code a JCLLIB statement to establish a private procedure library for a job. Use the INCLUDE statement to copy JCL statements into a job stream.

4 3 Objectives Knowledge objectives Distinguish cataloged and instream procedures. Understand the function of a PEND statement in a job stream. Understand the effect of the JCLLIB statement on the search sequence used to locate a cataloged procedure. Describe an INCLUDE group Explain why you use parameter overrides in EXEC, DD, or OUTPUT statements. Understand coding names for symbolic parameters Know why you use symbolic parameters in procedures

5 4 Procedure Syntax EXEC [PROC=]procedure-name A job that invokes a cataloged procedure //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01 //STEP1 EXEC INV3000 // A cataloged JCL procedure INV3000 is invoked //INV3000 PROC //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(20,10)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=*

6 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM5 INSTREAM PROC The order in which the programs in the job are executed INV1000  INV3010  INV3020  INV3010  INV3020 //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01 // MSGCLASS=X,MSGLEVEL=(1,1) //INV3000 PROC //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(20,10)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=* // PEND //STEPA EXEC PGM=INV1000 //INVMAST DD DSNAME=MMA2.INVENTORY.MASTER,DISP=SHR //INVLIST DD SYSYOUT=* //STEPB1 EXEC INV3000 //STEPB2 EXEC INV3000 // INLINE PROC EXECUTING CODE 1234 5

7 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM6 LIBRARY Lists Syntax for JCLLIB statement //[name] JCLLIB ORDER=(library[,library]...) A job invoking a cataloged procedure in a test library //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01 // JCLLIB ORDER=(MMA2.TEST.PROCLIB,MMA2.PROD.PROCLIB) //STEP1 EXEC INV3000 // Sequence used to find procedure INV3000 MMA2.TEST.PROCLIB  MMA2.PROD.PROCLIB  SYS1.PROCLIB

8 7 Invoking a Stored Procedure A JCL job stream that invokes a cataloged procedure //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01 //STEP1 EXEC INV3000 // The JCL listing in the job output //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01 // JCLLIB ORDER=MMA2.PROCLIB //STEP1 EXEC INV3000 XXINV3000 PROC XXINV3010 EXEC PGM=INV3010 XXSYSOUT DD SYSOUT=* XXINVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR XXINVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), XX UNIT=SYSDA,SPACE=(CYL,(20,10)) XXSELCTL DD DUMMY XXINV3020 EXEC PGM=INV3020 XXSYSOUT DD SYSOUT=* XXINVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) XXINVSLST DD SYSOUT=* // CatalogedInstreamMeaning ProcedureProcedure ////Statement from input JCL. XX++Statement from procedure. X/+/Procedure statement you modified. XX*++*Procedure statements, other than comment statements, that were converted to comments (probably because of an error). ******Comments and JES2/JES3 control statements.

9 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM8 INCLUDE JCL Procedure Syntax for INCLUDE statement Syntax for INCLUDE statement JCL statements not allowed in an INCLUDE group JCL statements not allowed in an INCLUDE group JOB, PROC, PEND, JCLLIB, DD*, DD DATA JOB, PROC, PEND, JCLLIB, DD*, DD DATA JES2 and JES3 statements and commands JES2 and JES3 statements and commands //[name] INCLUDE MEMBER=name

10 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM9 Using An INCLUDE Statement The JCL submitted for processing The INVMAST Member Effective JCL //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01 // JCLLIB ORDER=MMA2.PROCLIB //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=* // INCLUDE MEMBER=INVMAST //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(20,10)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=* //INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(20,10)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=*

11 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM10 The Syntax Invoke EXEC Statements Modifying EXEC Statements Adding Compile Parameters To The COBOL Step Overriding the TIME parameter in STEP3 of INV3200 Applying a REGION parameter to all steps in ACT1000 Nullify the TIME parameter in the PSTEP1 of ARS2010 The procedure statement //STEP3 EXEC PGM=3230,REGION=256K,TIME=(1,30) The parameter override //INV3200 EXEC PROC=INV3200,TIME.STEP3=3 The result //STEP3 EXEC PGM=3230,REGION=256K,TIME=3 Modifying EXEC Statements In A Procedure //[name] EXEC [PROC=]procedure-name,parameter.procstepname=value //COMP1 EXEC PROC=IGYWCL,PARM.COBOL='DATEPROC,XREF' //ARS2010 EXEC ARS2010,TIME.PSTEP1= //ACT1000 EXEC PROC=ACT1000,REGION=4M

12 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM11 Modifying Or Adding DD/OUTPUT Statements In A Procedure The Syntax The Invoking JCL The JCL listing in the job output //[name] EXEC [PROC=]procedure-name //[procstepname.]ddname DD parameter=value //[procstepname.]ddname OUTPUT parameter=value //STEPB1 EXEC INV3000 //OUT1 OUTPUT COPIES=4 //INV3010.SYSOUT DD DUMMY //INVSEL DD SPACE=(CYL,(5,5)) //STEPB1 EXEC INV3000 XXINV3000 PROC //OUT1 OUTPUT COPIES=4 X/OUT1 OUTPUT CLASS=A,COPIES=2 XXINV3010 EXEC PGM=INV3010 //INV3010.SYSOUT DD DUMMY X/SYSOUT DD SYSOUT=* XXINVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR //INVSEL DD SPACE=(CYL,(5,5)) X/INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), XX UNIT=SYSDA,SPACE=(CYL,(20,10)) XXSELCTL DD DUMMY XXINV3020 EXEC PGM=INV3020 XXSYSOUT DD SYSOUT=* XXINVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) XXINVSLST DD SYSOUT=*

13 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM12 DDNAME Parameter Of DD Statement Syntax Get Around The Restriction On Instream Data Sets Cataloged Procedure With A DDNAME Parameter JCL invoking the procedure with instream data DDNAME=ddname //INV3000 PROC //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=* //INVMAST DD DDNAME=INPUT //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(20,10)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=* //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01 //STEP1 EXEC INV3000 //INV3010.INPUT DD *. instream data. /* //

14 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM13 Assigning Values To Symbolic Parameters The syntax A procedure that uses symbolic parameters The INV3000 procedure The Invoking EXEC Statement The Effective JCL //[name] EXEC [PROC=]procedure-name,symbolic-parameter=value //INV3000 PROC //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=&CLASS //INVMAST DD DSNAME=&DEPT..INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS)), // UNIT=SYSDA,SPACE=(CYL,(&SPACE)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=&CLASS //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=&CLASS //STEPA1 EXEC INV3000,CLASS=M,DEPT=MMA2,SPACE='5,1' //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=M //INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(5,1)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=M //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=M

15 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM14 Examples Of Coding Symbolic Parameters The symbolic parameter values used // EXEC proc-name,VAR1=TEST,VAR2=LIST ExampleAs coded in procedureAs interpreted by JES 1DSNAME=&VAR1DSNAME=TEST 2DSNAME=A&VAR1DSNAME=ATEST 3DSNAME=&VAR1(&VAR2)DSNAME=TEST(LIST) 4DSNAME=&VAR1.ADSNAME=TESTA 5DSNAME=&VAR1..ADSNAME=TEST.A 6DSNAME=&VAR1&VAR2DSNAME=TESTLIST 7DSNAME=&VAR1..&VAR2DSNAME=TEST.LIST

16 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM15 Procedure Using Default Symbolic Parameters The INV3000 Procedure The Invoking EXEC Statement The Effective JCL //INV3000 PROC CLASS='*',SPACE='1,1' //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=&CLASS //INVMAST DD DSNAME=&DEPT..INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(&SPACE)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=&CLASS //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=&CLASS //STEPA1 EXEC INV3000,DEPT=MMA2,SPACE='10,5' //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(10,5)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=*

17 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM16 The SET Statement The Syntax A job that uses the SET statement The INV3000 procedure The invoking JCL The effective JCL //[name] SET symbolic-parameter=value[,symbolic-parameter=value]... //INV3000 PROC CLASS='*',SPACE='1,1' //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=&CLASS //INVMAST DD DSNAME=&DEPT..INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(&SPACE)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=&CLASS //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=&CLASS //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01 // SET SPACE='10,5' // SET DEPT=MMA2 //STEPA1 EXEC INV3000 //INV3010 EXEC PGM=INV3010 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR //INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS), // UNIT=SYSDA,SPACE=(CYL,(1,1)) //SELCTL DD DUMMY //INV3020 EXEC PGM=INV3020 //SYSOUT DD SYSOUT=* //INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE) //INVSLST DD SYSOUT=*

18 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM17 End Presentation


Download ppt "Stephen Linkin Houston Community College 21-Feb-07 © 2002 - Mike Murach & Associates, 2007 - HCC, IBM 1 Using JCL Procedures."

Similar presentations


Ads by Google