如何在JCL中使用参数

时间:2016-06-11 12:04:47

标签: mainframe jcl rexx

当我努力编码时,我尝试提交工作,一切都很好。但我想使用params。

//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编写为Procedure。描述程序发票中的参数是否真实?像这样:

  //stepxx  exec myproc,hiqual=hiqual,owner=*...

1 个答案:

答案 0 :(得分:4)

有两种程序,编目程序和流程内程序。

编目过程存储在与执行JCL分开的库成员中。系统通过搜索SYS1.PARMLIB中为其定义的此类库的列表来定位此单独的库。可以使用执行JCL中的JCLLIB语句覆盖此列表。您的商店可能有一个标准的位置,用于存储编目程序。

流内过程与执行JCL位于同一个库成员中。 PROC语句必须位于您的jobcard和执行指定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
//*

...将给出与第一个示例相同的结果,而不使用proc。

您通常会遵守商店标准。通常,大型机商店都有一个专用组,其功能是运行生产作业流,每天安排数百或数千个此类作业流。