COBOLの88レベル(条件名)の使い方と活用例を完全解説!初心者でもわかる条件分岐の基本
生徒
「COBOLで、もっと読みやすく条件分岐する方法ってありますか?」
先生
「それなら『88レベル』という仕組みを使うと、とてもわかりやすくなりますよ。」
生徒
「88レベルって、どんなときに使うんですか?」
先生
「たとえば、『はい』『いいえ』などの状態を名前で表すときに、とても便利なんです。実際の使い方を一緒に見てみましょう!」
1. 88レベルとは?
COBOLの88レベルとは、「条件名」とも呼ばれ、ある変数の特定の値に対して、わかりやすい名前をつけるための仕組みです。
例えば、「ステータス」が「1」のときは「正常」、「2」のときは「異常」と読みやすくしたい場合に、88レベルを使うと便利です。
これによって、プログラムを読む人が「この値は何を意味するのか?」と迷わずにすみます。
これはまるで、「信号の色」に「止まれ」「進め」と名前を付けるようなイメージです。
2. 88レベル(条件名)の基本的な書き方
88レベルは、COBOLのDATA DIVISION(データディビジョン)の中に書きます。ある変数の値に、意味をもたせるように記述します。
書き方は次の通りです:
01 STATUS-CODE PIC 9.
88 正常 VALUE 1.
88 異常 VALUE 2.
このように書くことで、STATUS-CODEが「1」のときに「正常」、STATUS-CODEが「2」のときに「異常」と読み替えることができます。
3. 88レベルを使った条件分岐の例
88レベルの大きなメリットは、IF文での条件分岐が、より直感的で読みやすくなることです。
次の例をご覧ください。
IDENTIFICATION DIVISION.
PROGRAM-ID. STATUS-CHECK.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STATUS-CODE PIC 9.
88 正常 VALUE 1.
88 異常 VALUE 2.
PROCEDURE DIVISION.
MOVE 1 TO STATUS-CODE
IF 正常 THEN
DISPLAY "処理は正常に終了しました。"
END-IF
IF 異常 THEN
DISPLAY "処理中に異常が発生しました。"
END-IF
STOP RUN.
このプログラムでは、STATUS-CODEに「1」が設定されています。そして、88レベルを使って「正常」かどうかを判断しています。
このように、数字での比較を避けて、状態に意味のある名前をつけることで、読みやすく、メンテナンスもしやすいコードになります。
実行結果:
処理は正常に終了しました。
4. 複数の値に条件名をつけることもできる
88レベルでは、複数の値に対して条件名を設定することもできます。たとえば、「男性=1」「女性=2」「未回答=9」という設定があるときに、次のように書けます:
01 GENDER-CODE PIC 9.
88 男性 VALUE 1.
88 女性 VALUE 2.
88 未回答 VALUE 9.
さらには、次のようにVALUEの後にVALUESを使って、複数の値に同じ条件名を付けることも可能です。
01 GRADE-CODE PIC 9.
88 初級者 VALUES 1 2 3.
この場合、GRADE-CODEが1〜3のいずれかであれば、「初級者」という条件が成立します。
5. 88レベルの確認には「SET」文が便利
88レベルに対して、プログラム中で明示的に「有効」にするには、SET文を使います。これは、条件を「成立させる」という意味です。
SET 正常 TO TRUE
この文を実行すると、対応する変数(ここではSTATUS-CODE)に、自動的にVALUEの値(つまり1)が設定されます。
逆に、SET 異常 TO TRUEとすれば、STATUS-CODEに2が設定されます。
6. 88レベルが便利な場面とは?
88レベルが役立つのは、次のような場面です:
- わかりやすいプログラムを作りたいとき
- 状態が複数ある場合に、管理をしやすくしたいとき
- IF文での比較を、数字でなく名前にしたいとき
たとえば、エラー処理や状態管理、性別や会員ステータスなどの固定値がある場面で、88レベルを使うことでコードが見やすくなります。