SPECIFICATION D'ENTREE COLONNE 21 A 41 -------------------------------------- 1 But de ces colonnes --------------------- Servent à identifier un enregistrement grâce à des caractères contenus dans cet enregistrement. Prenons un exemple. Supposons le fichier des commandes (contenant 3 parties) - L'en-tête qui va nous indiquer le numéro de la commande et des informations sur le client. - Le corps qui reçoit les informations sur les articles commandés - Le pied qui indiquera les montants HT et TTC. |
1) EN-TETE ! Num. com. ! Num. client ! date com. ! date liv. ! mode fac.! mode livr.! -------------------------------------------------------------------------- 2) CORPS ! num art.! quantite ! P.U. ! montant ! TVA ! --------------------------------------------- 3) PIED ! momt. HT ! mont TTC !T.TVA! ----------------------------- Cela signifiera que nous aurons un fichier qui aura pour une commande 1 enregistrement pour l'en-tête, autant d'enregistrements que d'articles pour le corps et un enregistrement pour le pied. |
Supposons la commande suivante ---------------------------------------------------------- ! Commande : 2432 Sociéte XXXX ! ! ! ! Client : 4518 ! ! nom société ! ! ! ! Facturation : A Date commande : xx.xx.xx ! ! Livraison : O Date livraison: yy.yy.yy ! ! ! !--------------------------------------------------------! ! Article ! libellé ! Qte ! P.U. ! Montant ! TVA ! !--------------------------------------------------------! ! 510 ! clou ! 10 ! 1,00 ! 10,00 ! 7 % ! ! 215 ! vis ! 20 ! 1,50 ! 30,00 ! 7 % ! ! 318 ! ecrou ! 15 ! 3,00 ! 45,00 ! 7 % ! ! ! ! ! ! ! ! !--------------------------------------------------------! ! Montant H.T. 85,00 ! ! TVA 5,95 ! ! Montant TTC 90,95 ! !--------------------------------------------------------! |
Nous devrons avoir dans notre fichier les enregistrements qui suivent ! 2432 ! 4518 ! 210987 ! 101087 ! A ! O ! -------------------------------------------------------------------------- ! 510 ! 10 ! 100 ! 1000 ! 700 ! ! -------------------------------------------------------------------------- ! 215 ! 20 ! 150 ! 3000 ! 700 ! ! -------------------------------------------------------------------------- ! 318 ! 15 ! 300 ! 4500 ! 700 ! ! -------------------------------------------------------------------------- ! 8500 ! 9095 ! 595! ! -------------------------------------------------------------------------- |
Une des solutions possibles est de placer en début d'enregistrement un code permettant d'identifier le type d'enregistrement. ! E ! 2432 ! 4518 ! 210987 ! 101087 ! A ! O -------------------------------------------------------------------------- ! D ! 510 ! 10 ! 100 ! 1000 ! 700 ! -------------------------------------------------------------------------- ! D ! 215 ! 20 ! 150 ! 3000 ! 700 ! -------------------------------------------------------------------------- ! D ! 318 ! 15 ! 300 ! 4500 ! 700 ! -------------------------------------------------------------------------- ! P ! 8500 ! 9095 ! 595! -------------------------------------------------------------------------- |
Position à tester ! ------------------C=caractère ! !--------------------------------le caractère v vv à tester ICOMMAND NS 01 1 CE (en résumé: si en pos 1 il y a le car "E"). I 2 50NOCDE I 6 90NOCLI I 10 150DATCDE I 16 210DATLIV I 22 22 TYPFAC I 23 23 TYPLIV ICOMMAND NS 02 1 CD I 2 40CODART I 5 60QTECDE I 7 92PU I 10 132MT I 14 172TXTVA ICOMMAND NS 03 1 CP I 2 62TOTHT I 7 112TOTTVA I 12 162TOTTTC |
Mais la solution "purement AS/400" serait de faire trois fichiers physiques différents. 1/ fichier des en-têtes (ENTCDEP1) R ENTCDEF1 NOCDE R ... 2/ fichier des lignes de commande NOCDE R 3/ fichier pied de commande (ou faire les calculs à l'impression !) NOCDE R Puis un fichier logique multiformat: (multil1) R ENTCDEF1 PFILE(ENTCDEP1) K NOCDE R LIGCDEF1 PFILE(LIGCDEP1) K NOCDE R PIECDEF1 PFILE(PIECDEP1) K NOCDE |
Utilisation de ce fichier en RPG/400. FMULTIL1 IF E K DISK IENTCDEF1 01 ILIGCDEF1 02 IPIECDEF1 03 Une seule spécif F (le fichier logique) Une spécif I par FORMAT, permettant d'associer à chaque format un indicateur d'entrée. Le traitement peut donc être RIGOUREUSEMENT identique. |