モジュール 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 回の試行後に解決策が利用可能になります