Перейти к основному содержимому
Модуль 2 · Урок 2 из 24/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.

Заявление ОЦЕНИВАТЬ

Когда нам нужно сравнить переменную с несколькими дискретными значениями, вложенные операторы 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Загрузка…

Напишите блок IF-ELSE-END-IF, который проверяет, больше или равно ли значение переменной WS-USER-AGE 18. Если это правда, выведите «ADULT», в противном случае выведите «MINOR», используя DISPLAY.

Загрузка редактора…
Показать подсказку

Используйте >= для сравнения, DISPLAY для вывода и END-IF. (с точкой в ​​конце блока).

Решение доступно после 3 попыток

Упражнение#cobol.m2.l2.e2
Попыток: 0Загрузка…

Заполните структуру EVALUATE, чтобы проверить переменную WS-STATUS. Если значение «A», выведите «ACTIVE», если «I», выведите «INACTIVE», в противном случае для любого другого значения выведите «UNKNOWN».

Загрузка редактора…
Показать подсказку

Напишите каждую ветвь WHEN, за которой следует ее DISPLAY, и используйте WHEN OTHER для обработки резервного варианта.

Решение доступно после 3 попыток