COBOL Gestion de Fichier PDF
COBOL Gestion de Fichier PDF
COBOL Gestion de Fichier PDF
COBOL
MODULE 3
Gestion de fichiers
Sommaire
LE FILE STATUS .................................................................................................................... 6
1. DEFINITION............................................................................................................................................................6
1. DEFINITION............................................................................................................................................................8
2. INSTRUCTIONS. ....................................................................................................................................................9
1. DEFINITION..........................................................................................................................................................10
1.1. ACCES REALISABLES SUR UN FICHIER SEQUENTIEL INDEXE ...........................................................10
1.2. STRUCTURE D'UN FICHIER SEQUENTIEL INDEXE.................................................................................. 11
1. DEFINITION..........................................................................................................................................................40
EXERCICE CI CA.................................................................................................................. 52
TP CLÉS PRIMAIRES........................................................................................................... 57
1. Sujet.........................................................................................................................................................................57
1.1. ORGANIGRAMME............................................................................................................................................57
1.2. LE TRAITEMENT..............................................................................................................................................58
1.3. LES FICHIERS ...................................................................................................................................................60
3. LES EDITIONS......................................................................................................................................................63
1. Sujet.........................................................................................................................................................................69
1.1. ORGANIGRAMME............................................................................................................................................69
1.2. LE TRAITEMENT..............................................................................................................................................69
1.3. LES FICHIERS ...................................................................................................................................................71
2. LES EDITIONS......................................................................................................................................................72
TP ORGANISATION RELATIVE........................................................................................... 73
1. SUJET .....................................................................................................................................................................73
1.1. ORGANIGRAMME............................................................................................................................................73
1.2. TRAITEMENT....................................................................................................................................................73
1.3. LES FICHIERS ...................................................................................................................................................74
2. LES EDITIONS......................................................................................................................................................75
1. DEFINITION.
Le file status est une zone qui est alimentée d’un code alphanumérique sur deux caractères par la
méthode d’accès à chaque opération d’entrée-sortie sur le support magnétique auquel il est lié.
L’utilisation du file status permet donc de détecter des anomalies lors du traitement d’un fichier.
exemple : FILE-CONTROL.
SELECT Nf ASSIGN TO Nx
FILE STATUS IS FS-fich.
Le STATUS KEY 1 (sur 1 caractère) donne une indication générale sur le déroulement de
l’opération d’entrée-sortie.
NOTES
NOTES
1. DEFINITION
L'usage des déclaratives spécifie des séquences d'instructions écrites par l'utilisateur pour le
traitement des erreurs d'entrée-sortie qui s'ajoutent à celles du système.
Les procédures indiquées sont exécutées lorsque les locutions INVALID KEY ou AT END
ne sont pas spécifiées.
Après l'exécution de la déclarative, le contrôle est rendu à l'instruction qui suit celle ayant
provoqué le débranchement.
L'usage des déclaratives n'est pas limité aux fichiers organisés en séquentiel-indexé.
NOTES
2. INSTRUCTIONS.
PROCEDURE DIVISION.
DECLARATIVES.
nom SECTION.
Nom de fichier
EXCEPTION INPUT
USE AFTER STANDARD PROCEDURE OUTPUT .
ERROR I-O
EXTEND
Nom de paragraphe.
Instructions COBOL.
END DECLARATIVES.
PROG SECTION.
DEBUTPROG.
NOTES
1. DEFINITION.
La méthode d'accès "séquentiel indexé" permet de lire les données stockées sur un fichier à partir
d'une information identifiant les enregistrements.
Cette information s'appelle la CLE D'ACCES. Il s'agit d'une zone faisant partie de la description
de l'enregistrement et permettant de l'identifier par rapport à tous les autres enregistrements du
fichier. Le contenu de cette zone devra donc être unique pour un enregistrement par rapport aux
autres enregistrements du fichier.
La clé d'accès qui peut être définie à n'importe quel endroit de l'enregistrement doit avoir une
position de départ et une longueur fixe pour tous les enregistrements du fichier. Dans un
enregistrement de longueur variable, la clé d’accès appartiendra toujours à la partie fixe.
• SEQUENTIEL
• DIRECT
NOTES
- la partie INDEX
- la partie DATA
LA PARTIE "INDEX"
Cet espace est utilisé par la méthode d'accès pour localiser les enregistrements dans la partie DATA
à partir de la clé d'accès sur laquelle la demande d'E/S est effectuée.
LA PARTIE "DATA"
Cet espace contient les données telles qu'elles ont été formatées dans le programme.
NOTES
NOTES
27999 42000 67050 99999
Index
Set
Index 10333 23630 25900 27999 42000
C.A.
10222 10250 10300 10333 LIBRE
LIBRE
Data
10334 13000 13500 14000 LIBRE
LIBRE
NOTES
• Phase d'allocation.
NOTES
Réalisée à l'aide d'un utilitaire fourni par le constructeur cette étape permet de définir
les caractéristiques du fichier et de réserver les ressources qui lui seront nécessaires.
Nom du fichier
Volume
Espace à réserver
NOTES
2.1.1. EXEMPLE :
Les enregistrements de ce fichier sont de longueur fixe et la taille des CI permet d'en
contenir 5.
LIBRE C.I.
LIBRE C.I.
C.A.
LIBRE C.I.
NOTES
010 015 020 040 099 100 150 175 190 200
NOTES
Lors de cette phase, la méthode d'accès utilise l'espace libre défini pour les C.I lors de la
phase d'allocation.
C.I.
025
INSERTION DES ENREGISTREMENTS
101
C.I.
NOTES
Lors de cette phase, la méthode d'accès utilise l'espace libre défini pour les C.A lors de la
phase d'allocation.
C.I.
NOTES
Lors de cette phase, la méthode d'accès doit étendre les ressources allouées au fichier.
040 1 200 2
INDEX
NOTES
3.1. UTILISATION.
Ce pointeur est utilisé par l'instruction de lecture séquentielle et se trouve positionné sur
l'enregistrement qui sera mis à la disposition de l'utilisateur lors de chaque demande d'accès de ce
type.
• L’ouverture
• La lecture sélective
• Le positionnement
• La lecture séquentielle
Aucune demande de lecture séquentielle ne pourra être satisfaite et le FILE STATUS sera à
une valeur différente de zéro, tant qu'un repositionnement n'aura pas été effectué avec une des
instructions appropriées.
NOTES
ª DEFINITION
FILE-CONTROL.
SELECT Nf ASSIGN TO Nx
ORGANIZATION INDEXED
SEQUENTIAL
ACCESS MODE RANDOM
DYNAMIC
ª INSTRUCTIONS
INPUT
OPEN OUTPUT Nf
I-O
EXTEND
NOTES
ACCES SELECTIF
Exemple :
MOVE '15' TO Ref1
READ Nf INVALID KEY...
Lecture de l'enregistrement dont la clé est égale à '15' si celui-ci existe sinon,
exécution de la séquence INVALID KEY.
ACCES SEQUENTIEL
Exemple :
READ Nf NEXT AT END ...
Lecture de l'enregistrement sur lequel est positionné le pointeur d'article courant.
NOTES
POSITIONNEMENT
=
START Nf KEY > Ref [ INVALID KEY ]
NOT < ou [ NOT INVALID KEY ]
>=
[END-START]
Exemple :
MOVE '15' TO Ref1
START Nf KEY >= Ref1 INVALID KEY ...
Positionne le pointeur sur l'enregistrement dont la clé est égale à '15' si celui-ci
existe, sinon sur l'enregistrement de clé immédiatement supérieure.
CREATION D'ENREGISTREMENT
Exemple :
MOVE '15' TO Ref1
WRITE Ne INVALID KEY ...
Création d'un enregistrement de clé '15' si cette clé n'existe pas dans le fichier sinon,
exécution de la séquence INVALID KEY.
Ne nécessite pas une lecture préalable.
NOTES
MODIFICATION D'ENREGISTREMENT
Exemple :
MOVE '15' TO Ref1
READ Nf INVALID KEY ...
Modifications
REWRITE Ne INVALID KEY ...
Modifie les données de l'enregistrement dont la clé est égale à '15' s'il existe sinon,
exécution de la séquence INVALID KEY.
Ne permet pas la modification de la clé, si la clé doit être modifiée faire une
annulation puis une création.
SUPPRESSION D'ENREGISTREMENT
Exemple :
MOVE '15' TO Ref1
DELETE Nf INVALID KEY ...
Annule l'enregistrement de clé '15' s'il existe sinon, exécution de la séquence
INVALID KEY.
Ne nécessite pas une lecture préalable.
NOTES
ACCES MODE
START START
SEQUENTIAL
REWRITE
DELETE
WRITE
RANDOM
REWRITE
DELETE
REWRITE
DELETE
START
NOTES
FD FICHIER. FD FICHIER.
01 ENR. 01 ENR.
02 CLE PIC X(13). 02 CLE.
02 FILLER PIC X(67). 04 P1A3.
06 P1 PIC X.
06 P2A3 PIC XX.
04 FILLER PIC X(10).
02 FILLER PIC X(67).
NOTES
NOTES
L'utilisation des clés secondaires permet à l'utilisateur d'extraire les enregistrements à partir d'une
autre information que la clé principale.
6.1. DEFINITION.
Le fichier des clés secondaires peut être défini au moment de la phase d’allocation (UFAS, Bull), ou
à n’importe quel moment de la vie du fichier principal (VSAM, IBM).
On ne peut créer plus de 15 fichiers secondaires. Leur gestion est identique à celle du fichier
principal, toutefois la clé secondaire contrairement à la clé principale n’est pas obligatoirement
unique.
Il est impossible de consulter ou modifier les enregistrements d’un fichier secondaire, ses
enregistrements n’établissant qu’une passerelle entre le fichier secondaire et le fichier principal.
A chaque modification du fichier principal, les fichiers secondaires concernés sont mis à jour.
NOTES
ACCES SELECTIF SUR CLE SECONDAIRE ACCES SELECTIF SUR CLE PRINCIPALE
Lecture d'un engt du fichier principal Lecture d'un engt du fichier principal
Positionnement sur fichier secondaire Positionnement sur fichier principal
Fichier Fichier
secondaire principal
Zone d'E/S
Lors de la demande de lecture séquentielle, la séquence exécutée, sera différente selon le fichier sur
lequel le pointeur est positionné au début de la demande d'E/S :
POSITIONNEMENT
DU POINTEUR ACTION
NOTES
X
READ séquentiel FP FP
(READ nf NEXT AT END) FS FS
NOTES
ª DEFINITION
FILE-CONTROL.
SELECT Nf ASSIGN TO Nx
ORGANIZATION INDEXED
SEQUENTIAL
ACCESS MODE RANDOM
DYNAMIC
NOTES
ª INSTRUCTIONS
L'accès par le chemin des clés secondaires n'est possible que pour les opérations de
consultation ou de positionnement sur le fichier.
Dans tous les cas l'utilisateur recevra un enregistrement du fichier principal.
INPUT
OPEN OUPUT Nf
I-O
EXTEND
ACCES SELECTIF
Exemple :
MOVE 'LC' to DEST
READ Nf KEY IS DEST INVALID KEY .....
Si la clé secondaire existe, lecture de l'enregistrement du fichier Principal correspondant à la
1ère clé principale associée à cette clé secondaire.
NOTES
POSITIONNEMENT.
=
START Nf KEY > Clé secondaire [ INVALID KEY ... ]
NOT < ou [ NOT INVALID KEY ...]
>=
[ END-START ]
Appel à la méthode d'accès après avoir servi la zone définie en ALTERNATE RECORD
KEY avec la valeur de la clé secondaire sur laquelle un positionnement est demandé.
Exemple :
MOVE 'LC' to DEST
START Nf KEY = DEST INVALID KEY .....
Si la clé secondaire existe, le positionnement est effectué sur la 1ère clé principale associée à
cette clé secondaire.
Sinon exécution de la séquence INVALID KEY.
NOTES
Le principe, identique à celui indiqué lors de la présentation des clés principales permet
d'obtenir un enregistrement du fichier principal à partir d'une clé secondaire qui n'est pas
connue en totalité.
ACCES SEQUENTIEL.
Le format du READ séquentiel est unique et la méthode d'accès utilise lors de son exécution
le pointeur d'article courant.
Ce pointeur unique se déplace du fichier principal vers le ou les fichiers secondaires lors de
l’exécution des instructions de positionnement ou de lecture sélective.
NOTES
1247 BREST DF
1547 LE CROISIC DF
NOTES
NOTES
De ce fait il sera toujours nécessaire pour réaliser les instructions WRITE REWRITE et
DELETE de connaître la CLE PRINCIPALE ou de l'acquérir par la voie des clés
secondaires.
NOTES
Ce programme doit supprimer tous les enregistrements dont la clé secondaire est égale à
'LC'.
ARTICLE LU POSITION
POINTEUR
NOTES
1. DEFINITION.
L'organisation de fichier relative permet la gestion d'enregistrements de longueur FIXE selon les
mêmes principes que ceux de gestion de table mais en faisant référence à un numéro
d'enregistrement pour accéder aux données.
Toute la différence réside dans le fait que les données sont stockées sur support externe et implique
donc des opérations d'entrée/sortie.
Le choix de cette organisation de fichier sera nécessaire lorsque la masse d'informations sera
supérieure aux limites autorisées pour les tables mais surtout quand les données sont modifiables ou
accessibles par plusieurs utilisateurs.
NOTES
L'accès aux données du fichier en lecture ou écriture pourra se faire de manière séquentielle ou
sélective en faisant référence au numéro d'enregistrement à accéder.
ACCES SEQUENTIEL :
• EN LECTURE :
La méthode d'accès délivre les enregistrements dans l'ordre où ils sont rangés dans le fichier, du
plus petit numéro d'enregistrement au plus grand, sans transmettre les enregistrements vides.
• EN ECRITURE :
Les données sont stockées séquentiellement depuis le premier numéro d'enregistrement, dans l'ordre
où elles sont fournies à la méthode d'accès.
ACCES SELECTIF :
• EN LECTURE :
La méthode d'accès délivre les données stockées dans l'enregistrement dont le numéro est indiqué
dans la relative key, si celui-ci est servi.
• EN ECRITURE :
L'enregistrement est stocké dans le numéro d'enregistrement indiqué dans la relative key, s'il n'est
pas déjà utilisé.
NOTES
La principale difficulté dans la manipulation des fichiers relatifs réside dans la gestion des données
devant être stockées dans un numéro d'enregistrement déjà servi.
En effet, il est très fréquemment nécessaire de devoir utiliser un algorithme pour déterminer le
numéro d'enregistrement où ranger les données. Si bien étudié soit-il, celui-ci présente tous les
risques de délivrer même de manière exceptionnelle un numéro en double.
La méthode d'accès ne prenant pas en charge la gestion de ces doubles il appartient à l'utilisateur de
rechercher une technique de gestion pour le stockage de ces enregistrements.
NOTES
NOTES
NOTES
11 16 12 DD 00 CC 00
01 02 03 04 05
ZZ 14 AA 11
06 07 08 09 10
TT 13 00 GR 15 BB 00 FL 00
11 12 13 14 15
16 17 18 19 20
11 16 12 DD 00 CC 00
01 02 03 04 05
ZZ 00 AA 11
06 07 08 09 10
TT 13 14 GR 15 00 FL 00
11 12 13 14 15
16 17 18 19 20
NOTES
11 16 14 DD 00 CC 00
01 02 03 04 05
ZZ 00 AA 11
06 07 08 09 10
TT 13 LM 00 GR 15 00 FL 12
11 12 13 14 15
16 17 18 19 20
NOTES
ª DEFINITION
FILE-CONTROL.
SELECT Nf ASSIGN TO Nx
ORGANIZATION RELATIVE
SEQUENTIAL
ACCESS MODE RANDOM
DYNAMIC
NOTES
ª INSTRUCTIONS
INPUT
OPEN OUPUT Nf
I-O
EXTEND
ACCES SELECTIF
Exemple :
MOVE 5 TO Ref1
READ Nf INVALID KEY ...
Lecture des données stockées dans l'enregistrement numéro 5 si celui-ci est servi sinon,
exécution de la séquence INVALID KEY.
NOTES
ACCES SEQUENTIEL
Exemple :
READ Nf NEXT AT END ...
Lecture des données stockées dans l'enregistrement sur lequel le pointeur d'article est
positionné.
POSITIONNEMENT
=
START Nf KEY > Ref1 [ INVALID KEY... ]
NOT < ou [ NOT INVALID KEY... ]
>=
[ END-START ]
Exemple :
MOVE 5 TO Ref1
START Nf KEY >= Ref1 INVALID KEY ...
Positionne le pointeur sur l'enregistrement numéro 5 si celui-ci est servi sinon le
positionnement a lieu sur l'enregistrement immédiatement servi.
NOTES
CREATION D'ENREGISTREMENT
Exemple :
MOVE 5 TO Ref1
WRITE Ne INVALID KEY ...
Stocke les données dans l'enregistrement 5 si celui-ci est libre sinon, exécution de la
séquence INVALID KEY.
MODIFICATION D'ENREGISTREMENT
Exemple :
MOVE 5 TO Ref1
READ Nf INVALID KEY ...
Modifications
REWRITE Ne INVALID KEY ..
Modifie les données stockées dans l'enregistrement 5 si celui-ci est servi sinon, exécution de
la séquence INVALID KEY.
NOTES
SUPPRESSION D'ENREGISTREMENT
Exemple :
MOVE 5 TO Ref1
DELETE Nf INVALID KEY ...
Annule l'enregistrement 5 si celui-ci est servi sinon, exécution de la séquence INVALID
KEY.
NOTES
A partir du fichier ci-dessous, issu du chargement initial, veuillez effectuer les différentes
mises à jour indiquées :
C.I.
• CREATION 041
INDEX C.I.
C.I.
C.I.
C.A.
C.I.
C.I.
• CREATION 012
INDEX C.I.
C.I.
C.A. C.I.
C.I.
C.I.
• CREATION 140
INDEX C.I.
C.I.
C.I.
C.A.
C.I.
C.I.
• CREATION 175
INDEX C.I.
C.I.
C.A. C.I.
C.I.
C.I.
• ANNULATION 100
INDEX C.I.
C.I.
C.A. C.I.
C.I.
C.I.
• CREATION 160
INDEX C.I.
C.I.
C.I.
C.A.
C.I.
C.I.
• ANNULATION 020
INDEX C.I.
C.I.
C.I.
C.I.
C.I.
• CREATION 013
INDEX C.I.
C.I.
C.I.
C.I.
C.I.
1. SUJET
1.1. ORGANIGRAMME
MAJ
EXO1 INDEXE
EDIT
1.2. LE TRAITEMENT.
ª Mise à jour du fichier séquentiel indexé à partir des enregistrements du fichier MAJ.
Le code mise à jour situé en première position du fichier MAJ peut avoir une valeur
comprise entre 1 et 4 qui correspond aux modifications suivantes :
REMARQUES
Les listes sont à réaliser sur le fichier EDIT à raison de 4 prénoms par ligne.
Lorsqu'une anomalie est détectée au cours d'un accès au fichier séquentiel indexé
(Clé en double, inexistante etc.), un enregistrement est créé sur le fichier EDIT selon
le format suivant :
MAJ
Organisation Séquentielle
Longueur article 17 c.
Nom externe MAJ
Description article :
INDEXE
Organisation Indexé
Longueur article 16 c.
Position de la clé 1 à 12
Nom externe INDEXE
Description article :
Pos 1 à 12 - Prénom
Pos 13 à 16 - Date
EDIT
Organisation Séquentielle
Longueur article 80 c.
Nom externe EDIT
ADELE 0908
ADELINE 0908
ALAIN 0908
ALICE 1230
ALINE 0908
CASIMIR 0204
CHRISTELLE 0724
CHRISTIAN 1112
CHRISTIANE 1112
CHRISTINE 0724
DAVID 1230
DIDIER 0523
FLORENT 0204
GERARD 1023
JACQUES 0725
JEROME 0930
LINE 0000
MICHEL 0929
MICHELE 0929
MICHELLE 0929
NICOLE 1206
OLIVE 0712
OLIVIER 0712
PASCAL 0517
PATRICE 0317
REGINE 0907
ROGER 1230
ROMAINE 0223
SERGE 0930
SOLANGE 0510
VERONIQUE 0204
YVES 0519
4Y
4M
4Q
2REGINE
3LINE 9999
3NICOLE 4444
1NOEL 1225
1SYLVIE 1106
1GERARD 1023
2YVES
3MONIQUE 6666
3. LES EDITIONS
VERONIQUE 0204
A partir du fichier des trains décrit dans le support de cours (pages 34 et 35), complétez la partie en
pointillés par le contenu de la zone de communication.
En cas d’anomalie précisez la valeur du File status et si cette anomalie est une clé invalide ou une fin
de fichier.
IDENTIFICATION DIVISION.
PROGRAM-ID. EXERCICE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FICH ASSIGN TO FICH
ORGANIZATION IS INDEXED
ACCES MODE IS DYNAMIC
RECORD KEY IS NUM
ALTERNATE RECORD KEY DEST WITH DUPLICATES
FILE STATUS IS FS.
DATA DIVISION.
FILE SECTION.
FD FICH.
01 ENR.
05 NUM.
10 N1 PIC 9(02).
10 N2 PIC X(02).
05 DEST.
10 D1 PIC X.
10 D2 PIC X.
05 FREQ PIC X(03).
05 DONNEES PIC X(91).
WORKING-STORAGE SECTION.
01 FS PIC X(02).
PROCEDURE DIVISION.
OPEN I-O FICH.
MOVE "LC" TO DEST.
START FICH KEY = DEST INVALID KEY PERFORM ERREUR.
MOVE "1625" TO NUM.
READ FICH NEXT AT END PERFORM ERREUR.
PROCEDURE DIVISION.
1. SUJET
1.1. ORGANIGRAMME.
EXO2 INDEXE
EDIT
1.2. LE TRAITEMENT.
A partir du même fichier INDEXE que celui du programme EXO1, établir selon la forme présentée
ci-dessous, les listes suivantes :
2 Les prénoms des jours pairs de chaque mois pour lesquels il y a plusieurs fêtes à souhaiter
(seul les 5 premiers jours correspondants aux conditions seront édités).
3 Les autres fêtes à souhaiter le jour de la St Dominique et de la St Olivier
ª DESCRIPTION DE L'ETAT :
5 prénom1
9 prénom2 prénom3
St Dominique : ......
St Olivier : ......
REMARQUES
- Il peut n'y avoir aucune fête à souhaiter certains jours ou pour la totalité de certains mois.
INDEXE
Organisation Indexé
Longueur article 16 c.
Position de la clé 1 à 12
Nom externe INDEXE
Description article :
Pos 1 à 12 - Prénom
Pos 13 à 16 - Date
EDIT
Organisation Séquentielle
Longueur article 80 c.
Nom externe EDIT
2. LES EDITIONS
7 REGINE
8 ADELE ADELINE ALAIN ALINE
29 MICHEL MICHELE MICHELLE
30 JEROME SERGE
ST DOMINIQUE : NEANT
ST OLIVIER : OLIVE
1. SUJET
1.1. ORGANIGRAMME.
INDEXE
EXO3 RELATIF
EDIT
1.2. TRAITEMENT.
A partir du même fichier INDEXE que celui du programme EXO1, exécutez les phases suivantes :
INDEXE
Organisation Séquentielle
Longueur article 16c
Nom externe INDEXE
Description article :
RELATIF
Organisation Relative
Longueur article 50c
Nom externe RELATIF
Description article :
EDIT
Organisation Séquentielle
Longueur article 80c
Nom externe EDIT
2. LES EDITIONS