Fichier séquentiel

modifier
ENVIRONMENT DIVISION.
  ...
  INPUT-OUTPUT SECTION.
   FILE-CONTROL.
    SELECT FNOM ASSIGN TO (DISK/PRINTER);
           ORGANIZATION IS SEQUENTIAL;
           ACCESS MODE RANDOM;
           FILE STATUS IS FS.
    01 ENREG.
       02 NM1 PIC X(15).
       02 FILLER PIX X(5); VALUE SPACE.
       02 NM2 PIX X(20). 
  DATA DIVISION.
   FILE SECTION.
    FD FNOM LABEL RECORD STANDARD;
       VALUE OF FILE-ID IS "FNOM.DAT".

*OPEN (INPUT/OUTPUT/I-O/EXTEND) FNOM.
*READ FNOM [AT END [INS ... ]].
*WRITE ENREG.
*REWRITE ENREG. - open I-O.
*CLOSE FNOM.


? FACTURE DE GAZ - créer un fichier de consommation de GAZ avec le nom en X(16), adresse X(40), ville X(15) et consommation 9(4)V99. > CRÉER ce fichier en le remplissant et s'il existe déjà, on demande si on veut le détruire (o/n). > FAIRE menu (1. Sortie écran / 2. Rechercher par nom / 3. Ajouter des personnes au fichier / 4. Modifier - smenu (1. nom / 2. adresse / 3. ville / 4. consommation / 0. fin) / 5. Sortie imprimante / 0. fin)

? Rajouter une option d'impression de liste de consommation par client avec numéro en bas de page

fichier indexe

modifier
  • OPEN (INPUT/ I-O/ OUTPUT) FICHIER - active CP
  • START FIC KEY IS ((>/ not</ =) nom); INVALID KEY...
    • seq.: Act et pointe CP pour lecture séq.
    • rand: START
    • dyn.: Tous sens.
  • READ
    • seq.: READ ... [AT END ...]; INVALID KEY ...
    • ran.: READ ... KEY IS ...; INVALID KEY ...
    • dyn.: direct / READ ... KEY IS ...; INVALID KEY ...
    • dyn.: sequen / READ ... NEXT [AT END ...]
  • REWRITE ... ; INVALID KEY ... - modif tt sauf CP
  • DELETE FNOM; INVALID KEY ... - charge CP et eff() ENREG
  • WRITE ENREG; INVALID KEY ... - I-O (ajouter), OUTPUT (écrire).
  • CLOSE FNOM

exercices

modifier

Soit le fichier suivant // (CP-ClePrimaire) est NUM-PROD et (CleAlternative) est DES-PROD

      *8   |    |    |    |    |    |    |    |    |    |    |    |    |    |    |    |
       ENVIRONMENT DIVISION
       ...
       INPUT-OUTPUT SECTION.
        FILE-CONTROL.
   
         SELECT FPROD ASIGN TO DISK;
                ORGANIZATION INDEXED;
                ACCESS MODE ...
                RECORD KEY IS NUM-PROD;
                ALTERNATE RECORD DES-PROD DUPLICATES;
                FILE STATUS IS STAT-PROD.


       DATA DIVISION.
        FILE SECTION.

         FD FPROD LABEL RECORD STANDARD;
            VALUE OF FILE-ID IS "FPROD.DAT".

         01 ENR-PROD.
            02 NUM-PROD.
               03 FAM-PROD PIC XX.
               03 FILLER PIC X(4).
            02 NOM-PROD.
               03 DES-PROD PIC X(5).
               03 FILLER PIC X(10).
            02 INFO PIC XX.

        WORKING-STORAGE SECTION.
          
         77 STAT-PROD PIC XX.

? 1/ Faire programme pour CREER, REMPLIR, AFFICHER, MODIFIER, EFFACER dans ce fichier

  • acces sequentiel
? 2/ En acces sequentiel, afficher tout le fichier
? 3/ Afficher tous les produits dont le nom commence par B
  • acces random
? 4/ Entrer un numero de produit et l'afficher
  • acces dynamique
? 5/ En dynamic, affichet tous les produits dont le nom est "rivet"
? 6/ Faire les 5 exercices precedents en acces dynamique
? 7/ Afficher le 1er produit sans faire OPEN à partir de n'importe ou
? 8/ Pour tous les produits de la famille K2, si l'info est AA, elle devient XX. Si l'info est BB, on supprime le produit.
? 9/ Afficher tous les produits à partir du produit H51025. (En 2 versions // Toujours le faire / Le faire uniquement s'il est dedans)

fichier relatif

modifier
  • SELECT
  SELECT FICHIER ORGANISATION RELATIVE;
         ACCESS MODE [sequential/random/dynamic];
         RELATIVE KEY IS [VAR];
         STATUS IS [VAR].
  • OPEN
  OPEN {INPUT/OUTPUT/I-O} [FICHIER]
  • START
  START [FNOM] KEY IS {=/>/NOT <} clé-relative;
  [INVALID KEY]
  • READ
    • sequentiel : READ ... AT END ...
    • random : READ ... INVALID KEY ...
    • dynamic :
seq : READ ... NEXT AT END ...
dir : READ ... INVALID KEY ...
  • REWRITE [ENREG] INVALID KEY ...
En random ecrit en fonction de la cle.
En dynamique ecrit le dernier lu.
  • DELETE FNOM INVALID KEY ...
En dynamique efface à la clé.
En seqentiel efface le dernier lu.
  • WRITE [ENREG]; INVALID KEY ...
I-O
Pas en séquentiel.
Random et dynamique, en fonction de clé
OUTPUT
Crée dans ordre croissant de la clé.

files status

modifier
  • Chaque entrée/sortie fichier génère un status.
FS I/O ORGANISATION MODE SIGNIFICATION
00 All All All Successful
02 REWRITE WRITE Ind All Created duplicate alternate key
02 READ Ind All Detected alternate duplicate key
04 READ All All Record not size of user's buffer
05 OPEN All All Optional file not present
07 CLOSE OPEN All All Invalid file organization or device
10 READ All Seq No next logical record or option file not present (at end)
14 READ Rel All Relative record number too large
21 REWRITE Ind Seq Primary key changed after READ
21 WRITE Ind Seq Attempted nonascending key value (invalid key)
22 REWRITE Ind All Duplicate alternate key (invalid key)
22 WRITE Ind, Rel Ran Duplicate key (invalid key)
23 DELETE READ REWRITE START Ind, Rel Ran Record not in file; optional file not present (invalid key)
24 WRITE Ind, Rel All Boundary violation or relative record number too large (invalid key)
30 All All All All other permanent errors
34 WRITE Seq Seq Boundary violation
35 OPEN All All File not found
37 OPEN All All Inappropriate device type
38 OPEN All All File previously closed with lock
39 OPEN All All Conflict of file attributes
41 OPEN All All File already opened
42 CLOSE All All File not opened
43 DELETE REWRITE All Seq No previous READ or START
44 REWRITE WRITE All All Invalid record size
46 READ All Seq No valid next record (at end)
47 READ START All All File not open, or incompatible open mode
48 WRITE All All File not open, or incompatible open mode
49 DELETE REWRITE All All File not open, or incompatible open mode
90 All All All Record locked by another user (record available)
91 OPEN All All Open is unsuccessful; file locked by another access stream
92 DELETE READ REWRITE START WRITE All All Record locked by another user (record not available)
93 UNLOCK All All No current record
94 UNLOCK All All File not open, or incompatible open mode
95 OPEN All All No file space on device