EVALUATE文による多岐選択

複数の異なった処理の中から、条件にあった処理を行いたい場合、EVALUATE文を使います。

下記はEVALUATE文を使用したプログラムのサンプルソースです。

000010 IDENTIFICATION                   DIVISION.
000020 PROGRAM-ID.                      SAMPLE-08.
000030*
000040 ENVIRONMENT                      DIVISION.
000050*
000060 DATA                             DIVISION.
000070 WORKING-STORAGE                  SECTION.
000080 77 WRK-FRUITNUM                  PIC 9(3).
000090*
000100 PROCEDURE DIVISION.
000110 MAIN.
000120     ACCEPT    WRK-FRUITNUM       FROM  CONSOLE.
000130*
000140     EVALUATE  WRK-FRUITNUM
000150         WHEN  100
000160               DISPLAY  "アップル"   UPON  CONSOLE
000170*
000180         WHEN  200
000190               DISPLAY  "オレンジ"   UPON  CONSOLE
000200*
000210         WHEN  300
000220               DISPLAY  "メロン"     UPON  CONSOLE
000230*
000240         WHEN  OTHER
000250               DISPLAY  "その他"     UPON  CONSOLE
000260*
000270     END-EVALUATE.
000280     STOP RUN.

EVALUATE文 書式1
EVALUATE 評価対象
    WHEN 値
        命令文
      :
    WHEN 値1 THRU 値2
        命令文
      :
    WHEN 値
    WHEN 値
        命令文
      :
    WHEN OTHER
        命令文
      :
END-EVALUATE.

WHENの書式
WHEN 値単一で評価する。複数の値を「または」で評価するときは、WHENを連続して記述する。
WHEN 値1 THRU 値2値の範囲を評価する。値1から値2の範囲内であれば条件は成立する。
WHEN OTHERどのWHENにも該当しなかったとき実行される。


評価対象が複数ある場合でもEVALUATE文を使用できます。

000010 IDENTIFICATION                   DIVISION.
000020 PROGRAM-ID.                      SAMPLE-043.
000030*
000040 ENVIRONMENT                      DIVISION.
000050*
000060 DATA                             DIVISION.
000070 WORKING-STORAGE                  SECTION.
000080 77 WRK-FRUITNUM                  PIC 9(3).
000080 77 WRK-KAKOKIND                  PIC 9(3).
000090*
000100 PROCEDURE DIVISION.
000110 MAIN.
000120     ACCEPT    WRK-FRUITNUM       FROM  CONSOLE.
000120     ACCEPT    WRK-KAKOKIND       FROM  CONSOLE.
000130*
000140     EVALUATE  WRK-FRUITNUM  ALSO  WRK-KAKOKIND
000150         WHEN  100  ALSO  100
000160               DISPLAY  "アップルジュース"       UPON  CONSOLE
000170*
000180         WHEN  100  ALSO  200
000190               DISPLAY  "アップルシャーベット"   UPON  CONSOLE
000200*
000210         WHEN  300  ALSO  ANY
000220               DISPLAY  "メロン"     UPON  CONSOLE
000230*
000240         WHEN  OTHER
000250               DISPLAY  "その他"     UPON  CONSOLE
000260*
000270     END-EVALUATE.
000280     STOP RUN.

EVALUATE文 書式2
EVALUATE 評価対象1 ALSO 評価対象2 [ALSO 評価対象3…]
    WHEN 評価1 ALSO 評価2 [ALSO 評価3…]
        命令文
      :
END-EVALUATE.

※評価内容にANYを指定すると、その部分は評価されない。

«  EVALUATE文による多岐選択  »