Vai al contenuto
eLearner.app
Modulo 2 · Lezione 2 di 24/10 nel corso~12 min
Lezioni del modulo (2/2)

Decisioni con IF ed EVALUATE

La gestione delle decisioni in COBOL viene effettuata principalmente tramite l'istruzione condizionale IF e la struttura di selezione multipla EVALUATE (analogo del switch o del match nei linguaggi moderni).

L'istruzione condizionale IF

La sintassi fondamentale dell'istruzione IF è:

Code
IF condizione
    istruzioni-se-vero
ELSE
    istruzioni-se-falso
END-IF.

Nelle versioni moderne di COBOL (COBOL-85 e successive), l'istruzione deve concludersi esplicitamente con END-IF. anziché affidarsi unicamente al punto finale ., riducendo notevolmente gli errori di parsing e logica.

Condizioni comuni

  • Maggiore di: > o GREATER THAN
  • Minore di: < o LESS THAN
  • Uguale a: = o EQUAL TO
  • Maggiore o uguale: >= o GREATER THAN OR EQUAL TO
  • Minore o uguale: <= o LESS THAN OR EQUAL TO
Code
IF WS-BALANCE < 0
    DISPLAY "CONTO IN ROSSO"
ELSE
    DISPLAY "CONTO ATTIVO"
END-IF.

L'istruzione EVALUATE

Quando dobbiamo confrontare una variabile con molteplici valori discreti, l'uso di molteplici IF annidati può diventare complesso. L'istruzione EVALUATE risolve questo problema strutturando le scelte in modo ordinato:

Code
EVALUATE WS-USER-ROLE
    WHEN "ADMIN"
        DISPLAY "ACCESSO COMPLETO"
    WHEN "EDITOR"
        DISPLAY "ACCESSO EDIT"
    WHEN OTHER
        DISPLAY "ACCESSO LIMITATO"
END-EVALUATE.
  • WHEN OTHER: Identifica il ramo di fallback (equivalente del default o del else finale).
  • END-EVALUATE.: Conclude la struttura.

Prova tu

Esercizio#cobol.m2.l2.e1
Tentativi: 0Caricamento…

Scrivi un blocco IF-ELSE-END-IF che controlla se la variabile WS-USER-AGE è maggiore o uguale a 18. In caso positivo stampa 'ADULT', altrimenti stampa 'MINOR' usando DISPLAY.

Caricamento editor…
Mostra suggerimento

Usa >= per il confronto, DISPLAY per l'output, ed infine END-IF. (con il punto alla fine del blocco).

Soluzione disponibile dopo 3 tentativi

Esercizio#cobol.m2.l2.e2
Tentativi: 0Caricamento…

Completa la struttura EVALUATE per controllare la variabile WS-STATUS. Se il valore è 'A' stampa 'ACTIVE', se è 'I' stampa 'INACTIVE', altrimenti per qualsiasi altro valore stampa 'UNKNOWN'.

Caricamento editor…
Mostra suggerimento

Scrivi i singoli rami WHEN seguiti dal relativo DISPLAY, e usa WHEN OTHER per gestire il fallback.

Soluzione disponibile dopo 3 tentativi