我在大型机上有一个作业(JCL),我想通过编程从系统目录(API调用)中检索特定GDG文件的最近相对生成号。。。在那里,我可以通过编程方式挖掘调用返回的结果,以计算出相对的生成数。这类似于在GDG基本文件名上执行TSO 3.4,其中可以看到最新的一代编号。IDCAMS似乎不会以对程序友好的格式返回信息。谢谢
示例:GDG基本名称:TEST.FILE
GDG代:
TEST.FILE.G0010V00
测试文件。G0011V00
测试文件G0012V00
看看目录接口IGGCSI00。您可以从任何程序(REXX、CLIST、COBOL、汇编程序、PL/I)调用它,它提供了很大的灵活性。当然,就像许多IBM灵活的解决方案一样,总会有一些迟钝之处。
互联网上有很多例子,但SYS1.SAMPIB(IGGCSIRX)中的示例程序非常出色。
通过编程(汇编语言),您可以使用LOCATE SVC,其中CAMLST指定参数列表,以获得您想要的信息——这里有一个参考:https://www.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.idas300/s3099.htm--那里的例子只显示了如何使用它来获取卷列表,但我在80年代初使用它来获得与相对索引号相对应的G-V-(生成版本)子名称限定符--传递GDG基本DSNAME,就可以获得所有的gens--如果你想看一些线程,也许搜索bit.listserv.ibm-main——你也可以用术语"生成索引指针条目"(GIPE)搜索在线ibm手册,这是相关控制块的关键部分。。。
您的选择包括:
- IDCAMS/TSO Listcat并编写程序以重新格式化
- Rexx ListDsi命令
特别是对于ListDsi,您可以在JCL 中拥有以下内容
//MYGDG DD DSN=my.gdg(0),DISP=SHR
并且在rexx程序中
x = ListDsi("MYGDG FILE")
say SYSDSNAME
你也可以使用后台ISPF服务,但这对来说是一种过度使用
**注意:*要运行rexx,您需要运行TSO
//* job statement
//TSOBATCH EXEC PGM=IKJEFT1A,DYNAMNBR=200
//SYSEXEC DD DSN=userid.REXX.EXEC,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//MYGDG DD DSN=my.gdg(0),DISP=SHR
//SYSTSIN DD *
PROFILE PREFIX(userid) /* specifying a userid*/
%MYREXX