多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう! | 用語辞典
COBOL(コボル)言語の予約語EVALUATE、WHEN、END-EVALUATEを使った多岐分岐とは
COBOL(コボル)言語のEVALUATE~WHEN文とは?
EVALUATE(英語)は、日本語に訳すると「評価する」、WHEN(英語)は「いつ」という意味です。
COBOL(コボル)言語のEVALUATE~WHEN文は、WHENの値に一致するとWHEN以下の処理を実行します。
EVALUATE文の形式:EVALUATE~WHEN~END-EVALUATE
EVALUATE~WHEN~END-EVALUATEでは、評価対象がWHENの値に一致する場合に、WHENから次のWHEN、またはEND-EVALUATEの間に書かれた命令を実行します。
■書式
EVALUATE 評価対象
WHEN 値
値に一致する場合に実行する命令群
WHEN 値1 THRU 値2
値1から値2に一致する場合に実行する命令群
WHEN OTHER
どの値にも一致しない場合に実行する命令群
END-EVALUATE.
■構文規則
<評価対象>
評価する対象の文字定数、数字定数、またはデータ項目を記述します。
<値>
評価対象に一致する文字定数、数字定数、またはデータ項目を記述します。複数の値で同じ命令を実行する場合は、「WHEN 値」を連続して記述してください。
<値に一致する場合に実行する命令群>
評価対象が値に一致する場合に実行する命令を記述します。命令は複数でも単数でもかまいません。
<値1、値2>
評価対象が値1から値2の間になる文字定数、数字定数、またはデータ項目を記述します。
<値1から値2に一致する場合に実行する命令群>
評価対象が値1から値2の間の場合に実行する命令を記述します。命令は複数でも単数でもかまいません。
<どの値にも一致しない場合に実行する命令群>
評価対象がどの値にも一致しない場合に実行する命令を記述します。命令は複数でも単数でもかまいません。
■使用例則
実際にEVALUATE~WHEN~END-EVALUATEを使用したプログラム例をご紹介します。
このプログラムは、コンソールに入力を促すメッセージを表示し、数字の0から9までの1文字を入力させる処理を繰り返すプログラムです。数字の9が入力されると終了メッセージを表示しプログラムを終了します。また、数字以外が入力されるとエラーメッセージを表示します。
■実行結果
はじめに入力を促すメッセージが表示されます。
数字の0を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に数字の8を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に英字のAを入力してみます。
エラーメッセージが表示され、入力を促すメッセージが表示されます。
次に数字の9を入力してみます。
終了メッセージが表示され、プログラムが終了しました。
EVALUATE文のCOBOL(コボル)言語における基本事項やルールについて
EVALUATE文はデータ項目の値によって多岐分岐ができる便利な命令です。しかし、WHENのあとに続く命令群が長すぎると、煩雑なプログラムになってしまいます。WHENのあとの命令群がたくさんある場合は、サブルーチン化し、PERFORM文で命令を実行させるようにしましょう。
COBOL(コボル)言語のEVALUATE文を使うときの注意点
EVALUATE文はIF文と同様に誰が読んでも理解できるシンプルな分岐にすることを心がけてください。WHENで100個にも多岐分岐するようなプログラムはデバッグが困難になります。
EVALUATE文を使ったCOBOL(コボル)プログラムの活用方法
EVALUATE文を使って、データ項目Aとデータ項目Bといった複数のデータ項目の値によって多岐分岐させたい場合があります。
データ項目Aとデータ項目Bそれぞれ何の値である場合はある処理を、さらにこの値ならばこの処理を…、全てに一致しなければこの処理をという場合は、ALSOを使います。
EVALUATE データ項目A ALSO データ項目B
WHEN 100 ANY
処理A
WHEN 200 ALSO 10
処理B
WHEN OTHER
処理C
END-EVALUATE.
このテクニックを使って、2つの値を入力し、その値によって「いちご」、「りんご」、「ばなな」の品名を表示させるプログラムを作ってみましょう。1つ目の値が100の場合は「いちご」、1つ目の値が200、かつ2つ目の値が10の場合は「りんご」、それ以外の値の場合は「ばなな」です。
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. EVALUATE-SUMPLE2.
- DATA DIVISION.
- FILE SECTION.
- WORKING-STORAGE SECTION.
- 01 WORKING-AREA.
- * コンソール入力バッファ
- 03 CONSOLE-INPUT1 PIC X(3).
- 03 CONSOLE-INPUT2 PIC X(2).
- PROCEDURE DIVISION.
- *-------------------------------------------
- * 主手続
- *-------------------------------------------
- MAIN-PROCEDURE.
- * コンソール入力エリアの初期化
- MOVE SPACE TO CONSOLE-INPUT1.
- MOVE SPACE TO CONSOLE-INPUT2.
- EXEC-DISPLAY-INPUT-PROC.
- * コンソール表示&入力
- DISPLAY "大品目名を3桁で力してください".
- DISPLAY "100 or 200 or 300 EXIT:999".
- ACCEPT CONSOLE-INPUT1 FROM CONSOLE.
- IF CONSOLE-INPUT1 = 999 THEN
- DISPLAY "プログラムを終了します"
- GO TO END-PROC
- END-IF
- DISPLAY "小品目名を2桁で力してください".
- DISPLAY "10 or 20 or 30"
- ACCEPT CONSOLE-INPUT2 FROM CONSOLE.
- EVALUATE CONSOLE-INPUT1 ALSO CONSOLE-INPUT2
- WHEN 100 ALSO ANY
- DISPLAY "品名は「いちご」です"
- WHEN 200 ALSO 10
- DISPLAY "品名は「りんご」です"
- WHEN OTHER
- DISPLAY "品名は「ばなな」です"
- END-EVALUATE.
- GO TO EXEC-DISPLAY-INPUT-PROC.
- END-PROC.
- STOP RUN.
- END PROGRAM EVALUATE-SUMPLE2.
はじめに大品目の入力を促すメッセージが表示されます。
数字の100を入力してみます。
小品目の入力を促すメッセージが表示されます。
数字の10を入力してみます。
品名「いちご」が表示され、入力を促すメッセージが繰り返し表示されます。
大品目に数字の200、小品目に数字の10を入力してみます。
品名「りんご」が表示され、入力を促すメッセージが繰り返し表示されます。
大品目に数字の300、小品目に数字の10を入力してみます。
品名「ばなな」が表示され、入力を促すメッセージが繰り返し表示されます。
次に数字の999を入力してみます。
プログラムが終了しました。
EVALUATE文には、EVALUATE文のよさがあり、上手く使えば、とてもスッキリとしたプログラムを書くことができます。しかし、分岐条件があまりにも多岐に渡る場合は、IF文と組み合わせるなどして、条件がシンプルになるような工夫も必要です。プログラムはシンプル・イズ・ベストであることを忘れないようにしましょう。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
2. 即日派遣、又は請負います
3. 安心価格で請負います
4. 同時、協力会社募集中です
1. 正社員
2. 契約社員
3. 個人事業主
などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
創業当初の話や理念が閲覧できます。
応募条件
※2020年5月31日を以って、締切りました。
18歳~28歳の方。
正社員採用において、北川社長の著書『祈り方が9割』を読んで感想文を事前に提出すると、無条件で最終面接まで進むことができます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
- 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
- COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
- COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
- 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
- COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
- COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
- 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
- COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
- COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
- COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
- COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
- COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
- COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
- COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
- COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
- COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
- COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
- COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典