Apprenez les bases du COBOL et développez vos compétences en programmation legacy avec une approche moderne.
En cobol, un “tableau” est une zone mémoire composée de plusieurs éléments identiques, stockés les uns à la suite.
La clause OCCURS sert à répéter une définition de champ un certain nombre de fois.
C’est une notion clé pour gérer des listes (noms, montants, codes), parcourir des données, et écrire des traitements batch
structurés.
Un tableau cobol se décrit dans la DATA DIVISION :
vous créez une structure, puis vous répétez un élément avec OCCURS .
OCCURS 5 TIMES signifie : “ce champ existe 5 fois”.
WS-NOM(WS-I) .
PERFORM et
VARYING pour lire / remplir / afficher chaque occurrence.
OCCURS 5 TIMES . La règle simple : contrôlez toujours la borne.
Cet exemple déclare un tableau de 5 noms, le remplit, puis l’affiche. Vous voyez immédiatement la logique :
déclarer avec OCCURS , parcourir avec une boucle, et accéder à chaque élément par indice.
>>SOURCE FORMAT FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. DEMO-OCCURS.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-I PIC 9(2) VALUE 0.
01 WS-LIMITE PIC 9(2) VALUE 5.
01 WS-TABLE-NOMS.
05 WS-NOM OCCURS 5 TIMES PIC X(20) VALUE SPACES.
PROCEDURE DIVISION.
PERFORM REMPLIR-TABLE
PERFORM AFFICHER-TABLE
STOP RUN.
REMPLIR-TABLE.
MOVE "DURAND" TO WS-NOM(1)
MOVE "MARTIN" TO WS-NOM(2)
MOVE "BERNARD" TO WS-NOM(3)
MOVE "THOMAS" TO WS-NOM(4)
MOVE "PETIT" TO WS-NOM(5).
AFFICHER-TABLE.
DISPLAY "--- Liste des noms ---"
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-LIMITE
DISPLAY "Element " WS-I " = [" WS-NOM(WS-I) "]"
END-PERFORM.
OCCURS WS-NOM(3) PERFORM parcourt de 1 à N[...] rendent visibles les espaces de fin ACCEPT dans WS-NOM(WS-I) ,
puis affichage récapitulatif.
OCCURS 5 TIMES , les indices valides sont 1 à 5.
Solution : utilisez une limite ( WS-LIMITE ) et un test clair dans la boucle.
PIC 9(2) sature vite si vous augmentez la taille du tableau.
Solution : adaptez le format (ex. 9(4) ).
[ + valeur + ], surtout en phase d’apprentissage.
OCCURS vous force à raisonner “structure + répétition”.
C’est exactement la logique des traitements métier : mêmes règles appliquées à des séries de valeurs
(lignes, codes, montants, listes de champs).
ACCEPT ). PIC 9(3) ) et calculez la somme.