■ DDステートメント
DD(データ定義) ステートメントは、データ・セットについて記述し、
そのデータセットに必要な入出力資源を指定するために使用します。
ジョブ・ステップ当たりの DDステートメントの最大数は3273ステートメントです。
印刷装置へ出力する場合は、JESのクラス、または、印刷装置名を指定します。
SYSOUT=*と指定すると、JOBステートメントのMSGCLASSと同じクラスに出力されます。
EX1) //name DD DSN=aaaaaa, DISP=(xxx,xxx), UNIT=xxxxx, SPACE=(xxx,(m,n)), DCB=…, ↑
↑
↑
↑
↑
↑
DD名 ファイル名 ファイルの
前処理と
後処理装置の種類 割り当てる容量 ファイル属性
EX2) //name DD * ABCDEFGHIJKLMN
NMLKJIHGFEDCBA/*
EX3) //name DD DUMMY /*
<主なキーワードパラメータ>
DSN=xxx.yyy.zzz データセット名を指定するキーワードです。
データ・セット名の最大長はピリオドを含めて44文字、 ピリオドとピリオドの間は1~8桁の英数字または国別文字 ($、#、@)です。
DISP=(aaa,bbb,ccc) JOBの実行前後でのデータセットの処置を指定するキーワードです。
aaa…データセットの前処理
NEW or SHR or OLD or MOD
省略時解釈はNEWです。
bbb…データセットの後処理(正常終了時)
DELETE or KEEP or PASS or CATLG or UNCALTG
省略時解釈はaaaがNEWの場合DELETE、aaaがOLD/SHR/MODの場合KEEPです。
ccc…データセットの後処理(異常終了時)
DELETE or KEEP or CALTG or UNCALTG
省略時解釈はaaaがNEWの場合DELETE、aaaがOLD/SHR/MODの場合KEEPです。
NEW:このステップで新規データ・セットを作成します。
OLD:このステップ以前からデータ・セットが存在している場合で占有の読み取りです。
SHR:このステップ以前からデータ・セットが存在している場合で共有の読み取りです。
MOD:このステップ以前からデータ・セットが存在しレコードをデータ・セットの終わりに追加します。
KEEP:このステップが終了した場合、データ・セットを保存します。
DELETE:このステップが終了した場合、データ・セットを削除します。
CATLG:このステップが終了した場合、データ・セットをカタログします。
UNCATLG:このステップが終了した場合、データ・セットをアンカタログします。
PASS:このデータ・セットを同一ジョブ内の後続のステップに渡します。
例えば、DISP=(,CATLG)と指定するとDISP=(NEW,CATLG,DELETE)と同意で、DISP=OLDと指定するとDISP=(OLD,KEEP,KEEP)と同意になります。UNIT=装置タイプ システムに装置情報を与えるキーワードです。 UNIT=AFF=dd名 DD直前のDDステートメントと同じ装置の割当てを要求します。
VOL=SER=xxx データ・セットが常駐しているか、または常駐する予定のボリューム を通し番号で指定します。
ボリューム通し番号は、1文字から66文字までの 英数字または国別文字 ($、#、@)、または特殊文字です。 ハイフン以外の特殊文字を含む通し番号は、アポストロフィで囲みます。
VOL=(,RETAIN,nn,volume-count) 私用テープ・ボリュームの場合、RETAIN は、 このボリュームをデータ・セットのクローズ後 またはステップの終了後に取り外したり巻き戻した りしないことを要求します。
公用テープ・ボリュームの場合、RETAINは、 このボリュームをジョブの実行中に取り外す場合、 装置にそのまま残しておくよう要求します。
nnは出力データ・セットに必要なボリュームの最大数を指定します。
volume-countは、1から255までの範囲の10進数です。
1つのジョブステップ内の全DDステートメントのvolume-countの合計が、 4095を超えてはなりません。
SPACE=(zzz,(mm,nn),RLSE) データセットが初めて出力される時に必要な容量を指定します。
zzz…データセットのスペース要求の単位
CYL(シリンダー単位)
TRK(トラック単位)
mm…一次容量
nn…二次容量(MAX15回まで割り当て) ←15回を超えるとS-B37でアベンドします。
RLSE…出力データ・セットに割り振られたが、まだ使用されていない スペースを、データ・セッのクローズ時に解放するように要求します。
未使用スペースは、データ・セットが出力用にオープン してあり、最後の操作が書込みであった場合にのみ解放されます。
RLSEの代わりにCONTIGを指定すると、連続する領域の割り振りを行います。
RLSEの代わりにROUNDを指定すると、シリンダー単位に丸めたブロック長による割り振り連続する領域の割り振りを行います。
※VTSなどのTAPE装置にSPACEパラメータを指定しても効きません。無視されます。・・・ S-B37になることはありません。LABEL=RETPD=nn データ・セットの保存期間を指定するキーワードです。
LABEL=EXPDT=yyddd データ・セットの満了日を指定するキーワードです。
LABEL=(n,BLP) TAPEのラベルの迂回をします。 テープラベルはここを参照
DCB=(RECFM=xyz,LRECL=mmm,BLKSIZE=nnn) レコードの編成情報を指定するキーワードです。
RECFM=xyz : レコード編成(xyzは下記参照)。RECFMを省略すると不定長で非ブロック化の編成になります。
LRECL=mmm : レコード長
BLKSIZE=nnn : ブロック長(最大の長さはDISKの場合32,760(VBの場合は32,756))、TAPEの場合2,147,483,648です)
固定長の場合、BLKSIZEは、LRECLのn倍の数になります。
可変長の場合、BLKSIZEは、LRECLのn倍の数+4(または4の倍数)になります。*
(上のEX2のことです)*を指定した場合、次の行から次のJCLステートメント(/*か//)がでてくるまで、入力ストリームとして扱われます。 EX2の場合では、ABCDEFGHIJKLMNとNMLKJIHGFEDCBAの2行がデータとなります。 DUMMY
(上のEX3のことです)DUMMYを指定した場合、データセットに送致または記憶スペースを割り振らない、かつ、データセットの後処理を行わないことを意味します。
プログラムからみると、0件データとなります。
※ x ~ F…固定長、V…可変長、U…不定長 y ~ B…ブロック化 z ~ A…レコードに、ISO/ANSI 制御文字が入っていることを示します M…レコードに、機械コード制御文字が入っていることを示します 【ANSIで定義された印刷制御文字】
値 レコード印刷前の処置 ブランク 1行スペース(=次の行に印刷) 0 2行スペース(=1行の空白行をあけて印刷) - 3行スペース(=2行の空白をあけて印刷 + スペースせず(=重ねうち) 1 新しいページの1行目(=改ページ)
※ IBMのレコード形式はここを見て下さい
◆ コラム
DDNAMEはシステムで決められている特殊なDDステートメント以外は、全てそのEXECで指定している プログラムの中で指定しているDD名(=外部参照名)です。
ですから、JCL中にどんなDD名を指定するかはそのプログラムの仕様を見なければわからないのです。
原典:日本アイ・ビー・エム株式会社
GC28-1757-00
OS/390 MVS JCL Reference
(一部改変)