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 SECTION dé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é PIC permet de définir le type et la taille de chaque champ.
  • 🧠 Les niveaux 88 servent à 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