Перейти до основного вмісту
Модуль 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.

Заява 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Завантаження…

Напишіть блок IF-ELSE-END-IF, який перевіряє, чи змінна WS-USER-AGE більша або дорівнює 18. Якщо істина, виведіть «ADULT», інакше виведіть «MINOR» ​​за допомогою DISPLAY.

Завантаження редактора…
Показати підказку

Використовуйте >= для порівняння, DISPLAY для виведення та END-IF. (з крапкою в кінці блоку).

Рішення доступне після 3 спроб

вправи#cobol.m2.l2.e2
Спроби: 0Завантаження…

Заповніть структуру EVALUATE, щоб перевірити змінну WS-STATUS. Якщо значення дорівнює «А», виведіть «АКТИВНИЙ», якщо це «Я», виведіть «НЕАКТИВНИЙ», інакше для будь-якого іншого значення виведіть «НЕВІДОМО».

Завантаження редактора…
Показати підказку

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

Рішення доступне після 3 спроб