Уроки модуля (2/2)
Решения с помощью IF и EVALUATE
Принятие решений в COBOL осуществляется в основном с использованием условного оператора IF и многоветвевой структуры выбора EVALUATE (аналог switch или match в современных языках).
Условное выражение IF
Основной синтаксис оператора IF:
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.
IF WS-BALANCE < 0
DISPLAY "OVERDRAWN"
ELSE
DISPLAY "ACCOUNT ACTIVE"
END-IF.Заявление ОЦЕНИВАТЬ
Когда нам нужно сравнить переменную с несколькими дискретными значениями, вложенные операторы IF могут стать сложными. Оператор EVALUATE решает эту проблему, четко структурируя выбор:
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.: закрывает структуру.
Попробуйте сами
Напишите блок IF-ELSE-END-IF, который проверяет, больше или равно ли значение переменной WS-USER-AGE 18. Если это правда, выведите «ADULT», в противном случае выведите «MINOR», используя DISPLAY.
Показать подсказку
Используйте >= для сравнения, DISPLAY для вывода и END-IF. (с точкой в конце блока).
Решение доступно после 3 попыток
Заполните структуру EVALUATE, чтобы проверить переменную WS-STATUS. Если значение «A», выведите «ACTIVE», если «I», выведите «INACTIVE», в противном случае для любого другого значения выведите «UNKNOWN».
Показать подсказку
Напишите каждую ветвь WHEN, за которой следует ее DISPLAY, и используйте WHEN OTHER для обработки резервного варианта.
Решение доступно после 3 попыток