IDENTIFICATION DIVISION.
PROGRAM-ID. EXO-SET-16.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-ETAT PIC X VALUE "N".
88 ETAT-ACTIF VALUE "O".
88 ETAT-INACTIF VALUE "N".
PROCEDURE DIVISION.
DISPLAY "Etat initial :"
IF ETAT-INACTIF
DISPLAY "Inactif."
END-IF
SET ETAT-ACTIF TO TRUE
DISPLAY "Apres activation :"
IF ETAT-ACTIF
DISPLAY "Actif."
END-IF
SET ETAT-ACTIF TO FALSE
DISPLAY "Apres desactivation :"
IF ETAT-INACTIF
DISPLAY "Inactif."
END-IF
STOP RUN.
Lecture simple
Le champ WS-ETAT stocke un caractère. Les niveaux 88 donnent des noms lisibles : ETAT-ACTIF signifie “la valeur vaut O”, et ETAT-INACTIF signifie “la valeur vaut N”.
Ensuite, SET ETAT-ACTIF TO TRUE met l’état actif, et SET ETAT-ACTIF TO FALSE revient à l’autre état. C’est plus parlant que de manipuler 0/1 sans explication.
Votre micro-exercice
Faites ces 3 modifications :
- Ajoutez un troisième état “S” pour “Suspendu” (un nouveau niveau 88).
- Après activation, mettez l’état “Suspendu” et affichez un message spécifique.
- Ajoutez un test qui affiche l’état courant en fin de programme.
Erreur fréquente à éviter
Confondre “le champ” et “la condition 88”. On ne fait pas ACCEPT ETAT-ACTIF. On saisit dans WS-ETAT, puis on teste avec IF ETAT-ACTIF.
Autre piège : utiliser des valeurs incohérentes (O/N puis 1/0). Choisissez une convention simple et tenez-vous-y, car la lisibilité est le vrai avantage des niveaux 88.