Fichiers séquentiels – Lecture (SELECT, FD, OPEN, READ, CLOSE)
COBOL excelle dans le traitement de fichiers. Ici, nous commençons par la lecture d’un fichier texte séquentiel (le type le plus simple). Cela implique de déclarer le fichier dans l’ENVIRONMENT DIVISION et la DATA DIVISION, puis d’utiliser les verbes OPEN, READ et CLOSE dans la PROCEDURE DIVISION.
Exemple de code : Lecture et affichage d’un fichier texte
IDENTIFICATION DIVISION.
PROGRAM-ID. LECTURE-FICHIER.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FICHIER-CLIENTS ASSIGN TO "clients.txt"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FICHIER-CLIENTS.
01 ENREGISTREMENT-CLIENT.
05 NUMERO PIC 9(5).
05 NOM PIC X(20).
05 PRENOM PIC X(15).
05 VILLE PIC X(25).
WORKING-STORAGE SECTION.
01 FIN-FICHIER PIC X VALUE "N".
PROCEDURE DIVISION.
OPEN INPUT FICHIER-CLIENTS.
PERFORM UNTIL FIN-FICHIER = "O"
READ FICHIER-CLIENTS
AT END
MOVE "O" TO FIN-FICHIER
NOT AT END
DISPLAY NUMERO " " NOM " " PRENOM " - " VILLE
END-READ
END-PERFORM.
CLOSE FICHIER-CLIENTS.
DISPLAY SPACE.
DISPLAY "Lecture terminée.".
STOP RUN.
Télécharger le code
Exemple de fichier clients.txt attendu
00001DUPONT Jean Paris
00002MARTIN Sophie Lyon
00003BERNARD Lucas Marseille
00004DURAND Emma Bordeaux
Résultat attendu à l'exécution
00001 DUPONT Jean - Paris
00002 MARTIN Sophie - Lyon
00003 BERNARD Lucas - Marseille
00004 DURAND Emma - Bordeaux
Lecture terminée.
Explication détaillée – focus sur les instructions fichier
ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL.
C’est ici qu’on associe un nom logique COBOL à un fichier physique.
SELECT…ASSIGN TO"nom-du-fichier"
ORGANIZATION IS LINE SEQUENTIAL→ fichier texte ligne par ligne (le plus simple pour débuter).FILE SECTION. FD FICHIER-CLIENTS.
FD= File Description.
Définit la structure de chaque enregistrement du fichier.
Les champs (05) décrivent exactement le format attendu (attention aux positions et longueurs !).OPEN INPUT FICHIER-CLIENTS.
Ouvre le fichier en mode lecture (INPUT).
Autres modes :OUTPUT,I-O,EXTEND.READ FICHIER-CLIENTS AT END … NOT AT END … END-READ
Lit un enregistrement et le place dans l’enregistrement01associé.
AT END→ exécuté quand on atteint la fin du fichier (EOF).
NOT AT END→ traitement normal de l’enregistrement lu.CLOSE FICHIER-CLIENTS.
Toujours fermer les fichiers ouverts (bonne pratique indispensable).
Conseils pour débutants :
• Les longueurs des champs dans
•
• Testez toujours avec un petit fichier connu.
• En cas d’erreur d’ouverture ou de lecture → le programme peut s’arrêter brutalement (on verra les
• Les longueurs des champs dans
FD doivent correspondre exactement au fichier réel.•
LINE SEQUENTIAL ignore les sauts de ligne ; idéal pour les .txt• Testez toujours avec un petit fichier connu.
• En cas d’erreur d’ouverture ou de lecture → le programme peut s’arrêter brutalement (on verra les
FILE STATUS plus tard).
Attention : Ce programme suppose que le fichier "clients.txt" existe dans le même dossier que l’exécutable. Si le fichier est absent, la plupart des compilateurs génèrent une erreur à l’
OPEN.
Prochain sujet : Écriture dans un fichier séquentiel (OPEN OUTPUT, WRITE) et création d’un nouveau fichier.