--------------------------- ! SORTIES EXCEPTIONNELLES ! --------------------------- Pour faciliter les sorties sur les fichiers d'impression en description interne il est souvent nécessaire de passer outre le cycle GAP, et d'ordonner la sortie d'une ligne lors du traitement (spécif C). Cette technique est très employée dans les entreprises, elle permet une moindre utilisation des indicateurs, et surtout de faciliter la lecture du programme. Nous allons découvrir cette nouvelle technique par 1 exemple. Reprenons l'exemple sur la liste des produits. Le programme que vous avez écrit doit ressembler à celui ci-dessous: Ce programme utilise la description externe pour le fichier en entrée. FPRODUIT IP E K DISK FQSYSPRT O F 198 PRINTER C PRQTE MULT PRPU PRMT 82H |
C ADD PRMT PRTOMT 102 OQSYSPRT D 2 N1P O PRNO 7 O PRLIB 29 O PRQTE 37 O PRPU 2 45 O PRMT 2B 60 O T 3 LR O 46 'TOTAL STOCK :' O PRTOMT2B 60 Réécrivons ce programme avec les sorties exceptionnelles pour les 2 lignes à sortir. FPRODUIT IP E K DISK FQSYSPRT O F 198 PRINTER C PRQTE MULT PRPU PRMT 82H C ADD PRMT PRTOMT 102 C EXCPTDETAIL CLR EXCPTTOTLR OQSYSPRT E 2 DETAIL |
O PRNO 7 O PRLIB 29 O PRQTE 37 O PRPU 2 45 O PRMT 2B 60 O E 3 TOTLR O 46 'TOTAL STOCK :' O PRTOMT2B 60 Ce type de sortie entraine de nouvelles ligne C. Nous allons commencer par expliquer les O. OQSYSPRT E 2 DETAIL ! ! ! ! ! ------------------------------------ ! Identifie la sortie exceptionnelle ! Lors de l'exécution de l'instruction ! EXCPT on indiquera cet identificateur ! et il ne sortira que les O ayant ! un E et cet identificateur sinon il |
! ecrirait toutes les O ayant un E ! et on conditionnerait leur sortie par ! un indicateur. ! ---------------------- Ce E signifie que la sortie ne sera pas fait par le cycle GAP mais sera commandé par l'instruction EXCPT. O E 3 TOTLR Autre sortie exceptionnelle ayant pour nom TOTLR Expliquons les nouvelles lignes C. C EXCPTDETAIL ! ! ! ! |
!------------------- !Identifie les E à !écrire. ! ! ! ! ------------------------- Nouvelle instruction qui indique l'écriture immédiate des O ayant un E Dans cet exemple il ne sortira que les sorties exceptionnelles ayant comme identificateur DETAIL. CLR EXCPTTOTLR Meme principe que précédemment mais cette fois-ci, il ne sortira que les lignes exceptionnelles ayant pour nom TOTLR et cette |
instruction ne sera exécuté qu'en traitement total avec l'indicateur LR en fonction. Nous pouvons utiliser les sorties exceptionnelles sans identificateur mais cela nous oblige à conditionner les O exceptionnelles, sinon à chaque ordre EXCPT il les sortirait toutes. Voici le même programme sans identificateur de sortie exceptionnelles. FPRODUIT IP E K DISK FQSYSPRT O F 198 PRINTER C PRQTE MULT PRPU PRMT 82H C ADD PRMT PRTOMT 102 C EXCPT CLR EXCPT OQSYSPRT E 2 NLR O PRNO 7 O PRLIB 29 O PRQTE 37 O PRPU 2 45 O PRMT 2B 60 |
O E 3 LR O 46 'TOTAL STOCK :' O PRTOMT2B 60 Expliquons la ligne suivante: OQSYSPRT E 2 NLR Cette sortie doit être effectuée si ce n'est pas la fin du fichier Notre exemple n'est pas très compliqué nous pourrions utiliser soit l'une ou l'autre solution, mais je vous conseille dans la mesure du possible d'identifier vos sorties exceptionnelles. |