Stephen Linkin Houston Community College 21-Feb-07 © 2002 - Mike Murach & Associates, 2007 - HCC,...

17
21-Feb-07 © 2002 - Mike Murach & Associ ates, 2007 - HCC, IB M 1 Stephen Linkin Houston Community College Using JCL Procedures

Transcript of Stephen Linkin Houston Community College 21-Feb-07 © 2002 - Mike Murach & Associates, 2007 - HCC,...

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

21-Feb-07

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM 1

Stephen LinkinHouston Community College

Using JCL Procedures

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

2

Objectives

Applied objectivesApplied objectives Code a JCL procedure (cataloged or instream) using any Code a JCL procedure (cataloged or instream) using any

or all of the facilities in this chapter, including symbolic or all of the facilities in this chapter, including symbolic parameters.parameters.

Code a job stream invoking a procedure that:Code a job stream invoking a procedure that:a.a. adds, changes, or nullifies EXEC, DD, and OUTPUT adds, changes, or nullifies EXEC, DD, and OUTPUT

statement parameters in the procedure as statement parameters in the procedure as necessarynecessary

b. assigns values to symbolic parameters in b. assigns values to symbolic parameters in the procedure as necessarythe procedure as necessary

Code a JCLLIB statement to establish a Code a JCLLIB statement to establish a private procedure library for a job.private procedure library for a job.

Use the INCLUDE statement to copy JCLUse the INCLUDE statement to copy JCLstatements into a job stream.statements into a job stream.

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

3

Objectives

Knowledge objectivesKnowledge objectives Distinguish cataloged and instream procedures.Distinguish cataloged and instream procedures. Understand the function of a PEND statement in a job Understand the function of a PEND statement in a job

stream.stream. Understand the effect of the JCLLIB statement on the Understand the effect of the JCLLIB statement on the

search sequence used to locate a cataloged procedure.search sequence used to locate a cataloged procedure. Describe an INCLUDE groupDescribe an INCLUDE group Explain why you use parameter overrides in Explain why you use parameter overrides in

EXEC, DD, or OUTPUT statements.EXEC, DD, or OUTPUT statements. Understand coding names for symbolic Understand coding names for symbolic

parametersparameters Know why you use symbolic parameters Know why you use symbolic parameters

in procedures in procedures

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

4

Procedure Syntax

EXEC [PROC=]procedure-nameEXEC [PROC=]procedure-name A job that invokes a cataloged procedureA job that invokes a cataloged procedure

//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//STEP1 //STEP1 EXEC INV3000EXEC INV3000////

A cataloged JCL procedure INV3000 is invoked

////INV3000 PROCINV3000 PROC //INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR//INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(20,10))// UNIT=SYSDA,SPACE=(CYL,(20,10))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=* //INVSLST DD SYSOUT=*

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

5

INSTREAM PROC

The order in which the programs in the job are The order in which the programs in the job are executedexecutedINV1000 INV1000 INV3010 INV3010 INV3020 INV3020 INV3010 INV3010 INV3020 INV3020

//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01// MSGCLASS=X,MSGLEVEL=(1,1)// MSGCLASS=X,MSGLEVEL=(1,1)//INV3000 PROC//INV3000 PROC //INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR//INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(20,10))// UNIT=SYSDA,SPACE=(CYL,(20,10))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=*//INVSLST DD SYSOUT=*// PEND// PEND//STEPA EXEC PGM=INV1000//STEPA EXEC PGM=INV1000//INVMAST DD DSNAME=MMA2.INVENTORY.MASTER,DISP=SHR//INVMAST DD DSNAME=MMA2.INVENTORY.MASTER,DISP=SHR//INVLIST DD SYSYOUT=*//INVLIST DD SYSYOUT=*//STEPB1 //STEPB1 EXEC INV3000EXEC INV3000//STEPB2 //STEPB2 EXEC INV3000EXEC INV3000////

INLINE PROC

EXECUTING CODE

11 22 33 44

55

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

6

LIBRARY Lists

Syntax for JCLLIB statementSyntax for JCLLIB statement//[name] JCLLIB ORDER=(library[,library]...)//[name] JCLLIB ORDER=(library[,library]...)

A job invoking a cataloged procedure in a test A job invoking a cataloged procedure in a test librarylibrary //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01

// // JCLLIB ORDER=(MMA2.TEST.PROCLIB,MMA2.PROD.PROCLIB)JCLLIB ORDER=(MMA2.TEST.PROCLIB,MMA2.PROD.PROCLIB)//STEP1 EXEC INV3000//STEP1 EXEC INV3000////

