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 è:
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:
>oGREATER THAN - Minore di:
<oLESS THAN - Uguale a:
=oEQUAL TO - Maggiore o uguale:
>=oGREATER THAN OR EQUAL TO - Minore o uguale:
<=oLESS THAN OR EQUAL TO
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:
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 deldefaulto delelsefinale).END-EVALUATE.: Conclude la struttura.
Prova tu
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.
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
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'.
Mostra suggerimento
Scrivi i singoli rami WHEN seguiti dal relativo DISPLAY, e usa WHEN OTHER per gestire il fallback.
Soluzione disponibile dopo 3 tentativi