「GDG(世代データ群)って、仕組みが複雑でややこしい……」
「(+1)とか(0)の設定ミスで、本番データを消しちゃわないか不安だ……」
もしお前が今、そんな悩みを抱えてメインフレームの画面(3270)と睨み合っているなら、安心してくれ。ここは、そんな迷えるエンジニアのための**「JCL修練場」**だ。
俺はIT格闘家のじいじ。
27年の現場経験の中で、GDGの定義ミスで冷や汗をかいた若手を山ほど見てきたし、俺自身も数え切れないほどのデータセットと向き合ってきた。
GDGは、正しく使えば「世代管理を自動化する最強の盾」になるが、仕組みを曖昧にしたまま使うと、大切なデータを「世代溢れ」で場外に弾き飛ばしちまう諸刃の剣だ。
この記事では、
- GDGBASEの正しい定義方法(IDCAMS)
- (+1)や(0)を使いこなす「世代指定」のコンビネーション
- 現場で絶対にやらかしたくない「世代溢れ対策」の極意
これらを、27年選手の俺が実戦サンプルを交えて直伝するぜ。
読み終える頃には、お前のGDGに対する不安は完全に**KO(ノックアウト)**されているはずだ。
さあ、準備はいいか? メインフレーム攻略のゴングを鳴らすぜ!

GDGとは「データの家系図」だ!
GDGは、同じ名前のデータセットを「世代」という背番号で管理する仕組みだ。
- (0): 現在の最新世代(今戦っている現役王者だ)
- (-1): 一代前の世代(昨日の王者、引退した先代だ)
- (+1): 次に生まれる新世代(これから作る期待の新星だ)
これを使えば、JCLを一度書くだけで、毎日勝手に「最新」を追いかけてくれる。これがメインフレームの自動化の神髄だぜ。

リングの設営:IDCAMSでGDGを定義し
GDGを使うには、まず「家計のルール」をシステムに登録する必要がある。ここで使うのは、メインフレーム界の万能ナイフ**「IDCAMS」**だ。
//DEFGDG EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEFINE GDG (NAME(USER.DATA.HISTORY) -
LIMIT(7) -
NOEMPTY -
SCRATCH)
/*
じいじのチェックポイント:
- LIMIT(7): 何世代残すかだ。1週間分なら「7」。最大255までいけるが、ディスク容量と相談しろよ!
- SCRATCH: 世代が溢れた時、古いデータを完全に消去(スクラッチ)する設定だ。これを忘れると、カタログからは消えてもディスクにゴミが残る「亡霊データ」になっちまうぜ。

実戦!JCLでの世代交代コンボ
新世代を作って、旧世代を読み込む。このコンボがGDGの基本だ。
新世代の誕生(+1)
今日の処理結果を保存する時は、迷わず (+1) を指名しろ。
//STEP1 EXEC PGM=PROG1
//OUTDD DD DSN=USER.DATA.HISTORY(+1),
// DISP=(NEW,CATLG),UNIT=SYSDA,SPACE=(CYL,5),
// DCB=USER.DATA.MODEL
過去の知恵を借りる(0, -1…)
昨日の結果(最新)を読み込む時は (0)、一昨日なら (-1) だ。
//STEP2 EXEC PGM=PROG2
//INDD DD DSN=USER.DATA.HISTORY(0),DISP=SHR

じいじの「現場の罠」回避術:JCLエラーをKOしろ!
27年もやってると、GDG特有のカウンターパンチを何度も食らってきた。お前らはこれを読んで回避しな!
罠1:同一ジョブ内の (+1) の怪
同じジョブの中で、STEP1で (+1) を作り、STEP2でそれを使いたい時、STEP2では (0) ではなく、そのまま (+1) と書くのが掟だ!
ジョブが終わるまでは、まだそいつは「新星(+1)」のままで、正式な「現役王者(0)」にはなってねえからな。
罠2:ABEND時の「世代の断絶」
(+1) を作るステップでジョブが落ちた(ABENDした)場合、DISP設定によっては中途半端な世代が残ったり、逆に世代が進まなかったりする。
リカバリ(再実行)の時は、今どっちの状態にいるのか、カタログをしっかり確認してからリングに戻れよ!

全世代への「マシンガン連打」
世代番号を付けずに、ベース名(USER.DATA.HISTORY)だけで指定してみろ。
するとシステムは、今ある全世代を一つに繋げて読み込んでくれる。1週間分のデータを一気に集計したい時なんかに使える、超強力な必殺技だぜ!
じいじのデバッグ・ログ:最後に一言
GDGは、単なるファイル管理じゃねえ。過去のデータをリスペクトし、未来の処理へバトンを繋ぐ「設計の思想」だ。
「LIMITをいくつにするか?」「溢れたデータはどうするか?」……その一つひとつの判断に、お前のエンジニアとしてのセンスが宿る。
若手諸君、データの家系図を汚すような雑な設計はするなよ。
綺麗な世代交代ができるようになって、初めて一人前の「メインフレーム格闘家」だ!
よし、特訓終了!次は……「ソート(SORT)処理の極意」でも教えてやるか。
データの並び替えを制する者は、業務を制する。楽しみにしてろよ!
関連記事:



コメント