Sequence used to find procedure INV3000Sequence used to find procedure INV3000MMA2.TEST.PROCLIB MMA2.TEST.PROCLIB MMA2.PROD.PROCLIB MMA2.PROD.PROCLIB SYS1.PROCLIB SYS1.PROCLIB

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

7

Invoking a Stored Procedure

A JCL job stream that invokes a cataloged procedureA JCL job stream that invokes a cataloged procedure //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01

//STEP1 EXEC INV3000//STEP1 EXEC INV3000////

The JCL listing in the job outputThe JCL listing in the job output //MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01

// JCLLIB ORDER=MMA2.PROCLIB// JCLLIB ORDER=MMA2.PROCLIB//STEP1 EXEC INV3000//STEP1 EXEC INV3000XXINV3000 PROC XXINV3000 PROC XXINV3010 EXEC PGM=INV3010XXINV3010 EXEC PGM=INV3010XXSYSOUT DD SYSOUT=*XXSYSOUT DD SYSOUT=*XXINVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHRXXINVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHRXXINVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),XXINVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),XX UNIT=SYSDA,SPACE=(CYL,(20,10))XX UNIT=SYSDA,SPACE=(CYL,(20,10))XXSELCTL DD DUMMYXXSELCTL DD DUMMYXXINV3020 EXEC PGM=INV3020XXINV3020 EXEC PGM=INV3020XXSYSOUT DD SYSOUT=*XXSYSOUT DD SYSOUT=*XXINVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)XXINVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)XXINVSLST DD SYSOUT=*XXINVSLST DD SYSOUT=*////

CatalogedCataloged InstreamInstream MeaningMeaningProcedureProcedure 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.

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

8

INCLUDE JCL Procedure

Syntax for INCLUDE statementSyntax for INCLUDE statement

JCL statements not allowed in an INCLUDE groupJCL statements not allowed in an INCLUDE group JOB, PROC, PEND, JCLLIB, DD*, DD DATAJOB, PROC, PEND, JCLLIB, DD*, DD DATA JES2 and JES3 statements and commandsJES2 and JES3 statements and commands

//[name] INCLUDE MEMBER=name

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

9

Using An INCLUDE Statement

The JCL submitted for processing The INVMAST Member Effective JCL

//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01// JCLLIB ORDER=MMA2.PROCLIB// JCLLIB ORDER=MMA2.PROCLIB//INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*// INCLUDE MEMBER=INVMAST// INCLUDE MEMBER=INVMAST//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(20,10))// UNIT=SYSDA,SPACE=(CYL,(20,10))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=*//INVSLST DD SYSOUT=*

//INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR//INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR

//INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR//INVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(20,10))// UNIT=SYSDA,SPACE=(CYL,(20,10))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=*//INVSLST DD SYSOUT=*

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

10

The Syntax The Syntax Invoke EXEC Statements Modifying EXEC Invoke EXEC Statements Modifying EXEC

StatementsStatements Adding Compile Parameters To The COBOL StepAdding Compile Parameters To The COBOL Step Overriding the TIME parameter in STEP3 of INV3200Overriding the TIME parameter in STEP3 of INV3200 Applying a REGION parameter to all steps in ACT1000Applying a REGION parameter to all steps in ACT1000 Nullify the TIME parameter in the PSTEP1 of ARS2010Nullify the TIME parameter in the PSTEP1 of ARS2010

The procedure statementThe procedure statement//STEP3 EXEC PGM=3230,//STEP3 EXEC PGM=3230,REGION=256K,TIME=(1,30)REGION=256K,TIME=(1,30)

The parameter overrideThe parameter override//INV3200 EXEC PROC=INV3200,//INV3200 EXEC PROC=INV3200,TIME.STEP3=3TIME.STEP3=3

The resultThe result//STEP3 EXEC PGM=3230,//STEP3 EXEC PGM=3230,REGION=256K,TIME=3REGION=256K,TIME=3

Modifying EXEC Statements In A Procedure

//[name] EXEC [PROC=]procedure-name,parameter.procstepname=value//[name] EXEC [PROC=]procedure-name,parameter.procstepname=value

//COMP1 EXEC PROC=IGYWCL,//COMP1 EXEC PROC=IGYWCL,PARM.COBOL='DATEPROC,XREFPARM.COBOL='DATEPROC,XREF' '

