例)
//* JCL SAMPLE001
// JOBNAME JOB MSGCLASS=H
// STEP001 EXEC PGM=PGMNAME
// INPUT DD DSN=INPUT.FILE.DATASET, DISP=SHR
// OUTPUT DD SYSOUT=*
続いて3行目
// STEP001 EXEC PGM=PGMNAME
これは「EXECステートメント」といい、ジョブステップの始まりを示します。
一つのJOBに対して複数のEXECステートメントを記述することができます。
実行するプログラムや呼び出すカタログプロシージャ、ストリーム内プロシージャを指定します。
// ステップ名 EXEC PGM = 実行するPGM等
・ステップ名
1~8文字の英数字または各国用文字など
・PGM = プログラム名
プログラム名を指定します。
※「PGM = 」の記述に関しては、別の書き方もあります。
・[PROC = ] プロシージャ名
こう書くと、カタログ式プロシージャないしストリーム内プロシージャを指定します。
なにそれ?と思われた方もいるかと思いますが、
C言語での関数のような、別のところで予め記述されている処理を指定するということです。
EXECステートメントも、色々なパラメータを指定できます。
・COND [.proc-stepname] = (code,演算子) or (code,演算子,ステップ名)
or (code,演算子,,ステップ名.プロシージャ名)
これは、先ほどのCONDと同じ意味です。ステップ名やプロシージャ名の戻りコードを
条件にすることができます。JOBステートメントと両方で指定した場合は、JOBの方が優先です。
・COND = EVEN
先行のジョブが異常終了した場合でも、当ジョブステップを実行する。
・COND = ONLY
先行のジョブが異常終了した場合のみ、当ジョブステップを実行する。
・PARM [.proc-stepname] = 値
実行中のプログラムに、可変情報を渡します。要するに、引数ですね。
・REGION = 値
ジョブステップに割り当てられる記憶スペースの量を指定する。
・TIME = ([分 or 1440][,秒])
ステップにCPU時間を割り当てます。
1440っていうのは、、60で割れば分かりますね。
4行目以降は「DDステートメント」なのですが、長くなりそうなので今回はここまで。
少しだけ、さわりとして記述します。
// DD名 DD データセットの定義
DDステートメントでは、各種ファイルや装置について記述します。
データセットの定義としては、アドレスやら後処理やら装置の指定やら、
こちらも多くの指定が可能です。
また、DD名として特定の単語を指定することで、その用途を明示することができます。