如何通过jcl获取当前的GDG版本

时间:2014-08-06 07:04:11

标签: mainframe zos jcl

我有一个代码将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文件。

1 个答案:

答案 0 :(得分:1)

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

第1部分:显示已分配文件的DSN的简短REXX脚本:

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

第2部分:JCL使用batch-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                     

我还没有找到一种快速方法来取消READYEND - 但您可以使用SAY而不是EXECIO。使用READY写入其他文件 - ENDSYSTSPRT仍会转到{{1}}。