Apprenez les bases du COBOL et développez vos compétences en programmation legacy avec une approche moderne.
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 .
PERFORM vous permet de dérouler le programme comme une recette.
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.
AFFICHER-TITRE , COMPTER ) qui portent une intention claire.
PERFORM (appel)
PERFORM + UNTIL / VARYING
UNTIL : “répéter jusqu’à ce que…” VARYING : “compter de X à Y” (le plus naturel pour débuter)
Exemple : le programme se lit comme un plan (titre puis compteur). La boucle utilise
PERFORM … VARYING .
>>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.
cobc -x -free demo-loop.cbl
Les boucles échouent rarement “au hasard” : elles échouent parce que la condition d’arrêt ou le compteur est mal maîtrisé.
PIC 9(2) ,
vous dépassez vite 99 si vous comptez longtemps.
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.
Le découpage en paragraphes clarifie l’intention : un paragraphe = une action.
PERFORM favorise un style lisible, proche d’un plan d’exécution.
>>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.
WS-SOMME plus large que WS-N .