TSS端末(IBMではTSO)は元々ダム(DUMB)端末と呼ばれており、画面サイズは80Byte * 25
行でした。
パソコンの普及につれ、JCLをPCのテキストエディタで作成し、アップロード・ダウンロードするようになりました。
PCの方が文字数・行数ともにたくさん表示出来るからです。
ところがVSCodeは拡張機能としてz/OSのTSO端末接続機能があるらしく、アップロード・ダウンロードが自動化されているらしく羨ましいです。
それにOSIV/MSP用富士通提供製品では正規表現による検索ができませんが、VSCodeでは可能ですよね!
区分データセットの各メンバがJCLになっているライブラリを丸ごとダウンロードして、PCで正規表現を使った検索をしたいと思ったことがあります。メンバが多く、1つずつダウンロードする気にはなれません。
そこでJSDGENER(IBMではIEBGENER)の以下の4行を生成するExcel関数を考えました。
これは各メンバを連続した1つのファイにするもので、これをダウンロードしPC側で分割することにしました。
ただし前もってメンバ一覧を取得する必要があります。
メンバ名がMEMBER01の場合の例を以下に示します。
生成する4行
//MEMBER01 EXEC GENERX,MEM=MEMBER01
//MEMBER01.SYSIN DD *
GENERATE
RECORD FIELD=(010,'MEMBER01 ',,001),FIELD=(080,001,,011)
入力ストリームプロシジャ(GENERX)
//GENERX PROC MEM=
//&MEM EXEC PGM=JSDGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DISP=SHR,DSN=@UID.SPLIT.CNTL
// DD DISP=SHR,DSN=SHR.LIBLARY.CNTL(&MEM)
//SYSUT2 DD DISP=MOD,DSN=@UID.LIBLARY.CNTL
// PEND
Excel関数
=IF(LEN(B6)=0,
"",
IF(MOD(A6,4)=1,
CONCATENATE("//",B6,REPT(" ",9-LEN(B6)),"EXEC MACROGNR,MEM=",B6),
IF(MOD(A6,4)=2,
CONCATENATE("//",B6,".SYSIN DD *"),
IF(MOD(A6,4)=3,
" GENERATE",
CONCATENATE(" RECORD FIELD=(010,'",B6,REPT(" ",10-LEN(B6)),"',,001),FIELD=(080,001,,011)")
)
)
)
)
Excel
No. | Menber | JCL |
---|---|---|
1 | Member01 | //MEMBER01 EXEC GENERX |
2 | Member01 | //MEMBER01.SYSIN DD * |
3 | Member01 | GENERATE |
4 | Member01 | RECORD FIELD=(010,'MEMBER01 ',,001),FIELD=(080,001,,011) |
5 | Member02 | //MEMBER02 EXEC GENERX |