JCLでシステム日付を自動取得する「変数」の極意|27年選手のIT格闘家が教える時短術

データセンターのサーバーラックを背景に、ベテランエンジニア(じいじ)が格闘家の構えから両手を突き出し、青白く光る「&」の記号や「&SYSUID」「&LYYYYMMDD」といった変数の粒子を放っている様子。空間にはJCLのSET文やEXPORT文が書かれたホログラムパネルが浮かび、中央には「JCL変数攻略」という力強いテキストが刻まれている。 【技術深掘り】メインフレーム遺産
そのJCLに魂を吹き込め。変数(シンボリック)を操り、運用を自動化する極意を伝授するぜ。

「JCLの変数(シンボリック・パラメータ)って、書き方が独特で分かりにくい……」

「ピリオド(.)の連結ルールが複雑で、実行するたびにエラーが出て嫌になる……」

メインフレームの現場で、こんな風に立ち止まっている若手エンジニアは多いはずだ。だが、安心してくれ。その悩み、今日ここで**KO(ノックアウト)**してやるぜ。

俺はIT格闘家のじいじ。

27年間、メインフレームというリングで戦い続けてきたエンジニアだ。

JCLの変数は、使いこなせば「日付取得の自動化」や「運用コスト削減」を瞬時に実現する最強の必殺技になる。だが、ピリオド一つの打ち忘れという「現場の罠」にハマれば、深夜の呼び出しやデバッグ地獄に引きずり込まれる諸刃の剣でもあるんだ。

この記事では、

  • JCL変数の基礎から「システムシンボリック」の活用法
  • 実戦で差がつく!IDCAMS(SYSIN)への変数流し込み(EXPORT文)
  • 27年選手が教える「ピリオド連結」と「現場の罠」回避術

これらを、俺の27年の経験を武器に、実戦サンプルを交えて直伝するぜ。

お前が手動の書き換え作業から解放され、スマートにJCLを操る「IT格闘家」への第一歩を踏み出すためのガイドだ。

準備はいいか? 変数マスターへのゴングを鳴らすぜ!

データセンターの司令室で、ベテランエンジニア(じいじ)がハイテクなタクティカル・コンソールを操作し、システムシンボリック変数のリストを武器のインベントリのように表示している様子。ホログラムパネルには「&SYSUID. (USER ID)」「&LYYYYMMDD. (DATE)」「&LHHMMSS. (TIME)」「&LWDAY. (DAY OF WEEK)」といった文字が、手裏剣やクナイのような武器のアイコンと共に青く光り輝いている。中央には「SYSTEM SYMBOLICS 一線級の武器リスト」という力強い文字が浮かんでいる。
OSが用意した「標準装備」を使いこなせ。これらはすべて、JCLエラーをKOするための強力な武器だ。

システム標準装備:一線級の武器リスト

OS(z/OS)が最初から持っている「システムシンボリック」だ。日本の現場なら、ローカル時刻を示す**「L」付き**を使うのが鉄則だぜ。

変数名(シンボリック) 叩き出される値(例) 現場での主な用途
&SYSUID. JIJI01 個人用データセットの識別・テスト用
&LYYYYMMDD. 20260504 日次処理のバックアップ名(西暦4桁)
&LHHMMSS. 153005 同一日の重複防止(時分秒まで刻む)
&LWDAY. MON, TUE… 曜日別の処理分岐、週末限定処理
&LYYYY. 2026 年度末更新、年次アーカイブ用
&LMM. 01 – 12 月次バッチ、月別ログ管理
&LDD. 01 – 31 日次ローテーション管理
※「L」から始まる変数はローカル時刻(日本時間)を指すぜ。現場の鉄則だ!
データセンターの中央に立つベテランエンジニア(じいじ)を囲むように、3つの技術的なオーブ(光の球体)が浮かんでいる様子。左側のオーブにはスパナのアイコンと「SET文」の文字、上部のオーブには巻物と「PROC」の文字、右側のオーブには「SYSIN」と書かれた書類を光線が貫く「EXPORT / SYSIN」の文字が描かれている。画面上部には「必殺!3つの変数アプローチ」という大きなタイトルが刻印されている。
状況に合わせて技を選べ。「SET」「PROC」「EXPORT」を使い分ければ、どんなJCL修正も一撃だ。

必殺!3つの変数アプローチ

基本の「SET文」:オリジナル武器の錬成

ジョブの先頭で定義して、JCL全体で使い回す。

//   SET ENV=PROD
//   SET BASE=MY.APP.DATA
//STEP1    EXEC PGM=MYPROG
//OUTDD    DD DSN=&BASE..&ENV..D&LYYYYMMDD.,DISP=(NEW,CATLG)

※ピリオドが2つ(..)重なるのは、「変数の終わり」と「データセットの区切り」だ。JCLエラーの急所だからな!

継承の「PROC」:師匠から弟子への奥義

カタログド・プロシージャ(PROC)に値を渡す方法だ。これが一番現場で使われている。

【JCLサンプル(呼ぶ側)】

//RUNPROC  EXEC MYPROC,MYVAL='REXX.LIB',RETRY=3

【PROC本体(MYPROC)】

