Index du tour guidé

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
Navigation rapide
Utilisez ces boutons si vous voulez accéder directement à une page, sans parcourir les cartes.
1 2 3 4 5 6 7 8 9 10

Leçon 6 : boucles et découpage en paragraphes

Objectif : structurer votre programme comme un plan d’exécution grâce aux paragraphes, puis répéter proprement une action avec  PERFORM  en mode  VARYING  ou  UNTIL .

Débutant Boucles Structure
🔁
Idée clé
En Cobol, on gagne en lisibilité en séparant l’intention (paragraphes nommés) et la répétition (boucles). Un paragraphe = une action claire.  PERFORM  vous permet de dérouler le programme comme une recette.
🧠

Conceptualiser

PERFORM

Cobol structure l’exécution avec des paragraphes et les appelle avec  PERFORM . Ensuite, vous pouvez répéter un traitement avec une condition d’arrêt.

🏷️
Paragraphes nommés
Des étiquettes (ex.  AFFICHER-TITRE ,  COMPTER ) qui portent une intention claire.
▶️
 PERFORM  (appel)
Exécute un paragraphe comme une “étape” du programme, dans l’ordre voulu.
🔁
 PERFORM  +  UNTIL  /  VARYING 
Répète un bloc jusqu’à une condition (UNTIL) ou en faisant évoluer un compteur (VARYING).
⚠️
Ce qui piège le plus
Une boucle sans bonne condition d’arrêt devient une boucle infinie. Vérifiez votre test de sortie avant tout.
🗺️ Deux styles de boucle
 UNTIL  : “répéter jusqu’à ce que…”
 VARYING  : “compter de X à Y” (le plus naturel pour débuter)
🧪

Opérer

Compter avec une boucle

Exemple : le programme se lit comme un plan (titre puis compteur). La boucle utilise  PERFORM  VARYING .

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

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

 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 WS-I     PIC 9(2) VALUE 0.
 01 WS-LIMIT PIC 9(2) VALUE 5.

 PROCEDURE DIVISION.
    PERFORM AFFICHER-TITRE
    PERFORM COMPTER
    STOP RUN.

 AFFICHER-TITRE.
    DISPLAY "Boucle de demonstration"
    DISPLAY "-----".

 COMPTER.
    PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-LIMIT
        DISPLAY "Compteur = " WS-I
    END-PERFORM.
▶️ Compilation (exemple)
cobc -x -free demo-loop.cbl
Le programme affiche un titre puis les valeurs 1 à 5.
✅ Ce que vous validez
  • Appel de paragraphes
  • Ordre d’exécution clair
  • Compteur contrôlé
🧯

Déboguer

Erreurs typiques

Les boucles échouent rarement “au hasard” : elles échouent parce que la condition d’arrêt ou le compteur est mal maîtrisé.

  • Condition d’arrêt incorrecte : vous ne sortez jamais, boucle infinie.
  • Champ compteur trop petit : avec  PIC  9(2) , vous dépassez vite 99 si vous comptez longtemps.
🔎 Astuce

Pour diagnostiquer une boucle infinie, ajoutez temporairement un affichage du compteur et de la limite. Vous verrez immédiatement si la valeur n’évolue pas ou si la condition est inversée.

🧭

Expliquer et explorer

Exercices

Le découpage en paragraphes clarifie l’intention : un paragraphe = une action.  PERFORM  favorise un style lisible, proche d’un plan d’exécution.

📌 Conseil de progression
Quand vous apprenez, faites d’abord une boucle qui affiche le compteur. Ensuite, seulement après, remplacez l’affichage par un traitement plus “métier”.

🧩 Exercices (à faire tout de suite)

  1. Faites une boucle qui affiche les nombres pairs de 2 à 20.
  2. Faites une boucle qui additionne de 1 à N et affiche la somme.

 >>SOURCE FORMAT FREE
 IDENTIFICATION DIVISION.
 PROGRAM-ID. EXO-PAIRS.

 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 WS-I PIC 9(2) VALUE 0.

 PROCEDURE DIVISION.
    PERFORM VARYING WS-I FROM 2 BY 2 UNTIL WS-I > 20
        DISPLAY "Pair = " WS-I
    END-PERFORM
    STOP RUN.

 >>SOURCE FORMAT FREE
 IDENTIFICATION DIVISION.
 PROGRAM-ID. EXO-SOMME.

 DATA DIVISION.
 WORKING-STORAGE SECTION.
 01 WS-I    PIC 9(3) VALUE 0.
 01 WS-N    PIC 9(3) VALUE 0.
 01 WS-SOMME PIC 9(6) VALUE 0.

 PROCEDURE DIVISION.
    DISPLAY "Entrez N : " WITH NO ADVANCING
    ACCEPT WS-N

    MOVE 0 TO WS-SOMME
    PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-N
        ADD WS-I TO WS-SOMME
    END-PERFORM

    DISPLAY "Somme = " WS-SOMME
    STOP RUN.
💡 La somme peut grandir vite : d’où  WS-SOMME  plus large que  WS-N .

↑ Haut