JCL中参数的使用方法
How to use parameters in JCL
当我硬编码时,我尝试提交作业,一切都很好。但是我想使用参数。
//REPORTS EXEC PGM=IKJEFT01,**PARM='SDSFINFO FTPSRV01 * hiqual'**
//SYSEXEC DD DSN=rexx.is.here,DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
我将 JCL 编写为过程。程序发票中的参数描述是否真实?像这样:
//stepxx exec myproc,hiqual=hiqual,owner=*...
有两种程序,编目程序和流内程序。
编目过程存储在独立于执行 JCL 的库成员中。这个单独的库由系统搜索 SYS1.PARMLIB
中定义的此类库的列表来定位。可以使用执行 JCL 中的 JCLLIB
语句覆盖此列表。您的商店可能有一个存储编目程序的标准位置。
流内过程与您的执行 JCL 位于同一库成员中。 PROC
语句必须位于您的工作卡和执行命名过程的 EXEC
语句之间。流内过程 必须 以 PEND
语句结束。
在过程中使用符号参数很常见,使它们更加灵活。
你的方向是正确的...
[jobcard is here]
//MYPROC PROC
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL'
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
// PEND
//*
//MYSTEP EXEC PROC=MYPROC,HIQUAL=ABC,OWNER=XYZ
...其中方括号内的内容必须由您提供。这将导致 MYPROC 像硬编码一样执行...
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 XYZ ABC'
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
有时 procs 使用符号参数的默认值编码...
//MYPROC PROC ENV='PROD'
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL'
//SYSEXEC DD DSN=&ENV..REXX,DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
...有时默认值为文档...
//MYPROC PROC ENV='SPECIFY_PROD_OR_TEST_OR_QA'
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL'
//SYSEXEC DD DSN=&ENV..REXX,DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
...强制执行 JCL 在 运行 时间提供值或遭受 JCL 错误。
请注意,通过 SET
语句,您可以使用符号参数,而无需过程、编目或流内。这...
[jobcard is here]
// SET HIQUAL=ABC
// SET OWNER=XYZ
//*
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL'
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
//*
...将给出与第一个示例相同的结果,而不使用过程。
通常有一些商店标准需要您遵守。大型机商店通常有一个专门的小组,其职能是 运行 生产作业流,每天安排成百上千个这样的作业流。
当我硬编码时,我尝试提交作业,一切都很好。但是我想使用参数。
//REPORTS EXEC PGM=IKJEFT01,**PARM='SDSFINFO FTPSRV01 * hiqual'**
//SYSEXEC DD DSN=rexx.is.here,DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
我将 JCL 编写为过程。程序发票中的参数描述是否真实?像这样:
//stepxx exec myproc,hiqual=hiqual,owner=*...
有两种程序,编目程序和流内程序。
编目过程存储在独立于执行 JCL 的库成员中。这个单独的库由系统搜索 SYS1.PARMLIB
中定义的此类库的列表来定位。可以使用执行 JCL 中的 JCLLIB
语句覆盖此列表。您的商店可能有一个存储编目程序的标准位置。
流内过程与您的执行 JCL 位于同一库成员中。 PROC
语句必须位于您的工作卡和执行命名过程的 EXEC
语句之间。流内过程 必须 以 PEND
语句结束。
在过程中使用符号参数很常见,使它们更加灵活。
你的方向是正确的...
[jobcard is here]
//MYPROC PROC
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL'
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
// PEND
//*
//MYSTEP EXEC PROC=MYPROC,HIQUAL=ABC,OWNER=XYZ
...其中方括号内的内容必须由您提供。这将导致 MYPROC 像硬编码一样执行...
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 XYZ ABC'
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
有时 procs 使用符号参数的默认值编码...
//MYPROC PROC ENV='PROD'
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL'
//SYSEXEC DD DSN=&ENV..REXX,DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
...有时默认值为文档...
//MYPROC PROC ENV='SPECIFY_PROD_OR_TEST_OR_QA'
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL'
//SYSEXEC DD DSN=&ENV..REXX,DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
...强制执行 JCL 在 运行 时间提供值或遭受 JCL 错误。
请注意,通过 SET
语句,您可以使用符号参数,而无需过程、编目或流内。这...
[jobcard is here]
// SET HIQUAL=ABC
// SET OWNER=XYZ
//*
//REPORTS EXEC PGM=IKJEFT01,PARM='SDSFINFO FTPSRV01 &OWNER &HIQUAL'
//SYSEXEC DD DSN=[rexx.is.here],DISP=(SHR,PASS)
//SYSTSPRT DD SYSOUT=A,HOLD=YES
//SYSTSIN DD DUMMY
//*
...将给出与第一个示例相同的结果,而不使用过程。
通常有一些商店标准需要您遵守。大型机商店通常有一个专门的小组,其职能是 运行 生产作业流,每天安排成百上千个这样的作业流。