//MYPROC   PROC MYVAL='DEFAULT.LIB',RETRY=1  <-- 初期値も設定できる
//STEP1    EXEC PGM=MAINPROG
//LIBDD    DD DSN=&MYVAL.,DISP=SHR
//SYSIN    DD *
  OPTION RETRY=&RETRY.
/*

極意!「SYSINへの流し込み」:EXPORT文

通常、変数はDD文などの「JCLの行」でしか使えねえ。だが、EXPORT 文を使えば、プログラムに渡す「制御カード(SYSIN)」の中でも変数が爆発するぜ!

データセンター内でエンジニア(じいじ)がホログラムコンソールを操作し、JCL変数をプログラムの制御カード(SYSIN)へ流し込むプロセスを説明している図解。左側の「SET文」で定義された変数の粒子が、「EXPORT GATE」という青い光のリングを通過することで有効化され、右側の「IDCAMS SYSIN」ブロック内にある「DELETE &TARGET.DATASET」というコマンドを「DELETE PROD.DB2.LOAD.DATASET」へと動的に書き換えている様子。画面上部には「実戦奥義:IDCAMS変数流し込み」のタイトル。
EXPORT文は、変数をSYSINへ届けるための「通行許可証」だ。これ一つで、JCLの変数が制御カードを動的に書き換える!

【実戦サンプル:IDCAMSで変数を使いこなす】

//SYSINVAR JOB (ACCT),'JIJI-PUNCH'
//   SET   TARGET=OLD.DATA
//   EXPORT SYMLIST=*                   <-- これが変数をSYSINに通す「パスポート」だ!
//*
//STEP1    EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *,SYMBOLS=JCLONLY         <-- ここで「JCLの変数を使うぜ」と宣言しろ!
  DELETE &SYSUID..&TARGET..BACKUP
  SET MAXCC = 0
/*

これを使えば、SQLの条件や各種ツールのパラメータを、JCLの先頭で一括管理できる。修正作業を「点」から「面」の攻撃に変えるんだ。

薄暗いデータセンターの通路で、ベテランエンジニア(じいじ)が低い姿勢の武道の構えをとり、周囲から飛んでくる赤い警告色を放つJCLコード(//DD1 DD DSN=、EXEC PGM=など)を青い光のエフェクトで華麗に捌いている様子。コードの一部には不備やエラーを暗示するノイズが混じっており、それを見抜いて回避する「ベテランの危機管理能力」を格闘技の動きで表現している。
「ピリオド一つ」が命取りになる現場。飛んでくるエラーの刃を、長年の経験(センス)で捌ききれ。

じいじの「現場の罠」回避術:変数編

罠1:ピリオド忘れのカウンター

&DSN.BAK と書くべきところを &DSNBAK と書くと、システムは「&DSNBAKなんて変数は知らん!」とブチ切れる。「変数の終わりはピリオド」、これをリズムで覚えろ。

罠2:JCL内でしか使えないと思い込むな

前述の EXPORT と SYMBOLS=JCLONLY を知らない若手は、わざわざ変数置換のためだけに別のステップを組んだりする。無駄なステップはスタミナの無駄だ。この合わせ技でKOしろ!

データセンター内で、エンジニア(じいじ)が残像が見えるほどの超高速な突き(パンチ)を繰り出している様子。拳の先からは弾丸のようなエネルギー体として「&SYSUID」「&LYYYYMMDD」「&LHHMMSS」「&LWDAY」といった変数のテキストが次々と射出され、サーバーラックへと打ち込まれている。背景には「技術奥義:デバッグ連打」というホログラム文字が浮かび、変数を駆使した圧倒的な処理速度を表現している。
変数を組み合わせれば、一度の実行で「誰が」「いつ」「何時に」実行したかをすべてログに刻める。これぞJCLの連撃だ。

全変数を使いこなす「マシンガン連打」サンプル

これまでの技を全部盛り込んだ、最強のJCLだ。

//VARSTRIKE JOB (ACCT),'IT-MARTIAL-ARTS'
//   EXPORT SYMLIST=*
//   SET ENV=PRD
//   SET APP=SALES
//*************************************************
//STEP1    EXEC PGM=REXXPROG
//INPUT    DD DSN=&SYSUID..&APP..&ENV..IN,DISP=SHR
//OUTPUT   DD DSN=&SYSUID..&APP..&ENV..D&LYYYYMMDD.,
//            DISP=(NEW,CATLG),UNIT=SYSDA,SPACE=(CYL,10)
//SYSIN    DD *,SYMBOLS=JCLONLY
  START_DATE = &LYYYYMMDD.
  USER_ID    = &SYSUID.
  ENVIRONMENT = &ENV.
/*

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

変数は、JCLに「魂」を吹き込む。

だがな、一番大事なのは「後から見る奴が迷わないこと」だ。

複雑すぎる変数の迷路を作るんじゃねえ。

関連記事:

JCLの深淵へ|80列の掟と「カンマの後の沈黙」。27年選手が教えるJOB・EXEC・DD文の極意
JCLの「12列目の聖域」とは何か? 27年選手のエンジニアが、JOB文のパラメータからDISPの三段構え、継続行の「見えない空白」まで、JCL構文の深淵を徹底解説。

コメント

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