Exercice 6 : end-if

Micro-exercice

Objectif : comprendre pourquoi END-IF est essentiel pour fermer clairement un test. Quand un programme contient plusieurs IF et plusieurs DISPLAY, END-IF évite les confusions : on sait exactement quelles lignes appartiennent au test.

Ce que vous pratiquez

  • Fermer un bloc IF au bon endroit.
  • Enchaîner deux tests sans mélanger leurs actions.
  • Comprendre le risque d’un END-IF oublié.

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 bloc est en <pre>, donc l’alignement reste visible sur mobile et ordinateur.

Exemple minimal COBOL Format fixe
Télécharger le code
       IDENTIFICATION DIVISION.
       PROGRAM-ID. EXO-END-IF-06.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  WS-AGE               PIC 99    VALUE 00.
       01  WS-STATUT            PIC X(06) VALUE SPACES.

       PROCEDURE DIVISION.
           DISPLAY "Entrez un age (00 a 99) : "
           ACCEPT WS-AGE

           IF WS-AGE >= 18
               MOVE "MAJEUR" TO WS-STATUT
               DISPLAY "Statut calcule : majeur."
           ELSE
               MOVE "MINEUR" TO WS-STATUT
               DISPLAY "Statut calcule : mineur."
           END-IF

           DISPLAY "Statut memorise : " WS-STATUT

           IF WS-STATUT = "MAJEUR"
               DISPLAY "Acces autorise."
           END-IF

           STOP RUN.

Lecture ligne par ligne

1) Saisie

ACCEPT WS-AGE place ce que l’utilisateur tape dans la variable WS-AGE.

2) Premier test

Le bloc IF ... ELSE ... END-IF calcule un statut et l’écrit dans WS-STATUT. Le END-IF dit clairement : le test est terminé, on revient au flux normal du programme.

3) Deuxième test

Ensuite seulement, on fait un autre IF qui regarde la valeur mémorisée et décide d’afficher “Accès autorisé.” ou rien. Sans END-IF au bon endroit, ce deuxième test pourrait se retrouver “pris” dans le premier bloc, et le résultat deviendrait incohérent.

Votre micro-exercice

Faites ces 3 modifications pour renforcer le réflexe END-IF :

  1. Ajoutez un second seuil : si l’âge est supérieur ou égal à 65, affichez “Senior” (dans un nouveau IF après le premier END-IF).
  2. Ajoutez un message qui s’affiche toujours après les tests : “Traitement termine.” (en dehors de tous les IF).
  3. Testez avec 17, 18, 64, 65 pour vérifier que chaque message apparaît au bon moment.

Erreur fréquente à éviter

Oublier END-IF dans un programme qui grandit. Au début, on ne voit pas toujours le problème, mais dès qu’on ajoute un deuxième test ou un affichage, on mélange les blocs.

Bon réflexe : dès que vous écrivez un IF, pensez immédiatement à où vous allez placer le END-IF. Dans vos pages de cours, gardez un alignement stable (instructions en zone B) pour visualiser les blocs.

Conseil : si vous hésitez sur ce qui est “dans” le test, regardez la position du END-IF. C’est la frontière.