【问题标题】:how to get current GDG version through jcl如何通过 jcl 获取当前的 GDG 版本
【发布时间】:2023-03-29 09:43:02
【问题描述】:

我有下面的代码将 gdg 的属性写入 PS 文件。

//STEP10  EXEC PGM=IDCAMS                              
//DD1       DD DSN='GDGBASE(0)',DISP=SHR  
//SYSPRINT  DD DSN=GDG.VERSION.PS,           
//             DISP=(NEW,CATLG,DELETE),                
//             UNIT=WORK,AVGREC=K,                     
//             SPACE=(108,(5,5),RLSE),                 
//             DCB=(BUFNO=10,RECFM=FB,LRECL=108)       
//SYSIN     DD *                                       
 PRINT INFILE(DD1) COUNT(0) CHAR                       
/*   

但我只需要将 GDG 的最新版本名称写入 PS 文件即可。

【问题讨论】:

  • 你的意思是世代,而不是版本。请查阅您的 JCL 参考以找出不同之处。您可以完成整个职业生涯而无需使用版本。您可以使用 LISTCAT 并从其输出中获取数据集名称。你需要它做什么?

标签: mainframe zos jcl


【解决方案1】:

我认为你不能使用纯 JCL 来做到这一点。作为开始的建议,这里有一个简短的 REXX 和一些 JCL - 它并不完美,但您可以对其进行调整以满足您的特定需求。

第 1 部分:一个简短的 REXX 脚本,用于显示已分配文件的 DSN:

/* REXX find DSN for DD */ 
arg mydd                     
x= LISTDSI(mydd file)        
say sysdsname                

第 2 部分:JCL 使用批处理 TSO 调用它:

//FINDDSN EXEC PGM=IKJEFT01,PARM='DSNFIND MYFILE'    
//MYFILE   DD  DSN=MY.GDG.FILE(+0),DISP=SHR    
//SYSEXEC  DD  DSN=PDS.CONTAINING.REXX,DISP=SHR          
//SYSTSPRT DD  SYSOUT=*                                
//SYSTSIN  DD  DUMMY

其中DSNFIND 是给定 REXX 过程的成员名。

SYSTSPRT 中的输出是:

MY.GDG.FILE.G0338V00
READY                       
END                     

我还没有找到一种快速的方法来抑制 READY 和 END - 但你可以代替 SAY,例如使用 EXECIO 写入另一个文件 - READY 和 END 仍将转到 SYSTSPRT。

【讨论】:

  • 感谢您的宝贵回复,但我收到以下错误。 CLIST 或 REXX EXEC 的第 1 阶段处理异常结束 +​​ 异常终止代码:S913 原因代码:0038
  • 检查您的工作日志 - 这可能是某些数据集的访问权限不足的问题。
  • 检查您的作业日志中的 ICH408I 消息,指示 RACF 阻止访问的资源。
猜你喜欢
  • 2018-12-30
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 2017-03-17
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
相关资源
最近更新 更多