//ARS2010 EXEC //ARS2010 EXEC ARS2010,TIME.PSTEP1=ARS2010,TIME.PSTEP1=

//ACT1000 EXEC PROC=ACT1000,//ACT1000 EXEC PROC=ACT1000,REGION=4MREGION=4M

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

11

Modifying Or Adding DD/OUTPUT Statements In A Procedure

The SyntaxThe Syntax The Invoking JCLThe Invoking JCL The JCL listing in the job outputThe JCL listing in the job output

//[name] EXEC [PROC=]procedure-name //[name] EXEC [PROC=]procedure-name //[procstepname.]ddname DD parameter=value//[procstepname.]ddname DD parameter=value//[procstepname.]ddname OUTPUT parameter=value//[procstepname.]ddname OUTPUT parameter=value//STEPB1 EXEC INV3000//STEPB1 EXEC INV3000//OUT1 OUTPUT COPIES=4//OUT1 OUTPUT COPIES=4//INV3010.SYSOUT DD DUMMY//INV3010.SYSOUT DD DUMMY//INVSEL DD SPACE=(CYL,(5,5))//INVSEL DD SPACE=(CYL,(5,5))

//STEPB1 EXEC INV3000//STEPB1 EXEC INV3000XXINV3000 PROCXXINV3000 PROC//OUT1 OUTPUT COPIES=4//OUT1 OUTPUT COPIES=4X/OUT1 OUTPUT CLASS=A,COPIES=2X/OUT1 OUTPUT CLASS=A,COPIES=2XXINV3010 EXEC PGM=INV3010XXINV3010 EXEC PGM=INV3010//INV3010.SYSOUT DD DUMMY//INV3010.SYSOUT DD DUMMYX/SYSOUT DD SYSOUT=*X/SYSOUT DD SYSOUT=*XXINVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHRXXINVMAST DD DSNAME=MMA2.INVENTRY.MASTER,DISP=SHR//INVSEL DD SPACE=(CYL,(5,5))//INVSEL DD SPACE=(CYL,(5,5))X/INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),X/INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),XX UNIT=SYSDA,SPACE=(CYL,(20,10))XX UNIT=SYSDA,SPACE=(CYL,(20,10))XXSELCTL DD DUMMYXXSELCTL DD DUMMYXXINV3020 EXEC PGM=INV3020XXINV3020 EXEC PGM=INV3020XXSYSOUT DD SYSOUT=*XXSYSOUT DD SYSOUT=*XXINVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)XXINVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)XXINVSLST DD SYSOUT=*XXINVSLST DD SYSOUT=*

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

12

DDNAME Parameter Of DD Statement

SyntaxSyntax

Get Around The Restriction On Instream Data SetsGet Around The Restriction On Instream Data Sets Cataloged Procedure With A DDNAME ParameterCataloged Procedure With A DDNAME Parameter JCL invoking the procedure with instream dataJCL invoking the procedure with instream data

DDNAME=ddnameDDNAME=ddname

//INV3000 PROC //INV3000 PROC //INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DDNAME=INPUT//INVMAST DD DDNAME=INPUT//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(20,10))// UNIT=SYSDA,SPACE=(CYL,(20,10))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=*//SYSOUT DD SYSOUT=*//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=*//INVSLST DD SYSOUT=*

//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//STEP1 EXEC INV3000//STEP1 EXEC INV3000//INV3010.INPUT DD *//INV3010.INPUT DD * . . instream data instream data . ./*/*////

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

13

Assigning Values To Symbolic Parameters

The syntaxThe syntax

A procedure that uses symbolic parametersA procedure that uses symbolic parameters The INV3000 procedureThe INV3000 procedure

The Invoking EXEC StatementThe Invoking EXEC Statement The Effective JCLThe Effective JCL

//[name] EXEC [PROC=]procedure-name,symbolic-parameter=value//[name] EXEC [PROC=]procedure-name,symbolic-parameter=value

//INV3000 PROC//INV3000 PROC//INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=&CLASS&CLASS//INVMAST DD DSNAME=//INVMAST DD DSNAME=&DEPT&DEPT..INVENTRY.MASTER,DISP=SHR..INVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS)),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS)),// UNIT=SYSDA,SPACE=(CYL,(// UNIT=SYSDA,SPACE=(CYL,(&SPACE&SPACE))))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=&CLASS&CLASS//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=//INVSLST DD SYSOUT=&CLASS&CLASS

//STEPA1 EXEC INV3000,CLASS=M,DEPT=MMA2,SPACE='5,1'//STEPA1 EXEC INV3000,CLASS=M,DEPT=MMA2,SPACE='5,1'

//INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=MM//INVMAST DD DSNAME=//INVMAST DD DSNAME=MMA2MMA2.INVENTRY.MASTER,DISP=SHR.INVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(// UNIT=SYSDA,SPACE=(CYL,(5,15,1))))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=MM//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=//INVSLST DD SYSOUT=MM

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

14

Examples Of Coding Symbolic Parameters

The symbolic parameter values used// EXEC proc-name,VAR1=TEST,VAR2=LIST

ExampleExample As coded in procedureAs coded in procedure As interpreted by JESAs interpreted by JES

1 DSNAME=&VAR1 DSNAME=TEST2 DSNAME=A&VAR1 DSNAME=ATEST3 DSNAME=&VAR1(&VAR2) DSNAME=TEST(LIST)4 DSNAME=&VAR1.A DSNAME=TESTA5 DSNAME=&VAR1..A DSNAME=TEST.A6 DSNAME=&VAR1&VAR2 DSNAME=TESTLIST7 DSNAME=&VAR1..&VAR2 DSNAME=TEST.LIST

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

15

Procedure Using Default Symbolic Parameters

The INV3000 ProcedureThe INV3000 Procedure The Invoking EXEC StatementThe Invoking EXEC Statement The Effective JCLThe Effective JCL

//INV3000 PROC //INV3000 PROC CLASS='*',SPACE='1,1'CLASS='*',SPACE='1,1'//INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=&CLASS&CLASS//INVMAST DD DSNAME=//INVMAST DD DSNAME=&DEPT..&DEPT..INVENTRY.MASTER,DISP=SHRINVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(// UNIT=SYSDA,SPACE=(CYL,(&SPACE&SPACE))))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=&CLASS&CLASS//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=//INVSLST DD SYSOUT=&CLASS&CLASS

//STEPA1 EXEC //STEPA1 EXEC INV3000,DEPT=MMA2,SPACE='10,5'INV3000,DEPT=MMA2,SPACE='10,5'

//INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=**//INVMAST DD DSNAME=//INVMAST DD DSNAME=MMA2MMA2.INVENTRY.MASTER,DISP=SHR.INVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(// UNIT=SYSDA,SPACE=(CYL,(10,510,5))))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=**//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=//INVSLST DD SYSOUT=**

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

16

The SET Statement

The Syntax The Syntax

A job that uses the SET statementA job that uses the SET statement The INV3000 procedureThe INV3000 procedure The invoking JCLThe invoking JCL The effective JCLThe effective JCL

//[name] SET symbolic-parameter=value[,symbolic-parameter=value]...

//INV3000 PROC CLASS='*',SPACE='1,1'//INV3000 PROC CLASS='*',SPACE='1,1'//INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=&CLASS&CLASS//INVMAST DD DSNAME=//INVMAST DD DSNAME=&DEPT..&DEPT..INVENTRY.MASTER,DISP=SHRINVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(// UNIT=SYSDA,SPACE=(CYL,(&SPACE&SPACE))))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=&CLASS&CLASS//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=//INVSLST DD SYSOUT=&CLASS&CLASS

//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01//MM01RN JOB (36512),'R MENENDEZ',NOTIFY=MM01// SET SPACE='10,5'// SET SPACE='10,5'// SET DEPT=MMA2// SET DEPT=MMA2//STEPA1 EXEC INV3000//STEPA1 EXEC INV3000

//INV3010 EXEC PGM=INV3010//INV3010 EXEC PGM=INV3010//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=**//INVMAST DD DSNAME=//INVMAST DD DSNAME=MMA2MMA2.INVENTRY.MASTER,DISP=SHR.INVENTRY.MASTER,DISP=SHR//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),//INVSEL DD DSNAME=&&INVSEL,DISP=(NEW,PASS),// UNIT=SYSDA,SPACE=(CYL,(// UNIT=SYSDA,SPACE=(CYL,(1,11,1))))//SELCTL DD DUMMY//SELCTL DD DUMMY//INV3020 EXEC PGM=INV3020//INV3020 EXEC PGM=INV3020//SYSOUT DD SYSOUT=//SYSOUT DD SYSOUT=**//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVMAST DD DSNAME=&&INVSEL,DISP=(OLD,DELETE)//INVSLST DD SYSOUT=//INVSLST DD SYSOUT=**

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

© 2002 - Mike Murach & Associates, 2007 - HCC, IBM

17

End Presentation