SYSOUTデータセットの取り出し(XWTR)
JES2スプールに書き出されたSYSOUTデータセットは順次編成データセットに移すことができます。これはエクスターナル・ライター(外部書き出しプログラム)と呼ばれるプログラムの機能です。SYSOUTはSDSFやPFDなどのTSOの対話型機能によって画面表示されることが多いですが、XWTRを使いPSデータセットに移せば、FTPやファイル転送機能でPCなど他のコンピュータへ送ることもできます。取り出すSYSOUTの数が多ければXWTRの方が手間が掛かりません。
XWTR起動プロシージャ・サンプル
MVS用
//XWTR PROC //IEFPROC EXEC PGM=IASXWR00,PARM='PW' | PARM='PW,IEFSD094' //IEFRDER DD DISP=SHR,DSN=WORK.SYSOUT
MSP用
//XWTR PROC //KDJPROC EXEC PGM=KDGXWR00,PARM='PW' | PARM='PW,KDGSD094' //KDJRDER DD DISP=SHR,DSN=WORK.SYSOUT
VOS3用
//XWTR PROC //JDJPROC EXEC PGM=JDSWINIT,PARM='PW' | PARM='PW,JDSWSEP1' //JDJRDER DD DISP=SHR,DSN=WORK.SYSOUT
出力先データセットの作成
//SYSUT2 DD DISP=(,CATLG),DSN=WORK.SYSOUT, // UNIT=SYSDA,VOL=SER=WRKVOL, // SPACE=(CYL,50),DCB=(DSORG=PS,RECFM=FBA,BLKSIZE=0,LRECL=133)
PARMパラメーターで取り出すSYSOUTクラスを文字Pに続き指定します。サンプルではWクラスを取り出すことを指定しています。SYSOUTを格納するデータセットはIEFRDER DD文で定義します(OSにより異なるのでサンプルを参照)。
パラメーターにセパレーターモジュール名を指定できます。MVSではIBM社提供のモジュールIEFSD094が利用できます。MSP,VOS3でも同じです(プログラム名はサンプル参照)。セパレーターモジュールを使うとジョブの区切りでセパレーター・ページが書き出されます。
XWTRはSTARTコマンドで起動させなければなりません。MVSではマスタースケジューラーのIEFJOBSデータセットに登録してもかまいません。この場合PROC文の代わりにJOB文でJCLを定義しますが、起動には必ずSTARTコマンドを使用します。
XWTRの起動操作
S XWTR起動プロシージャ名.XWTR または S XWTR起動プロシージャ名.XWTR,,,JKL F XWTR識別名,C=W (クラスの変更)
識別名を付けないとIEFRDER DD文に定義したデータセットの格納ボリュームの装置アドレスが識別名になります。XWTRは識別名で停止させますから任意の識別名を自分で付けた方がわかりやすいでしょう。
起動時にSYSOUTクラスを簡単に変更することが出来ます。カンマ記号3つの後に、スプールから取り出すSYSOUTクラスを指定します。例ではJ、KおよびLの3つのクラスを指定しています。また起動中にMODIFYコマンドでクラスを変更することもできます。
XWTRはスプールから取り出すSYSOUTをクラスで選択します。起動後にMODIFYコマンドを使えば、DEST、FORM、ライタープログラム名、ジョブIDでの選択もできます。ただしジョブ名では選択できません。ジョブ名で選択するなら、TSOのOUTPUTコマンドを利用できます。
OUT jobname(jobid) PRINT('output datasetname')
ただしSYSOUTはホールドされていて、ジョブ名はTSOユーザーIDと同じ名前で始まっていなければならないなどの制限があります。MVSであればSDSFの方が使いやすいでしょう。「SDSFで表示中のSYSOUTをデータセットに取り込む」