カテゴリ: COBOL 更新日: 2026/01/04

COBOLとJCL連携を基礎から理解!CONDパラメータによる条件実行制御を初心者向けに解説

JCLのCONDパラメータによる条件実行制御
JCLのCONDパラメータによる条件実行制御

先生と生徒の会話形式で理解しよう

生徒

「JCLの中にCONDって書いてあるのを見たんですが、これは何をしているんですか?」

先生

「CONDは、前の処理結果によって次の処理を実行するかどうかを決めるための仕組みです。」

生徒

「プログラムのif文みたいなものですか?」

先生

「考え方はとても近いですね。では、JCLのCONDパラメータを順番に見ていきましょう。」

1. JCLのCONDパラメータとは

1. JCLのCONDパラメータとは
1. JCLのCONDパラメータとは

CONDパラメータは、JCLでジョブステップの実行を制御するための指定です。 直前の処理が「うまくいったか」「失敗したか」を数値で判断し、 その結果によって次の処理を実行するかどうかを決めます。

プログラミング未経験の方は、信号機を想像してください。 青なら進む、赤なら止まる、という判断を自動で行うのがCONDの役割です。

2. リターンコードという考え方

2. リターンコードという考え方
2. リターンコードという考え方

CONDを理解するためには、リターンコードという考え方が重要です。 リターンコードとは、プログラムが処理を終えたあとに返す結果の数値です。

一般的に、0は正常終了、0以外は何か問題があったことを表します。 数字が大きいほど、問題の度合いが大きいと考えると分かりやすいです。

3. CONDパラメータの基本構文

3. CONDパラメータの基本構文
3. CONDパラメータの基本構文

CONDパラメータは、EXEC文の中で指定します。 基本的な書き方は「数値、比較演算子」という形です。


//STEP2  EXEC PGM=TESTPGM,COND=(0,NE)

この指定は、「直前のステップのリターンコードが0ではない場合は、 このステップを実行しない」という意味になります。

4. 比較演算子の意味をやさしく理解

4. 比較演算子の意味をやさしく理解
4. 比較演算子の意味をやさしく理解

CONDでは、NE、EQ、GT、LTなどの比較演算子を使います。 これらは条件を判断するための記号です。

  • EQ:等しい
  • NE:等しくない
  • GT:より大きい
  • LT:より小さい

数学の記号が分からなくても、「条件を比べて判断するもの」と覚えれば大丈夫です。

5. CONDを使った簡単な流れの例

5. CONDを使った簡単な流れの例
5. CONDを使った簡単な流れの例

例えば、STEP1が正常終了したときだけSTEP2を実行したい場合を考えてみましょう。


//STEP1 EXEC PGM=PROG1
//STEP2 EXEC PGM=PROG2,COND=(0,NE)

STEP1のリターンコードが0であれば、STEP2は実行されます。 0以外の場合は、STEP2は自動的にスキップされます。

6. CONDは「実行しない条件」を書く

6. CONDは「実行しない条件」を書く
6. CONDは「実行しない条件」を書く

初心者が混乱しやすいポイントとして、 CONDは「実行する条件」ではなく「実行しない条件」を書く点があります。

条件に当てはまった場合、そのステップは実行されません。 この考え方に慣れることがとても大切です。

7. COBOLプログラム側との関係

7. COBOLプログラム側との関係
7. COBOLプログラム側との関係

COBOLプログラムは、処理結果に応じてリターンコードを返します。 JCLのCONDは、その結果を見て次の動きを決める役割を持っています。


IF ERROR-FLG = 'Y'
    MOVE 8 TO RETURN-CODE
ELSE
    MOVE 0 TO RETURN-CODE
END-IF

このように、プログラムとJCLは連携して処理の流れを制御しています。

8. CONDを理解するメリット

8. CONDを理解するメリット
8. CONDを理解するメリット

CONDパラメータを正しく使えるようになると、 無駄な処理を減らし、ジョブ全体の安定性を高めることができます。

大規模なシステムでは、条件実行制御は欠かせない仕組みです。 まずは基本の考え方をしっかり身につけましょう。

カテゴリの一覧へ
新着記事
New1
C#
C#のデリゲートとは?メソッドを変数のように扱う基本を解説
New2
C#
C#の文字列型(string)を完全解説!連結・分割・検索の方法を紹介
New3
C#
C#非同期処理の進捗状況を表示!IProgressの使い方を初心者向けに解説
New4
C#
C#の文字列フォーマット方法!String.Format・補間文字列の使い方
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.3
Java&Spring記事人気No3
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.4
Java&Spring記事人気No4
C#
C#の引数と戻り値の基本!値を受け渡し・返す仕組みを理解しよう
No.5
Java&Spring記事人気No5
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.6
Java&Spring記事人気No6
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.7
Java&Spring記事人気No7
COBOL
COBOLのMOVE文を完全ガイド!初心者でもわかるデータ移送の基本
No.8
Java&Spring記事人気No8
C#
C#でファイルのエンコーディングを指定する方法(UTF-8・Shift-JISなど)