Модульні уроки (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.Заява EVALUATE
Коли нам потрібно порівняти змінну з кількома дискретними значеннями, вкладені оператори 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. Якщо значення дорівнює «А», виведіть «АКТИВНИЙ», якщо це «Я», виведіть «НЕАКТИВНИЙ», інакше для будь-якого іншого значення виведіть «НЕВІДОМО».
Показати підказку
Напишіть кожну гілку WHEN, а потім її DISPLAY і використовуйте WHEN OTHER для обробки резервного варіанту.
Рішення доступне після 3 спроб