我需要一个帮助来创建一个JCL来搜索PDS文件中的当前年份成员(即,exx.xxxx,其中xxxx表示2018年)。每年由使用PDS文件的年度作业创建的新成员。因此,成员名称在PDS文件I.e中没有固定。后缀每年都有变化。
我们需要创建一个JCL,用于检查当前年份成员是否存在于PDS文件中。因此,后续工作将成功运行。
如果当前年份成员出现在PDS文件中,则新作业将使用RC 0000运行,这表示后续作业将自动触发。
如果当前成员不存在于PDS文件中,那么作业将失败并显示RC 0001,表示在此作业成功恢复之前,下一个后续作业将不会触发。
请帮我创建这样的JCL。
非常感谢您的帮助。
提前致谢。
LISTDS,一个TSO函数,显示数据集属性。您可以使用IKJEFT01实用程序(允许您批量运行TSO功能)并运行此TSO功能。但是,LISTDS发出的退货代码不是您想要的。
因此,我建议使用IKJEFT01实用程序运行如下所示的REXX脚本来评估PDS中成员的存在。
/* REXX */
arg dsname
address tso
"listds ("dsname")"
if (rc \= 0) then
exit 1
运行JCL看起来如下所示。
//JOBNAME JOB ('ACCOUNTING INFORMATION'),
// CLASS=2,MSGCLASS=H,NOTIFY=&SYSUID
//P1 EXEC PGM=IKJEFT01
//SYSPROC DD DSN=YOUR.REXX.LIB,DISP=SHR
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
%EMPTY7 'YOUR.PDS(RPXXXX)'
/*
SYSTSIN DD中的EMPTY7是REXX脚本的名称。 SYSPROC DD中提供的库是存储REXX脚本的位置。
如果您需要更多详细信息,请告诉我们。
不需要REXX脚本。只需通过IKJEFT1A运行LISTDS,步骤将以LISTDS命令的返回码结束。
请注意,语法描述没有明确提及成员规范,但确实有效。需要您自担风险使用它。
//STEP01 EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
LISTDS ('your.data.set.name(yourmember)')
/*
如果成员存在,则步骤将以RC = 0结束,否则RC将为非零。
以下Rexx代码将根据当前年份动态构建成员名称,并且不需要对数据集/成员名称进行硬编码。这样,您可以安排作业以构建新成员,而无需编辑作业。
/* Rexx */
arg dsname
currDate = Date('S')
currYear = substr( currDate, 1, 4 )
fqdsname = dsname||"(RP"||currYear||")"
"listds ("fqdsname")"
if (rc \= 0) then
exit 1