JCL DD文の完全攻略|27年選手が教える「DISP」と「データ定義」の極意

データセンターのサーバーラックの前で、JCL DD文の主要パラメータ(DSN, DISP, SPACE, LIKE, DCB)がネットワーク状に繋がった巨大なホログラム・ディスプレイを操作するベテランエンジニアの横顔。各パラメータの連動性を視覚化した近未来的なシステム図。 【技術深掘り】メインフレーム遺産
DD文の全パラメータを掌握し、メインフレームのリソース定義を完璧にコントロールする。

「DD文の設定項目が多すぎて、何を書けばいいのか分からない……」

「DISP=(NEW,CATLG,DELETE)って、結局どういう動きをするんだ?」

もしお前がDD文のパラメータの海に溺れそうになっているなら、安心してくれ。ここはJCLの基礎体力を鍛え上げる**「データ定義の道場」**だ。

俺はIT格闘家のじいじ。27年の現場経験で、数えきれないほどのDD文を書き、そして不適切なDISP設定でデータが消え去る悲劇も見てきた。

DD文は、プログラムという「格闘家」に、どの「武器(データ)」を使わせるかを指定する、いわば装備選択だ。ここを間違えれば、どんなに強いプログラムも戦う前に自滅しちまう。

この記事では、

  • DD文の基本構造と、DSN・UNIT・VOLの役割
  • 現場で必須!DISP(後続処理)の最強コンビネーション解説

これらを、実戦サンプルを交えて27年選手の俺が叩き込む。

読み終える頃には、お前はDD文を「なんとなく」ではなく「確信を持って」書けるようになっているはずだ。

さあ、最強の装備を整えるためのゴングを鳴らすぜ!

DSN:戦う相手(データセット名)を指名しろ

まずはどのファイルと戦うのか、名前をはっきりさせるのが基本だ。

解説

44文字以内で指定。一時ファイルなら && を付けるのが掟だぜ。

//MYDATA   DD  DSN=USER.LIVE.DATA,DISP=SHR
JCLのDISPパラメータの3つのセクション(STATUS, NORMAL, ABNORMAL)を視覚化したサイバーな操作パネル。STATUS(NEW, OLD, MOD, SHR)からNORMAL(CATLG, DELETE, KEEP, PASS)、さらにABNORMAL(CATLG, DELETE, KEEP)へと論理的なフローが線で繋がっており、ベテランエンジニアの手がCATLGを選択している様子。
DISPは「開始・成功・失敗」の3段コンボ。それぞれの状態を正しく繋ぐのがプロの作法だ。

