-------------------------------------------------------- ! DEFINITION EXTERNE DES FICHIERS EN SORTIE SUR DISQUE ! -------------------------------------------------------- Comme pour les fichiers en entrée, il est possible de ne pas décrire les fichiers en sortie (fichiers DISK pour l'instant) Comme pour les fichiers en entrée nous indiquerons dans la spécif. F l'utilisation de la description externe. Grâce a cette description externe il nous sera possible de ne plus écrire de spécif. O. ou d'écrire des spécif. O très simplifiées. Nous allons reprendre un exemple pour expliquer cette codification. Reprenons l'exemple sur la liste des produits mais maintenant nous ne sortirons plus une liste mais copierons les enregistrements dans le fichier PRODUI2 en ajoutant le montant du stock d'un produit zone numérique packée de 9 chiffres dont 2 décimales. .Nous aurions pu l'écrire comme suit: |
1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 FPRODUIT IP F 36 5PI 6 DISK FPRODUIT2O F 41 DISK IPRODUIT NS 01 I 1 36 ZON1 C PRQTE MULT PRPU PRMT 92H OPRODUIT2D 01 O ZON1 36 O PRMT 41P ! ! ----------------- Signale la sortie d'une zone en format condensé. Réécrivons ce programme avec les fichiers sur disque d'entrée et de sortie en description externe, avec des spécif. O simplifiées. |
1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 FPRODUIT IP E K DISK FPRODUIT2O E DISK IPRODUITF 01 C PRQTE MULT PRPU PRMT OPRODUIF2D 01 O *ALL Le fichier PRODUIT2 a une description externe, avec les noms de zone identiques à ceux du fichier PRODUIT, plus la zone PRMT. Expliquons ce nouveau programme. La première spécification F est classique (pour une description externe) 1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 FPRODUIT IP E K DISK |
La deuxième ressemble à la première sauf la colonne utilisation et la non-définition de clé (inutile). 1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 FPRODUIT2O E DISK Les nouveautés dans ce programme, ce sont bien les spécif. O. Détaillons les : |
1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 OPRODUIF2D 01 O ! ! ! *ALL ! ! ! ! ! ! ! ----------------------------------- ! ! ! Nouveau mot GAP indiquant la sortie ! ! ! de toutes les zones du fichier. ! ! -------------------- ! ! conditionnement ! ! par l'ind. d'entrée ! ------------ ! utilisation ! du cycle GAP (détail) ! ! --------------- nom de format du fichier à écrire |
------------- ! ATTENTION ! ------------- Cette écriture simplifiée du programme est possible si et seulement si les noms de zone du fichier en entrée sont identiques à ceux du ou des fichiers en sortie. ----------------------------------------------------------------------- Réécrivons ce programme avec les fichiers sur disque d'entrée et de sortie en description externe, sans spécif O. 1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 FPRODUIT IP E K DISK FPRODUIT2O E DISK IPRODUITF 01 C PRQTE MULT PRPU PRMT C WRITEPRODUIF2 |
Une spécif C a été ajoutée. L'ordre d'écriture (équivalent spécif O type ADD) 1 2 3 4 5 6 7 67890123456789012345678901234567890123456789012345678901234567890 C WRITEPRODUIF2 ! ! ! ! !----------------- ! nom de format du ! fichier ! ! ------------------- Ordre d'écriture indique l'ajout d'1 enregistrement dans le format du fichier indiqué en facteur2. |
La mise à jour peut se faire de la même manière : Fichier ouvert en U (Update) en col 15 C UPDATPRODUIF2 (m à j du dernier enregistrement lu, s'il n'y a pas eu de lecture, ==> erreur d' E/S). La suppression d'enregistrement : C DELETPRODUIF2 (Dlt du dernier enregistrement lu, s'il n'y a pas eu de lecture, ==> erreur d' E/S). |