Examen de Juin 2010

Transcription

Examen de Juin 2010
Examen de Cobol
HELMo
Nom :
Juin 2010
Prénom :
Informations pratiques
Cet examen s’effectue à cours ouvert. Cela signifie que vous pouvez disposer de tous vos
documents personnels. Aucun échange n’est autorisé durant l’épreuve. Aucun
portable ni compilateur n’est autorisé durant l’examen.
Il vous est également demandé de répondre sur le questionnaire que vous remettrez au
terme de l’épreuve. Aucune feuille ne sera ajoutée à ce questionnaire. Si nécessaire, utilisez
le verso en mentionnant clairement où se trouve la suite de votre réponse.
Commencez par indiquer votre nom et votre prénom en haut de chaque page.
Partie langage et compilation (/3)
Question 1. Écrivez en CaML une fonction permettant d’inverser tous les éléments d’un
tableau, quel qu’en soit son type. Aidez-vous d’une fonction utilitaire si nécessaire.
Question 2. Comment construire un compilateur pour le nouveau langage D s’exécutant sur
une machine N (P=Pascal ; M = machine M sur laquelle on peut exécuter un programme) :
en disposant d’une machine M et des traducteurs / compilateurs suivants :
L. Swinnen
1
Examen de Cobol
HELMo
Nom :
Juin 2010
Prénom :
Partie langage Cobol (/17)
Voici l’extrait d’un schéma entité-association :
Article
Num. Article
Titre
Auteurs[1-5]
Nom
Prénom
Mail
Texte
id: Num. Article
0-N
Concerne
1-1
Commentaire
Num. Commentaire
Auteur
Nom
Prénom
Mail
Texte
id: Num. Commentaire
Question 3. On vous demande de traduire ce schéma entité-association en fichier(s) Cobol.
Présicez l’organisation du (ou des) fichier(s). Il faut également préciser que des fichiers
différents peuvent avoir des organisations différentes. Détaillez ensuite la structure des
enregistrements. N’oubliez pas les clés identifiantes.
FILE-CONTROL.
L. Swinnen
FILE SECTION.
2
Examen de Cobol
HELMo
Nom :
Juin 2010
Prénom :
Situation
Dans le but d’éditer les factures concernant les ventes en ligne de contenu multimédia,
l’entreprise SwilaMédia dispose des informations suivantes :
• Le fichier décrivant les contenus multimédias indiquant, pour chaque contenu, son
identifiant, sa description, son prix, l’identifiant de la catégorie auquel il appartient. Il
s’agit d’un fichier séquentiel indexé pour lequel un module d’accès
standard (SPMUL) existe déjà.
• Le fichier des catégories de contenu mentionnant pour chaque catégorie, son
identifiant, son intitulé et l’âge minimal requis. Il s’agit d’un fichier relatif pour
lequel un module d’accès standard (SPCAT) existe déjà.
• Le fichier des clients mentionnant l’ensemble des clients ayant commandé un
contenu multimédia. Il contient l’identifiant, les noms et prénoms, l’adresse, la
localité et la date de naissance de chaque client. Il s’agit d’un fichier séquentiel
indexé pour lequel un module d’accès standard (SPCLI) existe déjà.
• Le fichier mensuel de facturation qui contient, pour un client et une date donnée,
l’ensemble des contenus téléchargés par ce client. Pour plus de facilité, le fichier est
trié suivant le numéro de client et la date de commande.
On vous demande de créer un programme Cobol permettant de calculer les totaux à facturer
pour tous les clients et contenus présent dans le fichier de facturation en produisant le
rapport imprimé conforme au schéma suivant :
FACTURE
Coca
Av. du Luxembourg 55
LIEGE
>>> Achat du 03/05/10
Description
Friends, Saison 1
Friends, Saison 2
How I meet your mother 3.01
Total H. T. pour cet achat :
TVA pour cet achat :
3.56
Mr.
Categorie
Tout public
Tout public
Tout public
16.99
>>> Achat du 10/05/10
Description
Categorie
(...)
(...)
Total H. T. pour cet achat :
28.99
TVA pour cet achat :
6.08
Total general (H.T) :
45.98
TVA totale :
9.64
Total a payer (TVAC)
55.62
FACTURE
Croissant
Quai St-Léonard 23
LIEGE
(...)
Prix H.T. T.V.A.
8.00
1.68
8.00
1.68
0.99
0.20
Prix H.T. T.V.A.
(...)
(...)
Mr.
Veillez bien à reproduire le rapport imprimé en tenant compte des formats des différentes
données. Veillez à utiliser toutes les options nécessaires à l’intérieur de la REPORT SECTION.
L. Swinnen
3
Examen de Cobol
HELMo
Nom :
Juin 2010
Prénom :
IDENTIFICATION DIVISION.
PROGRAM-ID. EX0610.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT fi-fac ASSIGN TO "factures"
FILE STATUS IS st-fac.
SELECT fi-rap ASSIGN TO "rap-1.txt".
DATA DIVISION.
FILE SECTION.
FD fi-fac.
01 facture.
02 num-client PIC X(5).
02 date-facture PIC X(6).
02 tab-contenu OCCURS 50.
03 id-contenu PIC X(5).
FD fi-rap REPORT IS rap-1.
WORKING-STORAGE SECTION.
01 un-client.
02 num-client PIC X(5).
02 nom PIC X(30).
02 prenom PIC X(30).
02 adresse PIC X(100).
02 localite PIC X(40).
02 date-naissance PIC 9(6).
01 un-contenu.
02 id-contenu PIC X(5).
02 description PIC X(100).
02 prix PIC 9999V99.
02 id-cat PIC 99.
01 une-categorie.
02 id-cat PIC 99.
02 intitule PIC X(80).
02 age-minimal PIC 999.
77 statut PIC XX.
77 st-fac PIC XX.
77 code-op PIC 9.
Autres données à définir :
Question 4. Écrivez le code de la REPORT SECTION de sorte que celle-ci soit conforme au
schéma présenté ci-avant. Respectez le format des données !
REPORT SECTION.
RD
PAGE LIMIT 66 LINE
HEADING 5 FIRST DETAIL 7 LAST DETAIL 35 FOOTING 45.
L. Swinnen
4
HELMo
Nom :
Examen de Cobol
Juin 2010
Prénom :
Question 5. Écrivez le code du programme Cobol. Il n’est pas nécessaire de vérifier les
accès aux fichiers. Le fichier séquentiel de facturation est trié suivant le numéro de client et
la date de commande.
PROCEDURE DIVISION.
En-avant.
L. Swinnen
5
HELMo
Nom :
Ouverture.
MOVE 1 TO code-op
CALL "SPCLI" USING
CALL "SPMUL" USING
CALL "SPCAT" USING
Lecture-client.
MOVE 2 TO code-op
CALL "SPCLI" USING
MOVE 3 TO code-op
CALL "SPCLI" USING
Lecture-contenu.
MOVE 2 TO code-op
CALL "SPMUL" USING
MOVE 3 TO code-op
CALL "SPMUL" USING
Lecture-categorie.
MOVE 2 TO code-op
CALL "SPCAT" USING
MOVE 3 TO code-op
CALL "SPCAT" USING
Fermeture.
MOVE 9 TO code-op
CALL "SPCLI" USING
CALL "SPMUL" USING
CALL "SPCAT" USING
END PROGRAM EX0610.
L. Swinnen
Examen de Cobol
Juin 2010
Prénom :
code-op un-client statut
code-op un-contenu statut
code-op une-categorie statut.
code-op un-client statut
code-op un-client statut.
code-op un-contenu statut
code-op un-contenu statut.
code-op une-categorie statut
code-op une-categorie statut.
code-op un-client statut
code-op un-contenu statut
code-op une-categorie statut.
6