3. ENVIRONMENT DIVISION

Cette division (ENVIRONMENT DIVISION) permet de définir le type d’ordinateur pour lequel est écrit le programme, ainsi que les périphériques nécessaires pour supporter les fichiers.

   A   B
   ENVIRONMENT DIVISION.
   CONFIGURATION SECTION.
   SOURCE-COMPUTER. IBM-AS400.
            Ou      IBM-PC.
   OBJECT-COMPUTER. IBM-AS400.
            Ou      IBM-PC.
   SPECIAL-NAMES. Liste des noms symboliques spéciaux.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
        Options
   I-O-CONTROL.
        Options

Les SPECIAL-NAMES

CURRENCY-SIGN IS caractère : par défaut le $ mais un autre caractère peut être utilisé

DECIMAL-POINT IS COMMA : la Virgule indique la séparation des unités et des décimales.

Nom-réservé IS nom-mnémonique : cette clause s’adresse aux instructions d’entrée-sortie DISPLAY et ACCEPT.

L’INPUT-OUTPUT SECTION

Fait le lien entre les fichiers du programme et les fichiers sur les périphériques (Disque, bande, imprimante). C’est ici qu’on indique si le fichier est séquentiel ou en accès direct.

En FILE-CONTROL, on établit le lien entre chacun des noms de fichiers désignés dans la DATA DIVISION et les noms de fichiers externes.

Forme générale

   A   B
   FILE-CONTROL.
       SELECT FOURNISSEUR ASSIGN TO ……….

FOURNISSEUR est le nom indiqué en FILE SECTION dans la clause FD Nom-de-fichier

Les options

FILE-CONTROL.
    SELECT [optional] nom-du-fichier assign to ……
           ORGANIZATION IS ………
           ACCES MODE IS………….
           Clause KEY…
           FILE STATUS IS ………..

1. ORGANIZATION IS LINE SEQUENTIAL
                   SEQUENTIAL
                   INDEXED
                   RELATIVE

2. ACCESS MODE IS SEQUENTIAL
                  RANDOM
                  DYNAMIC

3. KEY
             RELATIVE KEY IS nom-de-donnée
             RECORD KEY IS nom-de-donnée1
                 ALTERNATE RECORD KEY IS nom-de-donnée2
                 [WITH DUPLICATES]

4. FILE-STATUS IS SKF1

Remarques

Au niveau de l’organisation :
Linesequential pour les fichiers crées par l’EDITEUR.
Relative pour les fichiers à accès directe au moyen d’une clé numérique qui indique la position de l’enregistrement dans le fichier.
Indexed, les enregistrements sont les uns derrières les autres et les clés d’accès se trouvent dans un second fichier.

Au niveau de l’accès :
Sequential le fichier sera lu enregistrement par enregistrement du début à la fin.
Random le fichier est lu directement au moyen d’une clé, l’enregistrement recherché est donné Immédiatement.
Dynamic le fichier peut être lu comme le sequential ou comme le random durant toute la durée du programme.

Au niveau des clés :
La définition de clés n’est valable que pour les fichiers NON séquentiels.

Le FILE-STATUS permet de récupérer sous forme de code numérique le résultat de l’opération effectuée sur ce fichier. Pour cela, l’option doit être indiqué.

Utilisation d’un fichier de type texte

INPUT-OUTPUT SECTION.
   FILE-CONTROL.
      SELECT OPTIONAL fdisk1
         ASSIGN TO disk "c:\temp\monfichier.txt"
         Organization is Line Sequential
         FILE STATUS IS status-variable.
   *
      Select impr assign to print "-p spooler".
   ***********************************************
   DATA DIVISION.
   FILE SECTION.
   FD fdisk1.
   01 maligne pic x(80).

*** si vous ne pouvez pas indiquer directement le nom du fichier vous pouvez utiliser cette méthode

    FD fdisk1 VALUE OF FILE-ID LENOM_DE_MONFICHIER.
    01 maligne pic x(80).

    FD Impr.
    01 ligne pic x(80).

01 LENOM_DE_MONFICHIER PIC X(100).

Pour un fichier de données

ENVIRONMENT DIVISION.
   INPUT-OUTPUT SECTION.
   FILE-CONTROL.
      SELECT optional FOUT
         ASSIGN TO "c:\temp\fout.dta"
         FILE STATUS is sk.
   **********************************************
   DATA DIVISION.
   FILE SECTION.
   FD Fout.
   01 EOUT pic x(20).