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


 JCLとは  

JCL (Job Control Language) は、メインフレーム上でジョブ(バッチ処理)を実行するために使用されるスクリプト言語。JCLを使用して、システムにジョブの内容や処理方法を指示し、データセットの処理やプログラムの実行を管理します。例えば、ファイル操作やプログラムの起動、データの入出力など、バッチ処理に必要な設定を記述する。
ステートメントとパラメータで構成される。
・ステートメント:
ジョブ内で行われる操作やリソースの指定を指示する命令のこと。1つのステートメントは、命令とそれに関連するパラメーターから成り立つ。JCLには3種類の主要なステートメントが(JOB, EXEC, DD)がある。
・パラメータ:
ステートメントの詳細な実行方法を指定するオプション。パラメーターにはPositional ParameterとKeyword Parameterの2種類がある。たとえば、ジョブの優先順位やデータセットの割り当てに関する情報などが含まれる。

 ステートメント  

各ステートメントの役割と例

ステートメント役割
JOBジョブの開始を指示し、ジョブ名やジョブのリソース(メモリ、時間、優先度など)を定義。ジョブ全体の属性を設定//MYJOB JOB (ACCT),'My Job',CLASS=A,MSGCLASS=X
EXECプログラムやプロシージャを実行するためのステートメント。どのプログラムを使用・実行するかを定義//STEP1 EXEC PGM=SORT
DDData Definitionの略で、ジョブで使用するデータセットやリソースを指定。データセットの入力、出力先、処理内容を指示//SORTIN DD DSN=MY.DATASET.INPUT,DISP=SHR

 パラメータ  

PositionalとKeywordパラメータの役割

パラメータ役割
Positional Parametersパラメーターの順序が決まっており、指定する位置が意味を持つ。JCLでは、CLASS, MSGCLASSといったジョブの属性を順序どおりに指定
Keyword Parametersパラメーター名と値をペアで指定する形式。順序に関係なく指定可能。

 Syntax  

開始行、終了行、コメント行のルールについて

タイプ説明
開始行JCLの各ステートメントの識別子で、//で始まる。//の後には、8文字以内のステップ・ジョブ名を記述。その後に命令とパラメーターが続く//SORT0001 EXEC PGM=SORT
コメント//*を使う。JCLの実行には影響を与えず、メモや説明を記述することが可能//* This is a comment line
終了行/*を使う。ジョブの定義やデータ入力の終了を示す//SYSIN DD *
 INPUT DATA
/*

 各ステートメントとパラメータについて  

JOBステートメント - 各Keywordパラメーターについて

パラメータ説明詳細
CLASSジョブの優先度やリソースの割り当てを決定AやPなどの文字で指定。Aは通常、対話的ジョブ、Pはバッチジョブ。
PRTYジョブの優先順位を0〜15で指定。数値が大きいほど優先順位高
NOTIFYジョブが終了した際に通知するユーザーIDを指定&SYSUIDを使用すると、ジョブをサブミットしたユーザーに通知
MSGCLASSジョブのメッセージ出力をどこに送るか指定Aは印刷用の標準出力。XはユーザーIDに関連付けられた出力
MSGLEVEL出力されるメッセージのレベルを制御後述
TYPRUNジョブの実行タイミングを制御HOLDはジョブを保留し、SCANはジョブを解析するが実行はしない。
TIMEジョブまたはステップの実行時間制限を指定TIME=1440で1日(1440分)まで許可。TIME=0で制限なし。
REGIONジョブまたはステップで使用できるメモリ量を指定REGION=4Mなら4メガバイト、REGION=4096Kは同義。

MSGLEVELについて
ジョブが実行される際に出力されるメッセージの量を制御するためのパラメーター。
MSGLEVEL=(ステートメントメッセージ, ステップメッセージ)の形式で指定される。

パターン説明
MSGLEVEL=(0,0)JCLステートメントもステップのメッセージも出力されない。
MSGLEVEL=(0,1)ステップのメッセージのみ出力され、JCLステートメントは出力されない。
MSGLEVEL=(1,0)JCLステートメントは出力されるが、ステップのメッセージは出力されない。
MSGLEVEL=(1,1)JCLステートメントとステップメッセージの両方が出力される。
MSGLEVEL=(2,0)ジョブのすべてのJCLステートメントと入力の詳細が出力され、ステップのメッセージは出力されない。
MSGLEVEL=(2,1)すべてのJCLステートメントとステップメッセージが出力される。

EXEXステートメント - 各パラメーターについて

パラメータ説明種類
PGM実行するプログラム名を指定Positional
PROCジョブ内で呼び出すプロシージャを指定Positional
PARMプログラムに渡す引数を指定Keyword
ACCTプログラムの実行時に必要なアカウント情報を指定Keyword
TIMEプログラムまたはステップの最大実行時間を指定Keyword
REGIONプログラム実行時に使用可能なメモリ量を指定Keyword

DDステートメント - 各パラメーターについて

パラメータ説明種類
*システムから動的にデータセットを割り当てPositional
DUMMY実際のデータセットがないか、処理をスキップPositional
DATAデータを直接DDステートメント内に記述Positional
DSN使用するデータセット名を指定Keyword
DISPデータセットのステータスと処理方法を指定Keyword
DCBデータセットの属性(レコード形式、レコード長など)を指定Keyword
SPACEデータセットに割り当てるディスクスペースを指定Keyword
UNITデータセットを格納する装置を指定Keyword
VOLデータセットが格納されるボリュームを指定Keyword
SYSOUT出力をシステムまたは指定の場所へKeyword

DISPについて
データセットの状態とアクセス権を指定し、さらに処理が終了したときのデータセットの処理方法を制御。
(データセットの処理開始時の状態, 正常終了時の処理, 異常終了時の処理)

DISの形式説明
DISP=(NEW,DELETE,DELETE)新規データセットを作成し、ジョブが終了後(正常/異常に関わらず)データセットを削除。
DISP=(NEW,KEEP,KEEP)新規データセットを作成し、ジョブ終了後もデータセットを保持。
DISP=(OLD,DELETE,DELETE)既存のデータセットに排他アクセスし、ジョブ終了後に削除。
DISP=(OLD,KEEP,KEEP)既存のデータセットに排他アクセスし、ジョブ終了後も保持。
DISP=(SHR,DELETE,DELETE)既存のデータセットに共有アクセスし、ジョブ終了後に削除。
DISP=(SHR,KEEP,KEEP)既存のデータセットに共有アクセスし、終了後も保持。
DISP=(MOD,DELETE,DELETE)データセットを追加モードで開き、ジョブ終了後に削除。
DISP=(MOD,KEEP,KEEP)既存データセットにデータを追加し、終了後も保持。
DISP=PASS次のステップにデータセットを引き継ぐ(中間的なジョブやステップで使用)。

 最後に  

一旦、JCLの概要について整理してみました。(不十分だとは思いますが、、、)次はJCLの実行関連についてまとめたいと思います。