Przejdź do głównej treści
eLearner.app
Moduł 2 · Lekcja 2 z 24/10 w kursie~12 min
Lekcje modułu (2/2)

Decyzje z IF i EVALUATE

Podejmowanie decyzji w COBOL-u odbywa się głównie za pomocą instrukcji warunkowej IF oraz struktury wielokrotnego wyboru EVALUATE (odpowiednik switch lub match w nowoczesnych językach).

Instrukcja warunkowa IF

Podstawowa składnia instrukcji IF to:

Code
IF warunek
    instrukcje-jeśli-prawda
ELSE
    instrukcje-jeśli-fałsz
END-IF.

W nowoczesnych wersjach COBOL-a (COBOL-85 i nowsze) instrukcja musi kończyć się jawnie słowem kluczowym END-IF. zamiast polegać wyłącznie na kropce ., co znacznie zmniejsza błędy parsowania i błędy logiczne.

Typowe warunki

  • Większy niż: > lub GREATER THAN
  • Mniejszy niż: < lub LESS THAN
  • Równy: = lub EQUAL TO
  • Większy lub równy: >= lub GREATER THAN OR EQUAL TO
  • Mniejszy lub równy: <= lub LESS THAN OR EQUAL TO
Code
IF WS-BALANCE < 0
    DISPLAY "CONTO IN ROSSO"
ELSE
    DISPLAY "CONTO ATTIVO"
END-IF.

Instrukcja EVALUATE

Gdy musimy porównać zmienną z wieloma osobnymi wartościami, użycie wielu zagnieżdżonych instrukcji IF może stać się skomplikowane. Instrukcja EVALUATE rozwiązuje ten problem, organizując opcje wyboru w uporządkowany sposób:

Code
EVALUATE WS-USER-ROLE
    WHEN "ADMIN"
        DISPLAY "ACCESSO COMPLETO"
    WHEN "EDITOR"
        DISPLAY "ACCESSO EDIT"
    WHEN OTHER
        DISPLAY "ACCESSO LIMITATO"
END-EVALUATE.
  • WHEN OTHER: Określa gałąź domyślną (odpowiednik default lub końcowego else).
  • END-EVALUATE.: Kończy strukturę.

Spróbuj sam

Ćwiczenie#cobol.m2.l2.e1
Próby: 0Ładowanie...

Napisz blok IF-ELSE-END-IF sprawdzający, czy zmienna WS-USER-AGE jest większa bądź równa 18. W przypadku pozytywnym wypisz 'ADULT', w przeciwnym wypadku wypisz 'MINOR' za pomocą DISPLAY.

Ładowanie edytora...
Pokaż wskazówkę

Użyj >= do porównania, DISPLAY do wypisania wyniku, a na końcu END-IF. (z kropką na końcu bloku).

Rozwiązanie dostępne po 3 próbach

Ćwiczenie#cobol.m2.l2.e2
Próby: 0Ładowanie...

Uzupełnij strukturę EVALUATE, aby sprawdzić zmienną WS-STATUS. Jeśli wartość to 'A', wypisz 'ACTIVE', jeśli 'I' - 'INACTIVE', w przeciwnym razie dla jakiejkolwiek innej wartości wypisz 'UNKNOWN'.

Ładowanie edytora...
Pokaż wskazówkę

Napisz poszczególne gałęzie WHEN, po których następuje odpowiedni DISPLAY, i użyj WHEN OTHER do obsługi przypadku domyślnego.

Rozwiązanie dostępne po 3 próbach