DISP:後始末の美学(全パラメータ完全解説

DISP(ディスポジション)は、試合開始時の状態と、終わった後の勝ち名乗り(後始末)を決める。

(状態, 正常終了時, 異常終了時) の3要素で構成されるぜ。

 第1パラメータ:状態(ステータス)

  • NEW: 新しくリング(ファイル)を作る。
  • OLD: 既存ファイルを独占(排他)して使う。ガチの勝負だ。
  • SHR: 既存ファイルをみんなで共有。読み取り専用ならこれだ。
  • MOD: 既存データのケツに追記する。

第2パラメータ:正常終了時(ノーマル・ディスポ)

  • CATLG: カタログに登録して保存。次戦に備える。
  • DELETE: 用が済んだら削除。リングを綺麗にするのがマナーだ。
  • PASS: 次のステップへバトンを繋ぐ!
  • KEEP: 削除せず保持する(カタログはしない)。

第3パラメータ:異常終了時(アブノーマル・ディスポ)

  • DELETE: ABENDしたら中途半端なブツは消しちまえ!再戦(再実行)の邪魔だ。
  • CATLG: 負けた原因(データ)を調査するために残す時に使う。
//OUTPUT   DD  DSN=USER.DATA.RESULT,
//             DISP=(NEW,CATLG,DELETE),UNIT=SYSDA,SPACE=(CYL,5)

UNIT & VOL:戦う場所(デバイス)を確保しろ

  • UNIT: 装置名(SYSDAなど)を指定。
  • VOL=SER: 特定のディスク(ボリューム名)を指名する時に使う。
//DISK01   DD  UNIT=SYSDA,VOL=SER=VOL001,DSN=&&TEMP,SPACE=(TRK,5)

SPACE:リングの広さ(領域)を決めろ

解説: (単位, (一次量, 二次量), RLSE)

じいじの一撃: RLSE(未使用領域解放)を忘れんな!余ったスペースをシステムに返す。これができる奴が「デキるエンジニア」だ。

//WORK     DD  UNIT=SYSDA,SPACE=(CYL,(10,5),RLSE)

DCB:戦い方のスタイル(属性)を定義しろ

データの「型」を決めるパラメータだ。ここを間違えると速攻でKO(ABEND)されるぜ。

  • RECFM: レコード形式(FB: 固定長、VB: 可変長など)。
  • LRECL: 1レコードの長さ。
  • BLKSIZE: ブロックサイズ。今は 0 指定でシステムに任せるのが「現代流」だ!
//FILEA    DD  DSN=USER.DATA.FB,DISP=(NEW,CATLG),
//             DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
//             UNIT=SYSDA,SPACE=(TRK,1)
データセンターを背景に、JCLのLIKE指定と後退参照を視覚化した図解。'MODEL'と書かれたデータキューブから'LIKE'キューブへ属性情報(LRECL, RECFM等)が光り輝くラインでコピーされている。また、右側には'STEP1'というフロー図があり、そこから'REF'(参照)という青い光のラインがエンジニアの手元へと繋がっている様子。
「LIKE」で型を写し、「後退参照」で絆を繋ぐ。スマートなJCLには欠かせないテクニックだ。

LIKE:最強のコピー術(既存属性の継承)

「あのファイルと同じ設定で作ってくれ」という便利な技だ。

解説: LIKE=モデルファイル名 と書く。

注意: 属性はコピーするが、SPACE(サイズ)はコピーされないから自分で書けよ!

//NEWFILE  DD  DSN=USER.COPY.FILE,
//             DISP=(NEW,CATLG),
//             LIKE=USER.MASTER.MODEL,
//             SPACE=(CYL,1)

SYSOUT:試合結果のジャッジ(出力)

実行ログやリストの出し先だ。

解説: SYSOUT=* で標準出力クラスへ。

//SYSPRINT DD  SYSOUT=*

DUMMY:シャドーボクシング(空振り処理)

実際にファイルを読み書きせずに、プログラムの動きだけ確認したい時に使うぜ。

//SYSIN    DD  DUMMY

* :直筆のサイン(インストリーム・データ)

JCLの中に直接、制御パラメータなどを書き込む時に使う。

//SYSIN    DD  *
  SORT FIELDS=COPY
/*

後退参照:前のステップの背中を追え

「さっきのステップで作ったアレを使いたい」という時に使う。

書式: DSN=*.ステップ名.DD名

//STEP1    EXEC PGM=PROG1
//OUT      DD DSN=&&TEMP,DISP=(NEW,PASS),UNIT=SYSDA,SPACE=(TRK,1)
//*
//STEP2    EXEC PGM=PROG2
//IN       DD DSN=*.STEP1.OUT,DISP=(OLD,DELETE)

【じいじのデバッグ・ログ:最後に一言】

DD文は、一箇所でもカンマが足りなかったり、スペルが違ったりすれば「JCLエラー」で試合終了だ。

だが、このパラメータを自由自在に操れるようになれば、メインフレームという巨大な獣を乗りこなす「真の格闘家」になれるぜ。

若手諸君、現場でABENDを食らっても腐るなよ。それはお前が強くなるための「伸び代」だ!

わからないことがあったら、いつでも俺のブログに戻ってきな。

よし、今回の特訓はここまで!次は「世代管理(GDG)」あたりを叩き込んでやるか……。楽しみにしてろよ!

「次は、ジョブの親子関係を管理する『GDG(世代管理)』について特訓するぜ。準備はいいか?」

関連記事:

JCLの深淵へ|80列の掟と「カンマの後の沈黙」。27年選手が教えるJOB・EXEC・DD文の極意
JCLの「12列目の聖域」とは何か? 27年選手のエンジニアが、JOB文のパラメータからDISPの三段構え、継続行の「見えない空白」まで、JCL構文の深淵を徹底解説。
JCL JOB文の極意|27年選手が教える「入場資格」と「リソース制御」の鉄則
IT格闘家じいじが贈る、JOB文パラメータ完全ガイド。12列目の聖域から、隠しパラメータのRESTARTまで。27年選手の「システムとの戦い方」を伝授する。
JCL EXEC文の極意|27年選手が教える「PARM渡し」と「条件判定(COND)」の戦術
最新のz/OS 2.1仕様に基づき、JCL EXEC文を徹底解剖。PARMDDによる長尺パラメータの渡し方や、IF文によるスマートな条件制御をサンプルJCL付きで解説。27年の現場経験を凝縮した、次世代へ贈る決定版だ。
JCLのGDG(世代データ群)完全攻略|27年選手が教える「世代管理」の罠と回避術
データは使い捨てじゃねえ!IT格闘家じいじが、JCL運用の要「GDG(世代管理)」を徹底解説。IDCAMSでの定義から、(+1)や(0)の使い分け、現場で食らいやすい「世代の罠」の回避術まで、27年の経験を凝縮して伝授するぜ。

コメント

タイトルとURLをコピーしました