Apprenez les bases du COBOL et développez vos compétences en programmation legacy avec une approche moderne.
Objectif : contrôler le flux d’exécution avec IF ,
ELSE et EVALUATE ,
afin d’écrire des règles métier lisibles, fiables et faciles à faire évoluer.
IF vous gérez un choix simple,
avec EVALUATE vous structurez une grille de décisions qui s’empile
sans devenir illisible.
Trois outils suffisent pour structurer la plupart des règles métier de base :
IF
ELSE
EVALUATE
IF … ELSE EVALUATE avec plusieurs WHEN
Exemple complet : lecture d’une note, validation avec IF , puis attribution d’une mention
via EVALUATE .
>>SOURCE FORMAT FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. DEMO-IF.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NOTE PIC 9(2) VALUE 0.
PROCEDURE DIVISION.
DISPLAY "Entrez une note (0 a 20) : " WITH NO ADVANCING
ACCEPT WS-NOTE
IF WS-NOTE >= 10
DISPLAY "Resultat : valide"
ELSE
DISPLAY "Resultat : non valide"
END-IF
EVALUATE TRUE
WHEN WS-NOTE >= 16
DISPLAY "Mention : tres bien"
WHEN WS-NOTE >= 14
DISPLAY "Mention : bien"
WHEN WS-NOTE >= 12
DISPLAY "Mention : assez bien"
WHEN WS-NOTE >= 10
DISPLAY "Mention : passable"
WHEN OTHER
DISPLAY "Mention : insuffisant"
END-EVALUATE
STOP RUN.
cobc -x -free demo-if.cbl
Deux erreurs reviennent souvent en format libre : la nature des données et les fins de blocs.
END-IF ou END-EVALUATE
en format libre : le compilateur “perd” la structure.
Quand vous écrivez un bloc, terminez-le immédiatement avec END-...
avant d’ajouter le contenu. Vous évitez ainsi les oublis.
EVALUATE reste souvent plus lisible quand les règles métier s’empilent :
vous pouvez ajouter des cas sans multiplier les IF imbriqués.
EVALUATE sur une lettre (A/B/C/D).
IF WS-NOTE > 20
DISPLAY "Erreur : note hors borne"
ELSE
IF WS-NOTE >= 10
DISPLAY "Resultat : valide"
ELSE
DISPLAY "Resultat : non valide"
END-IF
END-IF
WORKING-STORAGE SECTION.
01 WS-CODE PIC X VALUE SPACE.
PROCEDURE DIVISION.
DISPLAY "Entrez un code (A/B/C/D) : " WITH NO ADVANCING
ACCEPT WS-CODE
EVALUATE WS-CODE
WHEN "A"
DISPLAY "Niveau : excellent"
WHEN "B"
DISPLAY "Niveau : bon"
WHEN "C"
DISPLAY "Niveau : correct"
WHEN "D"
DISPLAY "Niveau : a ameliorer"
WHEN OTHER
DISPLAY "Code inconnu"
END-EVALUATE
STOP RUN.