【问题标题】:Tailor and run jcl programmatically using rexx使用 rexx 以编程方式定制和运行 jcl
【发布时间】:2018-04-23 14:18:56
【问题描述】:

每月,我需要运行一组 JCL。这些 JCL 有一些我需要每月更改的硬编码参数(例如:源文件的年/月)。 另一方面,这些 JCL 需要为许多源文件运行:

LEA.D.1804.L03
LEA.D.1804.L04
LEA.D.1804.L05

等等..

这是 JCL 的摘录:

//*---------------------------------------------------------------------
//STEP01   EXEC PGM=OSGENER 
//*---------------------------------------------------------------------
//SYSPRINT DD  SYSOUT=T 
//* 
//SYSUT1   DD  DSN=LEA.D.1804.L03,DISP=SHR 
//* 
//SYSUT2   DD  DSN=LEA.L03.DAT,UNIT=SYSDA,DISP=(,PASS), 
//        DCB=(RECFM=FB,LRECL=135,BLKSIZE=0),SPACE=(CYL,16,RLSE) 
//SYSIN    DD  * 
RCOUT 4,,'016011' 
RCOUT 4,,'016012' 
RCOUT 4,,'016021' 
COPY 

我相信(并希望)一定有某种方法可以使用参数而不是这些硬编码的值。 我认为我可以使用 rexx 以编程方式调用这些 JCL,循环源文件。

首先,这可能吗?

如何在我的 JCL 中使用 vars/params 而不是硬编码值?

(我也知道有一种叫做文件剪裁的东西,但我不明白我应该怎么用它)

我来自 PHP、Java、Javascript 和那些语言堆栈。请尽可能清晰明确。

谢谢!

【问题讨论】:

    标签: mainframe zos jcl rexx ispf


    【解决方案1】:

    我认为文件剪裁不是必需的,因为它不是解决您的问题所必需的。

    我的建议是编写一个过程,编目或在流中,然后使用不同的参数执行它。

    //MYPROC01 YY=SUPPLYTWODIGITYEAR,
    //        MM=SUPPLYTWODIGITMONTH,
    //        LLQ=SUPPLYLOWLEVELQUALIFIER
    //*
    //*---------------------------------------------------------------------
    //STEP01   EXEC PGM=OSGENER 
    //*---------------------------------------------------------------------
    //SYSPRINT DD  SYSOUT=T 
    //* 
    //SYSUT1   DD  DSN=LEA.D.&YY.&MM..&LLQ,DISP=SHR 
    //* 
    //SYSUT2   DD  DSN=LEA.&LLQ..DAT,UNIT=SYSDA,DISP=(,PASS), 
    //        DCB=(RECFM=FB,LRECL=135,BLKSIZE=0),SPACE=(CYL,16,RLSE) 
    //SYSIN    DD  * 
    RCOUT 4,,'016011' 
    RCOUT 4,,'016012' 
    RCOUT 4,,'016021' 
    COPY
    //*
    //         PEND
    //*
    //LLQ3     EXEC PROC=MYPROC01,YY=&LYR2,MM=&MON,LLQ=L03
    //LLQ4     EXEC PROC=MYPROC01,YY=&LYR2,MM=&MON,LLQ=L04
    //LLQ5     EXEC PROC=MYPROC01,YY=&LYR2,MM=&MON,LLQ=L05
    //*
    

    这只是写意,不保证我没有引入错字

    &LYR2&MON dynamic system symbols 是 z/OS 2.3 中的新功能,在此之前的几个版本中,程序获得了容纳流内数据的能力。

    由于无法使用系统符号,我建议与负责在您的车间安排工作的人员交谈。大多数大型机商店都有作业调度包,这些包往往具有强大的日期操作功能。

    【讨论】:

      【解决方案2】:

      在我们的网站上,我们确实有一些按月运行的作业,唯一不断变化的参数是月份和年份(以 MMMYY 格式,例如:APR18)。作业在 Control-M 中安排。在 JCL 符号覆盖中使用的 MMM 和 YY 变量由 Control-M 基于当前月/年设置。

      %%IF  %%OMONTH EQ 01
      %%SET %%MON = JAN 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 02
      %%SET %%MON = FEB 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 03
      %%SET %%MON = MAR 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 04
      %%SET %%MON = APR 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 05
      %%SET %%MON = MAY 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 06
      %%SET %%MON = JUN 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 07
      %%SET %%MON = JUL 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 08
      %%SET %%MON = AUG 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 09
      %%SET %%MON = SEP 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 10
      %%SET %%MON = OCT 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 11
      %%SET %%MON = NOV 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%IF  %%OMONTH EQ 12
      %%SET %%MON = DEC 
      %%GOTO ENDIT      
      %%ENDIF           
      
      %%LABEL ENDIT       
      

      以上行通常在 JCL 中被注释掉,它们只在 Control-M 系统上有效。在 JCL 中,我们将以下 Control-M 变量名称 (%%MON & %%OYEAR) 分配给 MMMYY 符号覆盖。

      MMMYY=%%MON.%%OYEAR
      

      在 JCL 运行期间,这些值被替换。这些作业在 Control-M 中安排在每月的特定时间运行,它们不需要人工干预。希望这可以帮助。

      正如 cschneid 所说,我强烈建议您与您站点中的调度程序取得联系。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-07
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        相关资源
        最近更新 更多