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