COBOL言語の条件分岐・多岐分岐について理解しよう!|基礎ガイド

COBOL(コボル)言語のIF文とEVALUATE文を使った条件分岐と多岐分岐とは

基礎-条件分岐&多岐分岐-イメージ

条件分岐と多岐分岐とは?

一般的なプログラムには、一定の条件を満たしたときにのみ、実行する必要があるロジックがある場合があります。例えば、入力データのチェックを行い、一定の条件を満たさなければ、再入力を促すなどのエラー処理を行うような場合です。

■条件分岐
条件分岐とは、条件Aを満たす場合は命令群1を実行し、満たさない場合は命令群2を実行するというように、ロジックを2つに分岐させることを意味します。

■多岐分岐
多岐分岐とは、項目Aの内容が1の場合は命令群1を実行し、2の場合は命令群2を実行し、3の場合は命令群3を実行するというように、ロジックを多岐にわたって分岐させることを意味します。

COBOL(コボル)言語のIF文を使った条件分岐

COBOL言語では、IF文を使用することにより、プログラムのロジックを条件分岐させることができます。

IF文では、条件に一致するとTHEN以下の命令群を実行し、ELSE文があれば条件に一致しない場合にELSE以下の命令群を実行します。

■書式

IF 論理式 THEN

 論理式が成り立つ場合に実行する命令群

ELSE

 論理式が成り立たない場合に実行する命令群

END-IF.

■構文規則

<論理式>
 論理式を記述します。

<論理式が成り立つ場合に実行する命令群>
 論理式が真の場合に実行する命令を記述します。命令は複数でも単数でもかまいませんが、必ず記述しなければなりません。実行する命令がない場合、「CONTINUE」を記述します。

<論理式が成り立たない場合に実行する命令群>
 論理式が偽の場合に実行する命令を記述します。命令は複数でも単数でもかまいません。

■プログラム例

ご紹介するサンプルプログラムは、コンソールに入力を促すメッセージを表示し、数字の0から9までの1文字を入力させる処理を繰り返すプログラムです。数字の9が入力されるとプログラムを終了し、数字以外が入力されるとエラーメッセージを表示します。

  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. IF-SAMPLE1.
  9. DATA DIVISION.
  10. FILE SECTION.
  11. WORKING-STORAGE SECTION.
  12. 01 WORKING-AREA.
  13. * コンソール入力バッファ
  14. 03 CONSOLE-INPUT PIC X(1).
  15. *>----------------------------------------------------
  16. *>主手続
  17. *>----------------------------------------------------
  18. PROCEDURE DIVISION.
  19. MAIN-PROCEDURE.
  20. * コンソール入力エリアの初期化
  21. MOVE SPACE TO CONSOLE-INPUT.
  22. EXEC-DISPLAY-INPUT-PROC.
  23. * コンソール表示&入力
  24. DISPLAY "数字を1文字入力してください".
  25. DISPLAY "0-8:CONTINUE 9:EXIT".
  26. ACCEPT CONSOLE-INPUT FROM CONSOLE.
  27. * 9以外が入力された場合、コンソール表示&入力を繰り返す
  28. IF (CONSOLE-INPUT >= 0) AND
  29. (CONSOLE-INPUT <= 8) THEN
  30. GO TO EXEC-DISPLAY-INPUT-PROC
  31. ELSE
  32. IF (CONSOLE-INPUT = 9) THEN
  33. DISPLAY "プログラムを終了します"
  34. ELSE
  35. DISPLAY "0から9までの数字を入力してください"
  36. GO TO EXEC-DISPLAY-INPUT-PROC
  37. END-IF
  38. END-IF.
  39. STOP RUN.
  40. END PROGRAM IF-SAMPLE1.

■実行結果
はじめに入力を促すメッセージが表示されます。
基礎-条件分岐&多岐分岐-実行結果

数字の0を入力してみます。
基礎-条件分岐&多岐分岐-入力例1

入力を促すメッセージが繰り返し表示されます

次に数字の8を入力してみます。
基礎-条件分岐&多岐分岐-入力例2

入力を促すメッセージが繰り返し表示されます。

次に英字のAを入力してみましょう。
基礎-条件分岐&多岐分岐-入力例3

エラーメッセージが表示され、入力を促すメッセージが表示されます。

次に数字の9を入力してみます。
基礎-条件分岐&多岐分岐-入力例4

プログラムが終了しました。

COBOL言語のEVALUATE文を使った多岐分岐

COBOL言語では、EVALUATE文を使用することにより、プログラムのロジックを多岐分岐させることができます。

EVALUATE文では、評価対象がWHENの値に一致すると、WHEN以下の命令群を実行し、WHENは複数記述することができます。

■書式

