JCLのDDカードについて、まとめます。
DDカードはデータの入力、出力を定義することが出来ます。これは、実行するプログラムが同じでもDDの定義が異なればまるで異なる処理をすることになることを意味しています。
本記事では、題材として次のコードを用います。
//STEPB EXEC PGM=CHAR //DD2 DD DSN=XTRA,DISP=OLD //DD3 DD DSN=*.STEPA.DD1,DISP=(OLD,PASS,DELETE)
DD名
上記のように記載すると、プログラムCHARの中でDD2という変数、DD3という変数を使用することが出来ます。DD2、DD3をDD名と言います。
Javaとかだと変数を定義してから処理を実行し、定義した変数を処理中で使うよう記述するのですが、JCLは反対ですね。
SYSOUT
SYSOUTで出力の設定をすることが出来ます。DD文でSYSOUTパラメーターを定義すると仮想のデータ・セットとして、JESのスプールに格納されます。これをSYSOUTデータ・セットと言います。スプールに格納されたデータはジョブが終了次第、自動的に出力されます。出力場所はSYSOUTパラメーターと、プリンターの設定次第です(パラメータはAからZ、0から9の36種類)。
SYSIN
SYSINを設定して入力用のJESのスプールに仮想のデータセットを格納出来ます。これをSYSINデータ・セットと言います。
SYSINにデータ・セット名を指定してファイルを読み込ませることも出来るし、その場で記述したものを読み込ませることも出来ます。
SYSINにデータ・セット名を指定してファイルを読み込ませる
//SYSIN DD DSN=...
その場で記述したものを読み込ませる
//SYSIN DD * SYSINデータ /*
その場で読み込ませる場合、この記述( /* )が来たらデータの読み込み終了の合図です。これを区切りステートメントと言います。コメント(//*)と似ているので注意が必要です。
データセット
DD2はXTRAという外部ファイルを代入したものです。
DD3は*.STEPA.DD1という外部ファイルを代入したものです。
ここで外部ファイルはデータ・セットと言います。外部ファイルの名前をデータ・セット名と言い、DSN=の右辺に記載します。
DISP
DISPはデータセットに対してどのようにアクセスするかを指定します。記述フォーマットとしては次のとおりです。第一引数は必須項目、第二引数、第三引数は任意項目です。
DISP=( 前処理, [後処理(正常終了時)], [後処理(異常終了時)] )
第一引数がNEWであれば新規作成としてアクセスします。その他、既存DDに対して排他ロックをかけてアクセスしたり、共有としてアクセスしたりを指定することができます。
DUMMY
//OUTDD1 DD DUMMY
このように記載するとDUMMYとしてDDカードをセットすることが出来ます。DUMMYとしたDDカードは入出力が無視されます。入出力は無視されますが、パラメーターは設定することが出来ます。
参考