Lecture séquentielle avec la FILE SECTION

ENVIRONMENT DIVISION

Ce programme COBOL montre comment lire un fichier texte ligne par ligne à l’aide de la FILE SECTION. Il introduit les instructions SELECT, READ et l’utilisation d’un indicateur logique de fin de fichier.

1. Code source du programme

       IDENTIFICATION DIVISION.
       PROGRAM-ID. PactaReader.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT InputFile ASSIGN TO "pactademo.txt"
               ORGANIZATION IS SEQUENTIAL.

       DATA DIVISION.
       FILE SECTION.
       FD InputFile.
       01 LineContent     PIC X(80).

       WORKING-STORAGE SECTION.
       01 DoneFlag PIC X VALUE "N".
          88 Done  VALUE "Y".
          88 NotDone VALUE "N".

       PROCEDURE DIVISION.
       Main.
           OPEN INPUT InputFile

           PERFORM UNTIL Done
               READ InputFile
                   AT END
                       SET Done TO TRUE
                   NOT AT END
                       DISPLAY LineContent
               END-READ
           END-PERFORM

           CLOSE InputFile
           STOP RUN.

2. Rôle de chaque division

Division Description
ENVIRONMENT DIVISION Déclare les fichiers externes utilisés par le programme.
FILE-CONTROL Associe le nom logique InputFile au fichier physique pactademo.txt.
FILE SECTION Décrit la structure de chaque enregistrement du fichier lu.
WORKING-STORAGE SECTION Contient l’indicateur de fin de fichier (DoneFlag).
PROCEDURE DIVISION Lit le fichier ligne par ligne et affiche son contenu.

3. Explication de la FILE SECTION

La FILE SECTION est l’endroit où l’on décrit le contenu du fichier ligne par ligne. Ici, chaque ligne est lue dans une variable de 80 caractères nommée LineContent.
FD InputFile.
01 LineContent     PIC X(80).

4. Contrôle de la fin de fichier

01 DoneFlag PIC X VALUE "N".
   88 Done  VALUE "Y".
   88 NotDone VALUE "N".

Le niveau 88 permet de nommer des états logiques. Ici, le programme continue tant que Done n’est pas atteint.

5. Boucle de lecture

PERFORM UNTIL Done
    READ InputFile
        AT END
            SET Done TO TRUE
        NOT AT END
            DISPLAY LineContent
    END-READ
END-PERFORM

Cette boucle lit une ligne à la fois jusqu’à la fin du fichier. Chaque ligne est affichée immédiatement après la lecture.

6. Exemple de fichier pactademo.txt

Première ligne COBOL
Deuxième ligne test
Troisième ligne lue

7. Résultat affiché dans la console

Première ligne COBOL
Deuxième ligne test
Troisième ligne lue

8. À retenir

  • Le mot-clé SELECT relie un nom logique à un fichier externe.
  • La FILE SECTION décrit comment chaque ligne du fichier sera lue.
  • Les niveaux 88 permettent de rendre le code plus lisible.
  • La lecture se fait ligne par ligne avec la clause READ et la gestion de AT END.