如何通过 jcl 获取当前的 GDG 版本
Posted
技术标签:
【中文标题】如何通过 jcl 获取当前的 GDG 版本【英文标题】:how to get current GDG version through jcl 【发布时间】:2014-08-06 07:04:10 【问题描述】:我有下面的代码将 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 并从其输出中获取数据集名称。你需要它做什么? 【参考方案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 阻止访问的资源。以上是关于如何通过 jcl 获取当前的 GDG 版本的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Java Web 应用在 IBM z OS 中提交 JCL?