Bienvenue dans la formation COBOL

Apprenez les bases du COBOL et développez vos compétences en programmation legacy avec une approche moderne.

Info : Ce module vous permet d’accéder rapidement aux contenus essentiels de la formation COBOL.
Retour au plan général

Stockage des données saisies dans des variables déclarées

En Cobol, une saisie n’est jamais “magique” : elle est toujours copiée dans un champ qui a été déclaré à l’avance. Cette logique est centrale en informatique de gestion : chaque donnée possède une taille, un type, un format, et donc un “contrat” de stockage. Comprendre ce mécanisme vous évite les surprises : troncatures, espaces invisibles, incohérences entre texte et numérique, ou valeurs qui semblent vides alors qu’elles sont bien présentes.

Données Saisie Contrat
🧠

Conceptualiser

Principe

Une donnée saisie (via  ACCEPT ) est placée dans une variable. Cette variable est définie dans la  DATA  DIVISION , généralement dans la  WORKING-STORAGE  SECTION .

📦
Une variable = une zone mémoire
Elle a une taille fixe :  PIC  X(20) ,  9(3) , etc. La saisie est copiée dans cette zone, pas ailleurs.
📏
La taille est un contrat
Si l’utilisateur saisit plus long, la fin peut être perdue. Si la zone est numérique, une saisie non numérique devient un problème selon les options et l’environnement.
Les espaces font partie de la donnée
Un champ texte est souvent rempli d’espaces à droite. Un affichage simple peut paraître vide : d’où l’intérêt d’encadrer avec [ et ].
💡
Bonne pratique d’apprentissage
Lisez d’abord la saisie dans un champ texte (type  X ), puis validez/convertissez avant de la placer dans un champ numérique. Cela rend vos programmes plus robustes et vous apprend à contrôler les formats.
🧪

Opérer

Exemple complet

Le programme ci-dessous montre une saisie stockée dans des variables déclarées, puis affichée de manière lisible. Les crochets permettent de constater les espaces de fin.

🧾 Fichier : demo-stockage.cbl
Cobol (format libre)

 >>SOURCE FORMAT FREE
 IDENTIFICATION DIVISION.
 PROGRAM-ID. DEMO-STOCKAGE.

 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 WS-PRENOM   PIC X(20) VALUE SPACES.
 01 WS-VILLE    PIC X(20) VALUE SPACES.
 01 WS-AGE-TXT  PIC X(3)  VALUE SPACES.
 01 WS-AGE     PIC 9(3)  VALUE 0.

 PROCEDURE DIVISION.
    DISPLAY "Prenom : " WITH NO ADVANCING
    ACCEPT WS-PRENOM

    DISPLAY "Ville  : " WITH NO ADVANCING
    ACCEPT WS-VILLE

    DISPLAY "Age    : " WITH NO ADVANCING
    ACCEPT WS-AGE-TXT

    IF WS-AGE-TXT IS NUMERIC
        MOVE WS-AGE-TXT TO WS-AGE
    ELSE
        MOVE 0 TO WS-AGE
    END-IF

    DISPLAY "--- Verification stockage ---"
    DISPLAY "Prenom = [" WS-PRENOM "]"
    DISPLAY "Ville  = [" WS-VILLE  "]"
    DISPLAY "AgeTxt = [" WS-AGE-TXT "]"
    DISPLAY "AgeNum = " WS-AGE

    STOP RUN.
Ce que montre l’exemple
  • Chaque saisie va dans une variable déclarée à l’avance
  • Les champs texte gardent des espaces de fin
  • Un champ numérique exige une saisie valide (test IS NUMERIC)
  • On peut convertir proprement en deux étapes : texte → numérique
Pourquoi lire l’âge en texte ?
Parce qu’une saisie utilisateur peut contenir des espaces, des lettres, ou une valeur trop longue. En lisant d’abord dans  WS-AGE-TXT , vous validez, puis vous stockez dans  WS-AGE  seulement si la valeur est correcte.

Troncature
Si un champ est trop court (ex.  X(10) ), une saisie plus longue sera coupée. Solution : agrandir le champ ou contrôler la longueur.
Champ numérique alimenté “directement”
Saisir dans  9(3)  sans validation peut provoquer des comportements différents selon l’environnement. Solution : lire en texte, tester, puis déplacer.
🧩
Explorer : exercices
1) Réduisez  WS-VILLE  à  X(5)  et observez la troncature.
2) Ajoutez un champ code postal ( X(5) ) et affichez-le encadré.
3) Pour l’âge, testez une saisie non numérique et vérifiez que le programme met 0.

↑ Haut