使用REXX量身定制和运行JCL



每月,我需要运行一组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而不是harcoded值?

(我也知道有一些叫做文件裁缝的东西,但我不明白我应该如何使用它(

我来自PHP,Java,JavaScript和那些Langs堆栈。请尽可能清楚和明确。

谢谢!

我要假设文件裁缝不是必需的,因为为了解决您的问题而不是必需的。

我的建议是编码一个过程,分类或流中,然后使用您的不同参数执行。

//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动态系统符号是新的,Z/OS 2.3,并且在此之前的几个发行版中,步骤获得了住房内部数据的能力。

缺乏使用系统符号的能力,建议与任何负责在商店中安排工作的人交谈。大多数大型机商店都有一个工作调度套件,这些套件往往具有强大的日期操纵功能。

在我们的网站中,我们确实有一些每月运行的工作,而不断更改的唯一参数是月份&年(MMMYY格式:EX:APR18(。这些作业安排在Control-M中。MMM&基于当前月/年,Control-M设置了在JCL符号覆盖中使用的YY变量。

%%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所说,我强烈建议您与网站中的调度程序联系。

相关内容

  • 没有找到相关文章

最新更新