【メインフレーム】JCL(実行)について整理してみた


 JCLとは  

JCL (Job Control Language) は、メインフレーム上でジョブ(バッチ処理)を実行するために使用されるスクリプト言語。今回はJCLの実行方法や結果確認方法、プロシージャー、ライブラリについて整理する。

 実行方法  

実行方法
SUBMITコマンドを使ってJCLを実行。SUBMITは、JCLジョブをジョブキューに登録し、システムに実行させるためのコマンド

結果確認
ジョブが完了した後、NotifyでMAXCC(最大Condition Code)を確認することで、簡易的に結果を確認
MAXCCはジョブの各ステップで発生したCondition Codeのうち、最大の値を示す

Condition Code意味
0正常終了
4警告終了。成功だが軽微な警告や問題が発生している可能性
8エラー終了。何らかのエラーが発生し、期待した結果を得られなかった。
12深刻なエラー。ジョブやステップが正しく実行できなかった。
16致命的なエラー。処理が完全に失敗した。

 JESとは  

JCLをサブミットするとJES(Job Entry Subsystem)に処理が渡る。
JESは、メインフレーム上でジョブを管理・制御するサブシステム。ジョブを受け取り、実行するためのキューに配置し、終了後の出力を管理する。
JESのプロセスは以下の通り。

プロセス内容
ジョブの受け取りSUBMITコマンドでジョブがキューに登録される
スケジューリングシステムのリソース状況に応じて、ジョブの実行を順次スケジュール
実行管理ジョブが実行される間、CPUやメモリ、入出力デバイスなどのリソースを割り当て
終了と通知ジョブが完了したらMAXCCで結果を通知
SPOOL実行中のジョブや出力結果を一時的に保存
Output

※SPOOLとは、Simultaneous Peripheral Operation On-lineの略

 SDSFについて  

SDSFでは、ジョブの状態や出力を表示し、管理することがでいる。
特にstatus画面ではジョブの詳細を確認・操作できる。
status画面で使用できる主なオプションは以下の通り。

オプション説明
?コマンドの詳細なヘルプを表示。
Sジョブの詳細ステータスを表示。
Owner特定のユーザーのジョブを表示。
Fジョブの出力ファイルを表示。
Preプレフィックスを指定してジョブをフィルタリング。
Pジョブを一時停止(ホールド)する。
Cジョブの詳細をキャンセル。
XDC出力を別のデバイスにリダイレクト。

 プロシージャについて  

JCLにおいて、主に3つのプロシージャータイプが存在する。

タイプ説明
インストリームプロシージャーJCL内に直接記述されたプロシージャー。ジョブの一部として定義され、ジョブの中でのみ有効。外部からの参照は不可。
カタログプロシージャーカタログに保存されたプロシージャー。複数のジョブから参照して再利用可能。同じ処理を複数のジョブで使い回せる。
ネストプロシージャープロシージャーの中で別のプロシージャーを呼び出す。複数のプロシージャーを組み合わせて、より複雑な処理を構成可能

シンボルパラメーター:「&」
「&」を使ってプロシージャー内の変数を定義し、ジョブ実行時に実際の値で置き換え可能。

 最後に  

一旦、メインフレームシリーズはここで終わりにします。(私の業務上必要なくなりそうなので。。。)