EVALUATE 評価対象

  WHEN

    値に一致する場合に実行する命令群

  WHEN 値1 THRU 値2

    値1から値2に一致する場合に実行する命令群

  WHEN OTHER

    どの値にも一致しない場合に実行する命令群

END-EVALUATE.

■構文規則

<評価対象>

 評価する対象の文字定数、数字定数、またはデータ項目を記述します。

<値>

 評価対象に一致する文字定数、数字定数、またはデータ項目を記述します。複数の値で同じ命令を実行する場合は、「WHEN 値」を連続して記述します。

<値に一致する場合に実行する命令群>

 評価対象が値に一致する場合に実行する命令を記述します。命令は複数でも単数でもかまいません。

<値1、値2>

 評価対象が値1から値2の間になる文字定数、数字定数、またはデータ項目を記述します。

<値1から値2に一致する場合に実行する命令群>

 評価対象が値1から値2の間の場合に実行する命令を記述します。命令は複数でも単数でもかまいません。

<どの値にも一致しない場合に実行する命令群>

 評価対象がどの値にも一致しない場合に実行する命令を記述します。命令は複数でも単数でもかまいません。

■プログラム例

ご紹介するサンプルプログラムは、「COBOL言語のIF文を使った条件分岐」でご紹介したサンプルプログラムと同じ機能を、EVALUATE文を使用して実現したプログラムです。「COBOL言語のIF文を使った条件分岐」でご紹介したサンプルプログラムでは、IF文が入れ子になっていましたが、EVALUATE文を使用すると入れ子にならず、プログラムがスッキリすることがご理解いただけることでしょう。

  1. ******************************************************************
  2. * Author:
  3. * Date:
  4. * Purpose:
  5. * Tectonics: cobc
  6. ******************************************************************
  7. IDENTIFICATION DIVISION.
  8. PROGRAM-ID. EVALUATE-SAMPLE1.
  9. DATA DIVISION.
  10. FILE SECTION.
  11. WORKING-STORAGE SECTION.
  12. 01 WORKING-AREA.
  13. * コンソール入力バッファ
  14. 03 CONSOLE-INPUT PIC X(1).
  15. *>----------------------------------------------------
  16. *> 主手続
  17. *>----------------------------------------------------
  18. PROCEDURE DIVISION.
  19. MAIN-PROCEDURE.
  20. * コンソール入力エリアの初期化
  21. MOVE SPACE TO CONSOLE-INPUT.
  22. EXEC-DISPLAY-INPUT-PROC.
  23. * コンソール表示&入力
  24. DISPLAY "数字を1文字入力してください".
  25. DISPLAY "0-8:CONTINUE 9:EXIT".
  26. ACCEPT CONSOLE-INPUT FROM CONSOLE.
  27. * 9以外が入力された場合、コンソール表示&入力を繰り返す
  28. EVALUATE CONSOLE-INPUT
  29. WHEN 0 THRU 8
  30. GO TO EXEC-DISPLAY-INPUT-PROC
  31. WHEN 9
  32. DISPLAY "プログラムを終了します"
  33. WHEN OTHER
  34. DISPLAY "0から9までの数字を入力してください"
  35. GO TO EXEC-DISPLAY-INPUT-PROC
  36. END-EVALUATE.
  37. STOP RUN.
  38. END PROGRAM EVALUATE-SAMPLE1.

■実行結果
はじめに入力を促すメッセージが表示されます。
基礎-条件分岐&多岐分岐-実行結果

数字の0を入力してみます。
基礎-条件分岐&多岐分岐-入力例1

入力を促すメッセージが繰り返し表示されます。

次に数字の8を入力してみます。
基礎-条件分岐&多岐分岐-入力例2

入力を促すメッセージが繰り返し表示されます。

次に英字のAを入力してみましょう。
基礎-条件分岐&多岐分岐-入力例3

エラーメッセージが表示され、入力を促すメッセージが表示されます。

次に数字の9を入力してみます。
基礎-条件分岐&多岐分岐-入力例4

プログラムが終了しました。

COBOL言語の条件分岐と多岐分岐の確認問題

問)
COBOL言語のプログラムにおいて、多岐分岐に使用する命令文は何か。

答え)
EVALUATE文。

ある条件において処理を分岐させることは、プログラムを作成する上では避けられないロジック制御です。分岐の条件に応じて、IF文とEVALUATE文を使い分け、誰が見ても理解しやすいシンプルなプログラムを作成しましょう。

この記事を読んだ人は、こちらの記事も読んでいます

【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集

株式会社COBOLの求人・転職・募集情報を見る

COBOL入門のカテゴリー

取引企業様 募集中
COBOL技術者 募集
COBOL魂
読者採用
COBOL入門