Exercice 15 : initialize

Micro-exercice

Objectif : utiliser INITIALIZE pour remettre des variables “à zéro” proprement. Quand un programme manipule plusieurs champs, remettre tout à l’état initial évite des résultats incohérents. Cet exercice vous montre la différence entre initialiser “un champ” et initialiser “tout un groupe”.

Ce que vous pratiquez

  • Déclarer un groupe de données avec plusieurs champs.
  • Remplir ce groupe avec des valeurs (MOVE).
  • Tout remettre à l’état initial avec INITIALIZE.

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 <pre> garde l’alignement pour un rendu réaliste.

Exemple minimal COBOL Format fixe
Télécharger le code
       IDENTIFICATION DIVISION.
       PROGRAM-ID. EXO-INITIALIZE-15.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  WS-CLIENT.
           05  WS-NOM            PIC X(20) VALUE SPACES.
           05  WS-AGE            PIC 99    VALUE 00.
           05  WS-CODE           PIC X(03) VALUE SPACES.

       PROCEDURE DIVISION.
           MOVE "DURAND" TO WS-NOM
           MOVE 35       TO WS-AGE
           MOVE "A17"    TO WS-CODE

           DISPLAY "Avant initialize :"
           DISPLAY "Nom  : " WS-NOM
           DISPLAY "Age  : " WS-AGE
           DISPLAY "Code : " WS-CODE

           INITIALIZE WS-CLIENT

           DISPLAY "Apres initialize :"
           DISPLAY "Nom  : " WS-NOM
           DISPLAY "Age  : " WS-AGE
           DISPLAY "Code : " WS-CODE
           STOP RUN.

Lecture simple

Le groupe WS-CLIENT contient trois champs. Après avoir mis des valeurs, on affiche “avant”. Puis INITIALIZE WS-CLIENT remet tout le groupe à l’état initial : les champs texte redeviennent des espaces, les champs numériques redeviennent zéro.

À retenir : INITIALIZE est très pratique quand vous avez un groupe de données : une seule instruction peut remettre plusieurs champs “au propre”.

Votre micro-exercice

Faites ces 3 modifications :

  1. Ajoutez un champ WS-VILLE PIC X(15) dans le groupe, puis testez l’initialisation.
  2. Ajoutez un second client WS-CLIENT-2 et initialisez-le aussi.
  3. Ajoutez un message “Reinitialisation terminee.” juste après INITIALIZE.

Erreur fréquente à éviter

Confondre “INITIALIZE” et “MOVE ZERO”. MOVE ZERO marche bien pour un seul champ numérique, mais pour un groupe mélangeant texte et nombres, INITIALIZE est plus sûr et plus rapide à lire.

Autre piège : penser que INITIALIZE remet une valeur “personnalisée” (par exemple une valeur par défaut). En réalité, il remet les champs à une valeur “neutre” (espaces ou zéros), sauf options avancées.

Conseil : dans un programme qui traite plusieurs fiches, on initialise souvent un groupe “en début de traitement” pour éviter de réutiliser des données anciennes.