メインコンテンツにスキップ
モジュール 2 · レッスン 2 / 2コース内の 4/10~12 min
モジュールのレッスン (2/2)

IF と EVALUATE による決定

COBOL での意思決定は、主に IF 条件文と複数分岐選択構造 EVALUATE (現代言語の switch または match に類似) を使用して実行されます。

IF 条件文

IF ステートメントの基本的な構文は次のとおりです。

COBOL
IF condition
    statements-if-true
ELSE
    statements-if-false
END-IF.

最新の COBOL バージョン (COBOL-85 以降) では、ステートメントは最後のピリオド . のみに依存するのではなく、明示的に END-IF. で終わる必要があり、解析エラーと論理エラーが大幅に減少します。

一般的な条件

  • より大きい: > または GREATER THAN
  • 未満: < または LESS THAN
  • 等しい: = または EQUAL TO
  • 以上: >= または GREATER THAN OR EQUAL TO
  • 以下: <= または LESS THAN OR EQUAL TO
COBOL
IF WS-BALANCE < 0
    DISPLAY "OVERDRAWN"
ELSE
    DISPLAY "ACCOUNT ACTIVE"
END-IF.

EVALUATE ステートメント

変数を複数の離散値と比較する必要がある場合、ネストされた IF ステートメントが複雑になる可能性があります。 EVALUATE ステートメントは、選択肢を明確な方法で構造化することでこれを解決します。

COBOL
EVALUATE WS-USER-ROLE
    WHEN "ADMIN"
        DISPLAY "FULL ACCESS"
    WHEN "EDITOR"
        DISPLAY "EDIT ACCESS"
    WHEN OTHER
        DISPLAY "LIMITED ACCESS"
END-EVALUATE.
  • WHEN OTHER: フォールバック ブランチを識別します (現代言語の default または最後の else に相当します)。
  • END-EVALUATE.: 構造を閉じます。

自分で試してみてください

運動#cobol.m2.l2.e1
試行回数: 0読み込み中…

変数 WS-USER-AGE が 18 以上であるかどうかをチェックする IF-ELSE-END-IF ブロックを作成します。 true の場合は 'ADULT' を出力し、それ以外の場合は DISPLAY を使用して 'MINOR' を出力します。

エディターを読み込み中…
ヒントを表示

比較には >= を、出力には DISPLAY を、END-IF を使用します。 (ブロックの最後にドットが付いています)。

3 回の試行後に解決策が利用可能になります

運動#cobol.m2.l2.e2
試行回数: 0読み込み中…

EVALUATE 構造を完了して、WS-STATUS 変数を確認します。値が「A」の場合は「ACTIVE」が出力され、「I」の場合は「INACTIVE」が出力され、それ以外の値の場合は「UNKNOWN」が出力されます。

エディターを読み込み中…
ヒントを表示

各 WHEN 分岐の後にその DISPLAY を書き込み、WHEN OTHER を使用してフォールバックを処理します。

3 回の試行後に解決策が利用可能になります