「武器(ツール)を使いこなすプロの姿」を強調するスタイルだぜ!
「IEBGENERとIEBCOPY、どっちを使えばいいんだ?」
「IDCAMSのコマンドが多すぎて、やりたいことがすぐできない……」
もしお前がJCLのユーティリティ選びで足踏みしているなら、この**「武器庫」**へようこそ。
俺はIT格闘家のじいじ。27年の現場経験で、多種多様なユーティリティを使い込んできた。
格闘家が相手に合わせてパンチやキックを使い分けるように、エンジニアもデータセットの種類や目的に合わせて、最適なユーティリティを選び出す必要がある。
「とりあえず動けばいい」と適当なツールを選ぶのは、竹槍で戦車に挑むようなもんだ。この記事では、俺が四半世紀の戦いの中で選び抜いた**「これだけは外せない必殺ツール」**を伝授するぜ。
この記事では、
- データコピーの基本!IEBGENERの鉄板サンプル
- データセット管理の守護神、IDCAMSの必須コマンド
- PDS(区分データセット)操作なら任せろ、IEBCOPYの極意
- 大量データも一瞬で捌く、SORT/ICETOOLの破壊力
これらを、現場ですぐにコピペして使えるJCLサンプルと共に叩き込むぜ。
武器の使い方を極めれば、お前の作業スピードは劇的に加速する。
準備はいいか? 最強の武器を手にするためのゴングを鳴らすぜ!
JCLの設計思想:リソースへの「執念」

JCLの基本はJOB、EXEC、DDの3層構造だ。
- JOB文: 実行権限とメモリ(REGION)の確保。
- EXEC文: プログラムの召喚。
- DD文: リソースのマッピング。ここで
DISP=(NEW,CATLG,DELETE)という「成功したら登録、失敗したら消去」という3文字の呪文に、我々は何度救われてきたか。
現場を支える「五大ユーティリティ」実戦ライブラリ

単なる「コピー」や「削除」ではない。これらはシステムという巨大な城壁を守るための精密機械だ。
IDCAMS:データセットの「司令塔」
VSAMの定義からカタログ管理までこなす。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* 既存ファイルを削除(存在しなくてもRC=0で通す現場の知恵) */
DELETE 'USER.DATA.FILE'
SET MAXCC = 0
/* 新規VSAM(KSDS)の定義 */
DEFINE CLUSTER (NAME('USER.DATA.FILE') -
INDEXED KEYS(10 0) RECORDSIZE(80 80) -
TRACKS(5 1) VOLUMES(VOL001))
/*

IEBGENER:データの「搬送機」
最も多用される順編成ファイルの複製ツール。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//STEP020 EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=USER.INPUT.DATA,DISP=SHR
//SYSUT2 DD DSN=USER.BACKUP.DATA,DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(TRK,(10,5),RLSE)
//SYSIN DD DUMMY
※ じいじの視点: RLSEで余剰領域を解放するのがベテランの作法。リソースを1バイトも無駄にしない。
IEBCOPY:PDS(区分データセット)の「外科医」
ロードモジュールのコピーや、断片化した領域の「圧縮(コンプレス)」を担う。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//STEP030 EXEC PGM=IEBCOPY
//SYSPRINT DD SYSOUT=*
//PDSLIB DD DSN=USER.SOURCE.PDS,DISP=OLD
//SYSIN DD *
/* 自分自身を圧縮して空き領域を回収する */
COPY INDD=PDSLIB,OUTDD=PDSLIB
/*

SORT:データの「研磨機」
プログラムを書かずに、JCL側でデータの絞り込みと集計を行う。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//STEP040 EXEC PGM=SORT
//SORTIN DD DSN=USER.RAW.DATA,DISP=SHR
//SORTOUT DD DSN=USER.SORTED.DATA,DISP=(NEW,CATLG,DELETE),
// UNIT=SYSDA,SPACE=(TRK,(10,5),RLSE)
//SYSIN DD *
SORT FIELDS=(1,10,CH,A) /* 10桁目まで昇順ソート */
INCLUDE COND=(11,2,CH,EQ,C'01') /* 11桁目が'01'のみ抽出 */
/*

DFSMSdss (ADRDSSU):システム保護の「盾」
ボリューム全体の退避や、物理的なDUMP/RESTOREを司る。
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
//STEP050 EXEC PGM=ADRDSSU,REGION=4M
//SYSPRINT DD SYSOUT=*
//OUTDD DD DSN=USER.DUMP.BACKUP,DISP=(NEW,CATLG,DELETE),
// UNIT=TAPE,LABEL=(1,SL)
//SYSIN DD *
DUMP DATASET(INCLUDE(USER.IMPORTANT.**)) OUTDDNAME(OUTDD) COMPRESS
/*
27年選手が教える「最恐」のエラーと対策

- B37 / E37 / D37(スペース枯渇): データは生き物だ。昨日のSPACE設定が今日通用すると思うな。
- JCLERR: 1カラム目の「//」を忘れるな。最新のAIも、1列目のスラッシュ忘れには無力だ。
- NOT CATLGD 2: 前回のジョブの「ゴミ」が残っている証拠。
IEFBR14での事前掃除を計画に組み込め。
結び:なぜ今、泥臭いJCLを語るのか
クラウド全盛の今、OSがリソースを勝手に管理してくれる時代になった。しかし、メインフレームの世界で培った**「リソースに対する極限の感性」と、「一つひとつのステップを石橋を叩いて渡るように計画する執念」**は、プラットフォームが変わっても必ず通用する。
私はこの「解析力」と「完遂力」を武器に、次なるステージ(SHIFTやDirbato)での品質管理という戦場へ挑む。
Status: JCLマスターライブラリ公開。次なるデバッグ対象は「自分自身のキャリア」だ



コメント