JCLの条件実行(CONDパラメータ)の基礎をやさしく解説!初心者でも分かる実行制御の仕組み
生徒
「JCLって、ジョブの中で実行するかどうかを条件で決められるって聞いたんですけど、本当ですか?」
先生
「はい、本当です。JCLにはCONDパラメータという機能があって、ジョブステップを実行するかスキップするかを制御できます。」
生徒
「なんだか難しそうですが、具体的にどういうことなんですか?」
先生
「では、日常生活に例えて説明しながら、使い方を見ていきましょう。」
1. JCLと条件実行とは?
まず、JCL(Job Control Language)は、メインフレーム(大型コンピュータ)でジョブと呼ばれる処理を実行するための指示書です。その中で「条件実行」とは、あるステップの実行結果を見て、次のステップを実行するかどうかを判断する仕組みのことです。
例えば、料理の手順に置き換えると「もし野菜が切れていなければ、切る作業を行う」「もう切れていれば、切る作業はスキップする」というような判断です。
2. CONDパラメータの基本
CONDパラメータは、JCLのジョブステップに指定して、そのステップを実行するかどうかを決めます。終了コード(Return Code)という数値を使って判断します。終了コードは、前のステップが正常終了したか、エラーで終わったかを示す値です。
書式は以下の通りです。
//ステップ名 EXEC PGM=プログラム名,COND=(比較値,比較演算子,ステップ名)
- 比較値:終了コードと比較する数値。
- 比較演算子:EQ(等しい)、NE(等しくない)、GT(より大きい)など。
- ステップ名:比較対象となる前のステップ。
3. 簡単な例
例えば、ステップAの終了コードが4より大きければステップBをスキップする、という条件はこう書きます。
//STEPB EXEC PGM=MYPROG,COND=(4,LT,STEPA)
この場合、「STEP A の終了コードが4より小さい(LT = Less Than)」なら、STEPBはスキップされます。
日常で言えば「テストの点数が80点未満なら、遊びに行くのをやめて勉強する」という感じです。
4. CONDパラメータの逆の意味に注意
プログラミング初心者が混乱しやすいのは、CONDパラメータの条件が「スキップ条件」だということです。つまり、条件が「真」になったら、そのステップは実行されません。
これは、「もし雨が降っていたらピクニックを中止する」というルールに似ています。雨が降っている(条件が真)なら、中止(スキップ)です。
5. よく使う比較演算子
- EQ:Equal(等しい)
- NE:Not Equal(等しくない)
- GT:Greater Than(より大きい)
- LT:Less Than(より小さい)
- GE:Greater or Equal(以上)
- LE:Less or Equal(以下)
6. 実際のJCL例と解説
//JOB001 JOB (ACCT),'TEST JOB'
//STEPA EXEC PGM=PROGA
//STEPB EXEC PGM=PROGB,COND=(4,LT,STEPA)
//STEPC EXEC PGM=PROGC
この例では、まずPROGAが実行されます。その終了コードが4より小さい場合、STEPBはスキップされ、次のSTEP Cに進みます。
7. CONDパラメータを使うメリット
CONDパラメータを使うことで、不要な処理を省略し、ジョブの実行時間やリソースの節約が可能です。例えば、前のステップがエラーになったら後続の処理を止めることで、誤った結果を広げずに済みます。
銀行のシステムや大規模なバッチ処理では、こうした条件制御が非常に重要です。
8. まとめると
JCLのCONDパラメータは、ジョブステップの実行可否を終了コードで判断する仕組みで、条件が成立するとそのステップはスキップされます。スキップ条件という点を覚えておけば、混乱せずに使いこなせます。