需要使用JCL在PDS文件中搜索成员

问题描述 投票:1回答:3

我需要一个帮助来创建一个JCL来搜索PDS文件中的当前年份成员(即,exx.xxxx,其中xxxx表示2018年)。每年由使用PDS文件的年度作业创建的新成员。因此,成员名称在PDS文件I.e中没有固定。后缀每年都有变化。

我们需要创建一个JCL,用于检查当前年份成员是否存在于PDS文件中。因此,后续工作将成功运行。

如果当前年份成员出现在PDS文件中,则新作业将使用RC 0000运行,这表示后续作业将自动触发。

如果当前成员不存在于PDS文件中,那么作业将失败并显示RC 0001,表示在此作业成功恢复之前,下一个后续作业将不会触发。

请帮我创建这样的JCL。

非常感谢您的帮助。

提前致谢。

mainframe jcl
3个回答
5
投票

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脚本的位置。

如果您需要更多详细信息,请告诉我们。


2
投票

不需要REXX脚本。只需通过IKJEFT1A运行LISTDS,步骤将以LISTDS命令的返回码结束。

请注意,语法描述没有明确提及成员规范,但确实有效。需要您自担风险使用它。

//STEP01   EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSTSIN  DD *
  LISTDS ('your.data.set.name(yourmember)')
/*

如果成员存在,则步骤将以RC = 0结束,否则RC将为非零。


1
投票

以下Rexx代码将根据当前年份动态构建成员名称,并且不需要对数据集/成员名称进行硬编码。这样,您可以安排作业以构建新成员,而无需编辑作业。

/* Rexx */                                
 arg dsname                               

 currDate = Date('S')                     
 currYear = substr( currDate, 1, 4 )      
 fqdsname = dsname||"(RP"||currYear||")"  
 "listds ("fqdsname")"                    
 if (rc \= 0) then                        
 exit 1                                   
© www.soinside.com 2019 - 2024. All rights reserved.