Stephen Linkin Houston Community College 21-Feb-07 © 2002 - Mike Murach & Associates, 2007 - HCC,...
-
Upload
stuart-holt -
Category
Documents
-
view
214 -
download
2
Transcript of Stephen Linkin Houston Community College 21-Feb-07 © 2002 - Mike Murach & Associates, 2007 - HCC,...
21-Feb-07
© 2002 - Mike Murach & Associates, 2007 - HCC, IBM 1
Stephen LinkinHouston Community College
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.
© 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
© 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=*
© 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
© 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
© 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.
© 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
© 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=*
© 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
© 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=*
© 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 . ./*/*////
© 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
© 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
© 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=**
© 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=**
© 2002 - Mike Murach & Associates, 2007 - HCC, IBM
17
End Presentation