Introduction à la FILE SECTION en COBOL
La
FILE SECTION permet de décrire la structure des fichiers que votre programme COBOL va lire ou écrire. Chaque enregistrement d’un fichier est une ligne structurée en plusieurs champs. Cette section de cours propose un exemple simple, spécialement conçu pour débuter. Voir aussi cette explication et ce shéma.
1. Code COBOL complet
IDENTIFICATION DIVISION.
PROGRAM-ID. FileSectionDemo.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT JoueursFile ASSIGN TO "joueurs.txt"
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD JoueursFile.
01 FicheJoueur.
05 Prenom PIC X(10).
05 Score PIC 9(3).
WORKING-STORAGE SECTION.
01 FinDuFichier PIC X VALUE "N".
88 Fini VALUE "O".
88 EnCours VALUE "N".
PROCEDURE DIVISION.
Debut.
OPEN INPUT JoueursFile
PERFORM UNTIL Fini
READ JoueursFile
AT END
SET Fini TO TRUE
NOT AT END
DISPLAY "Prenom : " Prenom
DISPLAY "Score : " Score
DISPLAY "---------------------"
END-READ
END-PERFORM
CLOSE JoueursFile
STOP RUN.
2. Objectif du programme
Ce programme lit un fichier texte ligne par ligne. Chaque ligne contient un prénom et un score. Ces informations sont extraites grâce à la structure définie dans la
FILE SECTION, puis affichées à l’écran.
3. Exemple de fichier joueurs.txt
ALICE 085
BOB 072
CAROL 099
Chaque ligne du fichier contient 10 caractères pour le prénom, suivis de 3 chiffres pour le score, sans espace ni séparateur.
4. Analyse de la FILE SECTION
Que signifie FD ? - Que signifie SD ?
FD JoueursFile.
01 FicheJoueur.
05 Prenom PIC X(10).
05 Score PIC 9(3).
| Élément | Description |
|---|---|
FD JoueursFile |
Déclaration du fichier logique utilisé dans le programme. |
01 FicheJoueur |
Structure d’un enregistrement (ligne du fichier). |
05 Prenom |
Chaîne de 10 caractères pour le prénom. |
05 Score |
Nombre à 3 chiffres sans virgule. |
5. Gestion de la fin du fichier
01 FinDuFichier PIC X VALUE "N".
88 Fini VALUE "O".
88 EnCours VALUE "N".
Le niveau 88 permet de créer des noms logiques pour représenter des états. Ici, on vérifie si la lecture du fichier est terminée avec IF Fini.
| Nom | Valeur | Rôle |
|---|---|---|
FinDuFichier |
"N" | Variable initialisée comme non terminé. |
Fini |
"O" | Condition nommée activée à la fin du fichier. |
EnCours |
"N" | Condition active tant que le fichier n’est pas terminé. |
6. Boucle de lecture
PERFORM UNTIL Fini
READ JoueursFile
AT END
SET Fini TO TRUE
NOT AT END
DISPLAY "Prenom : " Prenom
DISPLAY "Score : " Score
DISPLAY "---------------------"
END-READ
END-PERFORM
La boucle lit une ligne à la fois. Quand la fin du fichier est atteinte, la condition Fini est activée et la boucle s’arrête.
7. Résultat attendu dans la console
Prenom : ALICE
Score : 85
---------------------
Prenom : BOB
Score : 72
---------------------
Prenom : CAROL
Score : 99
---------------------
8. À retenir
- 📁 La
FILE SECTIONdécrit la forme exacte des lignes lues ou écrites dans un fichier. - 🧩 Chaque ligne d’un fichier est appelée un enregistrement.
- 🔤 Le mot-clé
PICpermet de définir le type et la taille de chaque champ. - 🧠 Les niveaux
88servent à simplifier la gestion des états (fin de fichier, etc.). - 🔁 La lecture s’effectue avec
READ ... AT END ... NOT AT END.
Téléchargez le code source : 🔍 Voir dans un nouvel onglet | 📥 Télécharger le fichier