Interrogation de COBOL 1ère année
Tous les documents sont autorisés.
1. Complétez les ________ dans les programmes suivants:
Un mot à chaque fois.
ENVIRONMENT DIVISION.
FILE-CONTROL.
SELECT F ASSIGN TO DISK
ORGANIZATION INDEXED
RECORD KEY K
FILE STATUS FS.
DATA DIVISION.
FILE SECTION.
FD F DATA RECORD R.
01 R.
10 K PIC X(4).
10 L PIC 9(10).
|
DATA DIVISION.
WORKING-STORAGE SECTION.
77 IND-MAX PIC 9999.
77 NNI PIC X(15).
77 NOM-ENTREE PIC X(15).
01 TABLE.
02 SALARIE OCCURS 2 TO 1000
DEPENDING ON IND-MAX
INDEXED BY IND
ASCENDING KEY INSEE.
10 INSEE PIC X(15).
10 NOM PIC X(15).
10 PRENOM PIC X(15).
10 ADRESSE PIC X(15).
PROCEDURE DIVISION.
PERFORM CHARGEMENT-TABLE.
DISPLAY "ENTREZ LE NOM:"
ACCEPT NOM-ENTREE.
SET IND TO 1.
SEARCH SALARIE
AT END DISPLAY
"SALARIE INCONNU"
WHEN NOM ( IND ) = NNI
DISPLAY NOM PRENOM.
STOP RUN.
|
Pour la première question, on peut se rendre compte que le fichier
est indexé, et non relatif, parce que la clé est alphanumérique.
2. Questions VRAI / FAUX
- Dans un tri COBOL, si l'entrée est un fichier, la sortie est
forcément un fichier. Faux, ce peut être une
OUTPUT
PROCEDURE
.
- Dans un fichier indexé, les clés secondaires peuvent apparaître
en double. Vrai.
- Lors de l'appel d'un sous-programme externe en COBOL, les données
passées au programme appelé ne peuvent être passées que par
valeur (CONTENT). Faux.
- Lors de l'appel d'un sous-programme externe en COBOL, les données
renvoyées au programme appelant sont toujours passées par valeur
(CONTENT). Faux.
- Par défaut, les données passées lors de l'appel à un
sous-programme externe le sont par REFERENCE. Vrai.
- Au cours d'une recherche séquentielle dans une table triée, c'est
l'élément de plus petit index satisfaisant la condition de
recherche qui est trouvé le premier. Vrai.
- Au cours d'une recherche dichotomique dans une table triée, c'est
l'élément de plus petit index satisfaisant la condition de
recherche qui est trouvé le premier. Faux, l'élément qui
va être trouvé dépend du compilateur et de la bibliothèque
d'exécution.
- Si on lance une recherche dichotomique dans une table non triée,
c'est en fait une recherche séquentielle qui est effectuée. Faux.
- Après une recherche dichotomique, l'index pointe l'élément
suivant l'élément trouvé pour permettre de poursuivre la
recherche. Faux, il pointe l'élément trouvé, et
poursuivre la recherche est en général impossible.
- Après une recherche sequentielle, l'index pointe l'élément
suivant l'élément trouvé pour permettre de poursuivre la
recherche. Faux, il pointe l'élément trouvé. Pour
poursuivre la recherche, il faut faire un
SET index UP BY
1
.
3. Questions vaches
- Quels est le nombre maximal d'éléments dans une table COBOL ?
Ça dépend du compilateur, de la machine....
- Dans un fichier relatif, les clés secondaires peuvent apparaître
en double (VRAI/FAUX). Expliquez (1 phrase). Faux, il n'y a
pas de clés secondaires dans les fichiers relatifs.
- Quel est le nombre minimal de fichiers mis en oeuvre dans un tri
en COBOL ? 1: le fichier de tri (déclaré en
SD
).
- Quel est le nombre maximal de fichiers mis en oeuvre dans un tri
en COBOL ? 3: le fichier d'entrée, le fichier intermédiaire,
et le fichier de sortie.
- Lorsqu'on a une recherche séquentielle dans une table, il est
toujours possible de trier la table et de faire la même
recherche en dichotomique (VRAI/FAUX). Expliquez (1
phrase). Faux, pour au moins deux raisons: 1) l'élément
trouvé par la recherche dichotomique ne sera pas forcément le
même que celui de la recherche séquentielle si plusieurs éléments
satisfont le critère de recherche et 2) les recherches
dichotomiques possibles sont plus restreintes que les recherches
séquentielles (seulement = et <).
- Après une insertion réussie dans un fichier indexé, le FILE
STATUS est toujours "00" (VRAI/FAUX). Expliquez (1
phrase). Faux, le premier caractère est à 0 pour indiquer une
insertion réussie, mais le deuxième peut prendre par exemple la
valeur 2 dans le cas d'une insertion avec clé dupliquée dans un
fichier indexé.
4. Programmes
On a le fichier séquentiel standard ayant la structure
suivante:
Code Client | Raison sociale | Adresse | Code Postal | Ville
|
7 | 24 | 24 | 5 | 24
|
Les codes clients commencent à 1 sont numériques et se suivent, mais le fichier
séquentiel standard n'est pas trié.
Question 1
Proposez une structure de données (DATA DIVISION) pour la
représentation de ce fichier sous forme de fichier relatif. Le
fichier relatif devra permettre d'accéder rapidement à un
enregistrement étant donné un code client. Expliquez votre choix en
une phrase. [ 2 points ]
On va utiliser un fichier relatif, puisque toutes les
propriétés nécessaires sont réunies (clés numériques, pas trop de
trous). L'important est que la clé n'a pas besoin de faire
partie de la structure. Elle est encodée implicitement dans la
position de l'enregistrement dans le fichier.
01 rec-rel.
10 raison-sociale PIC X(24).
10 adresse PIC X(24).
10 code-postal PIC X(5).
10 ville PIC X(24).
Question 2
Ecrivez le programme qui à partir du fichier séquentiel standard crée
le fichier relatif ayant la structure que vous avez choisie à la
question 1. Vous devez écrire le programme complet (ENVIRONMENT
DIVISION, DATA DIVISION et PROCEDURE DIVISION). [ 4 points ]
Indication: il est peut-être nécessaire de trier.
Le programme.
Question 3
Ecrivez le programme qui, utilisant votre fichier relatif, lit au
clavier un numéro de code client et imprime les autres
renseignements. Vous devez écrire le programme complet (ENVIRONMENT
DIVISION, DATA DIVISION et PROCEDURE DIVISION). [ 4 points ]
Le programme.
Vous vous
efforcerez d'écrire lisiblement.
Christophe Tronche, ch@tronche.com