複数の異なった処理の中から、条件にあった処理を行いたい場合、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を指定すると、その部分は評価されない。