Leçons du module (2/2)
Décisions avec IF et EVALUATE
La gestion des choix en COBOL s’effectue principalement via l’instruction conditionnelle IF et la structure de sélection multiple EVALUATE (analogue au switch ou au match dans les langages modernes).
L’instruction conditionnelle IF
La syntaxe fondamentale de l’instruction IF est :
IF condition
instructions-si-vrai
ELSE
instructions-si-faux
END-IF.
Dans les versions modernes de COBOL (COBOL-85 et ultérieures), l’instruction doit se terminer explicitement par END-IF. plutôt que de s’appuyer uniquement sur le point final ., réduisant considérablement les erreurs d’analyse (parsing) et de logique.
Conditions communes
- Supérieur à :
>ouGREATER THAN - Inférieur à :
<ouLESS THAN - Égal à :
=ouEQUAL TO - Supérieur ou égal :
>=ouGREATER THAN OR EQUAL TO - Inférieur ou égal :
<=ouLESS THAN OR EQUAL TO
IF WS-BALANCE < 0
DISPLAY "CONTO IN ROSSO"
ELSE
DISPLAY "CONTO ATTIVO"
END-IF.
L’instruction EVALUATE
Lorsque nous devons comparer une variable avec de multiples valeurs discrètes, l’utilisation de nombreux IF imbriqués peut devenir complexe. L’instruction EVALUATE résout ce problème en structurant les choix de manière ordonnée :
EVALUATE WS-USER-ROLE
WHEN "ADMIN"
DISPLAY "ACCESSO COMPLETO"
WHEN "EDITOR"
DISPLAY "ACCESSO EDIT"
WHEN OTHER
DISPLAY "ACCESSO LIMITATO"
END-EVALUATE.
WHEN OTHER: Identifie la branche de repli (l’équivalent dudefaultou duelsefinal).END-EVALUATE.: Conclut la structure.
À vous de jouer
Écrivez un bloc IF-ELSE-END-IF qui vérifie si la variable WS-USER-AGE est supérieure ou égale à 18. En cas de succès, affichez 'ADULT', sinon affichez 'MINOR' en utilisant DISPLAY.
Afficher l'indice
Utilisez >= pour la comparaison, DISPLAY pour la sortie, et enfin END-IF. (avec le point à la fin du bloc).
Solution disponible après 3 tentatives
Complétez la structure EVALUATE pour vérifier la variable WS-STATUS. Si la valeur est 'A', affichez 'ACTIVE', si elle est 'I', affichez 'INACTIVE', sinon pour toute autre valeur, affichez 'UNKNOWN'.
Afficher l'indice
Écrivez les branches WHEN individuelles suivies du DISPLAY correspondant, et utilisez WHEN OTHER pour gérer le cas par défaut.
Solution disponible après 3 tentatives