Exercice 16 : set

Micro-exercice

Objectif : comprendre l’instruction SET pour gérer un “interrupteur” logique (vrai/faux) avec les niveaux 88. Vous allez définir un indicateur, l’activer, le désactiver, puis afficher des messages différents. C’est une technique classique pour écrire un code plus lisible que des tests numériques “0/1”.

Ce que vous pratiquez

  • Déclarer un indicateur avec un champ support (ex : PIC X).
  • Définir des conditions 88 (ex : actif/inactif).
  • Utiliser SET ... TO TRUE/FALSE pour changer l’état.

Repère sur les colonnes

  • Zone A : colonnes 8 à 11 (7 espaces pour divisions et déclarations).
  • Zone B : colonnes 12 à 72 (11 espaces pour instructions).

Le code est en <pre> : l’alignement reste fidèle.

Exemple minimal COBOL Format fixe
Télécharger le code
       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.

À retenir : les niveaux 88 servent à donner un nom à une condition. On lit le code presque comme une phrase : “si état actif”.

Votre micro-exercice

Faites ces 3 modifications :

  1. Ajoutez un troisième état “S” pour “Suspendu” (un nouveau niveau 88).
  2. Après activation, mettez l’état “Suspendu” et affichez un message spécifique.
  3. 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.

Conseil : retenez l’idée “88 = un nom lisible pour un état”. Vous gagnez en clarté, surtout dans un programme long.