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が入力されるとプログラムを終了し、数字以外が入力されるとエラーメッセージを表示します。
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. IF-SAMPLE1.
- DATA DIVISION.
- FILE SECTION.
- WORKING-STORAGE SECTION.
- 01 WORKING-AREA.
- * コンソール入力バッファ
- 03 CONSOLE-INPUT PIC X(1).
- *>----------------------------------------------------
- *>主手続
- *>----------------------------------------------------
- PROCEDURE DIVISION.
- MAIN-PROCEDURE.
- * コンソール入力エリアの初期化
- MOVE SPACE TO CONSOLE-INPUT.
- EXEC-DISPLAY-INPUT-PROC.
- * コンソール表示&入力
- DISPLAY "数字を1文字入力してください".
- DISPLAY "0-8:CONTINUE 9:EXIT".
- ACCEPT CONSOLE-INPUT FROM CONSOLE.
- * 9以外が入力された場合、コンソール表示&入力を繰り返す
- IF (CONSOLE-INPUT >= 0) AND
- (CONSOLE-INPUT <= 8) THEN
- GO TO EXEC-DISPLAY-INPUT-PROC
- ELSE
- IF (CONSOLE-INPUT = 9) THEN
- DISPLAY "プログラムを終了します"
- ELSE
- DISPLAY "0から9までの数字を入力してください"
- GO TO EXEC-DISPLAY-INPUT-PROC
- END-IF
- END-IF.
- STOP RUN.
- END PROGRAM IF-SAMPLE1.
■実行結果
はじめに入力を促すメッセージが表示されます。
数字の0を入力してみます。
入力を促すメッセージが繰り返し表示されます
次に数字の8を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に英字のAを入力してみましょう。
エラーメッセージが表示され、入力を促すメッセージが表示されます。
次に数字の9を入力してみます。
プログラムが終了しました。
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文を使用すると入れ子にならず、プログラムがスッキリすることがご理解いただけることでしょう。
- ******************************************************************
- * Author:
- * Date:
- * Purpose:
- * Tectonics: cobc
- ******************************************************************
- IDENTIFICATION DIVISION.
- PROGRAM-ID. EVALUATE-SAMPLE1.
- DATA DIVISION.
- FILE SECTION.
- WORKING-STORAGE SECTION.
- 01 WORKING-AREA.
- * コンソール入力バッファ
- 03 CONSOLE-INPUT PIC X(1).
- *>----------------------------------------------------
- *> 主手続
- *>----------------------------------------------------
- PROCEDURE DIVISION.
- MAIN-PROCEDURE.
- * コンソール入力エリアの初期化
- MOVE SPACE TO CONSOLE-INPUT.
- EXEC-DISPLAY-INPUT-PROC.
- * コンソール表示&入力
- DISPLAY "数字を1文字入力してください".
- DISPLAY "0-8:CONTINUE 9:EXIT".
- ACCEPT CONSOLE-INPUT FROM CONSOLE.
- * 9以外が入力された場合、コンソール表示&入力を繰り返す
- EVALUATE CONSOLE-INPUT
- WHEN 0 THRU 8
- GO TO EXEC-DISPLAY-INPUT-PROC
- WHEN 9
- DISPLAY "プログラムを終了します"
- WHEN OTHER
- DISPLAY "0から9までの数字を入力してください"
- GO TO EXEC-DISPLAY-INPUT-PROC
- END-EVALUATE.
- STOP RUN.
- END PROGRAM EVALUATE-SAMPLE1.
■実行結果
はじめに入力を促すメッセージが表示されます。
数字の0を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に数字の8を入力してみます。
入力を促すメッセージが繰り返し表示されます。
次に英字のAを入力してみましょう。
エラーメッセージが表示され、入力を促すメッセージが表示されます。
次に数字の9を入力してみます。
プログラムが終了しました。
COBOL言語の条件分岐と多岐分岐の確認問題
問)
COBOL言語のプログラムにおいて、多岐分岐に使用する命令文は何か。
答え)
EVALUATE文。
ある条件において処理を分岐させることは、プログラムを作成する上では避けられないロジック制御です。分岐の条件に応じて、IF文とEVALUATE文を使い分け、誰が見ても理解しやすいシンプルなプログラムを作成しましょう。
この記事を読んだ人は、こちらの記事も読んでいます
あなたの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句」は便利?使用方法を学びましょう|用語辞典