> Tech > DDS : Moderniser les applications et améliorer la productivité

DDS : Moderniser les applications et améliorer la productivité

Tech - Par Bruce Vining - Publié le 16 octobre 2012
email

Créer des rapports en utilisant des fichiers d’imprimante décrits en externe

DDS : Moderniser les applications et améliorer la productivité

Beaucoup de développeurs IBM i apprécient les avantages des fichiers décrits en externe pour les fichiers base de données et les fichiers d’affichage.

Mais, on ne sait pourquoi, ils n’en profitent pas de la même manière pour les rapports imprimés. En réalité, beaucoup trop de développeurs créent aujourd’hui une sortie imprimée comme il y a 30 ans : avec des fichiers décrits par programme. Cet article, premier d’une série, vous montre comment l’usage de fichiers d’imprimante décrits en externe peut doper votre développement.

DDS pour les fichiers d’imprimante

De la même manière que vous pouvez utiliser DDS pour définir des fichiers base de données et des fichiers d’affichage, vous pouvez l’utiliser pour définir des fichiers d’imprimante. Vous connaissez probablement déjà certains des mots-clés DDS associés à ces fichiers. Par exemple, tout comme vous utilisez les mots-clés Reference (REF) et Referenced Field (REFFLD) pour créer un fichier d’affichage afin d’éviter de dupliquer des définitions de champs communs, vous pouvez éviter cette duplication avec les fichiers d’imprimante. Dans le même esprit, vous pouvez utiliser des mots-clés tels que DATE pour imprimer la date du job courant ou celle du système courant, EDTCDE (edit code) et EDTWRD (edit word) pour intervenir sur des valeurs de champs, MSGCON (message constant) pour identifier le texte d’un champ de constante, TIME pour imprimer l’heure du système comme un champ de constante, et ainsi de suite.

Bien sûr, il y a aussi des mots-clés DDS de fichiers d’imprimante qui ne sont pas utilisés par les fichiers base de données et d’affichage. Certains de ces mots-clés sont associés aux fonctions que vous avez habituellement codées sur vos O-specs. Par exemple, avec le support d’imprimante RPG décrit par programme, vous auriez codé la valeur 3 en position 42 d’une O-spec si vous vouliez faire un triple interligne avant d’imprimer une ligne.

Avec un fichier d’imprimante décrit en externe, vous pourriez utiliser le mot-clé DDS SPACEB (space before) comme dans SPACEB(3) pour obtenir la même chose. De la même manière, les mots-clés SPACEA (space after), SKIPB (skip before) et SKIPA (skip after) remplacent les colonnes O-spec 43–45, 46–48 et 49–51, respectivement. Et vous avez peut-être utilisé le mot réservé de RPG PAGE pour numéroter les pages d’un rapport. Le mot-clé DDS pour la numérotation de pages est PAGNBR. Et comme la fonction DDS PAGNBR est associée au fichier d’imprimante, pas à une valeur spéciale RPG ou à une variable dans le programme applicatif, il n’y a pas besoin de mots réservés tels que PAGE1–PAGE7 pour supporter la numérotation des pages pour différents fichiers d’imprimante quand un programme génère plusieurs rapports simultanément.

Au-delà des O-specs RPG, il y a aussi des mots-clés tels que BARCODE pour imprimer un champ comme un code barre spécifié par l’utilisateur, DRAWER pour spécifier le tiroir dans lequel des formulaires non continus sont sélectionnés, DUPLEX pour imprimer en recto ou recto-verso, TXTRTT pour changer l’orientation du texte contenu dans un champ, et bien plus. Certains de ces types d’opérations peuvent être effectués avec des fichiers décrits par programme ; mais avec des fichiers d’imprimante décrits en externe, vous avez beaucoup de souplesse et de facilité d’emploi.

Créer un rapport

Après cette brève présentation de certains des mots-clés DDS associés à un fichier d’imprimante, voyons ce qui est nécessaire pour créer un rapport simple. Le rapport, illustré dans la figure 1 (pour les figures, voir le Club Abonnés), représente une facture. Certes, vous pourriez facilement la créer à l’aide d’un fichier d’imprimante décrit par programme, mais elle sert à établir une comparaison entre deux approches : décrit par programme et décrit en externe.

Pour les besoins de la démonstration, trois fichiers base de données sont utilisés pour créer la facture. A en figure 2 montre le DDS pour le fichier Customer Master (CUSTMST) ; les valeurs de champ pour un enregistrement client sont montrées en B. Vous pouvez créer le fichier avec la commande CRTPF FILE(CUSTMST) et ajouter l’enregistrement à l’aide d’un outil tel que DFU ou SQL.

A en figure 3 donne le source pour le Product Master (PRODMST) ; les valeurs des trois enregistrements sont montrées en B. Comme avec le fichier précédent, vous pouvez utiliser CRTPF FILE(PRODMST) pour créer le fichier et n’importe quel outil à votre disposition pour ajouter les trois enregistrements.

Le source pour le fichier Order Master (ORDRMST) est montré en A de la figure 4, avec les valeurs pour les trois enregistrements en B. Comme le mot-clé DDS REFFLD est utilisé dans le source pour le fichier ORDRMST, vous devez créer les deux fichiers CUSTMST et PRODMST avant de créer le fichier ORDRMST en utilisant CRTPF FILE(ORDRMST).

La figure 5 montre le DDS pour le fichier d’imprimante externe INVOICE. Le fichier d’imprimante utilise REFFLD de manière intensive et les trois fichiers maîtres référencés précédemment doivent être créés avant de créer le fichier. Pour créer INVOICE, utilisez la commande CRTPRTF FILE(INVOICE) SRCFILE(QDDSSRC). INVOICE définit quatre formats d’enregistrement — HEADING, ITEMS, CONTINUE et TOTALS —que nous verrons bientôt.

Le programme RPG PRTINVOICE, de la figure 6, génère la facture. Vous pouvez créer ce programme avec CRTBNDRPG INVOICE. Le programme, s’il est complet en ce qui concerne la production de la facture de la figure 1, ne l’est pas en matière de vérification d’erreur. Afin de ne pas encombrer le programme, les seuls contrôles d’erreur effectués ont été les suivants : le nombre correct de paramètres et une combinaison valide numéro de client/numéro de commande. Dans un environnement de production, il est évident que vous feriez d’autres vérifications : par exemple « record not found » (enregistrement non trouvé) lors d’un CHAINing vers les fichiers CUSTMST et PRODMST, par exemple. Bien que le programme exemple soit écrit en RPG en format libre, vous pourriez aussi utiliser le fichier d’imprimante externe INVOICE avec le RPG en format fixe —ILE ou OPM.

Pour créer la facture de la figure 1, vous utiliseriez CALL PGM(PRTINVOICE) PARM(13 1). Après avoir vérifié que les deux paramètres requis (numéro de client et numéro de commande, respectivement) sont transmis, le programme copie les valeurs du paramètre d’entrée dans les variables CustNbr et OrdrNbr. Les paramètres originaux, CustNbr_In et CustOrdrNbr_In, sont définis comme des variables 15,5 en décimal packé pour faciliter l’appel de PRTINVOICE à partir de la ligne de commande. Pour accéder aux divers fichiers base de données, ces valeurs sont reformatées pour correspondre à la définition des champs clés de la base de données.

Après s’être assuré qu’un numéro de client et un numéro de commande valides ont été passés (en utilisant le code opération SETLL et la fonction intégrée %EQUAL), le programme ouvre le fichier d’imprimante INVOICE et écrit (WRITE) le format d’enregistrement HEADING. Le OPEN du fichier INVOICE est dû à la déclaration au renvoi A, figure 6, disant que INVOICE est ouvert pour l’utilisateur (user open, USROPN). A noter que, pour utiliser des fichiers d’imprimante externes, il n’est pas nécessaire d’ouvrir et de fermer explicitement le fichier d’imprimante. Le mot-clé USROPN est utilisé strictement pour éviter d’avoir des fichiers spool vides (ou avec statut FINished) ouverts implicitement par le runtime RPG quand un numéro de client ou un numéro de commande non valide est passé au programme.

Téléchargez cette ressource

Sécuriser votre système d’impression

Sécuriser votre système d’impression

Longtemps sous-estimée, la sécurisation d’un système d’impression d’entreprise doit être pleinement prise en compte afin de limiter le risque de fuite d’informations sensibles. Voici les 3 principales précautions à prendre.

Tech - Par Bruce Vining - Publié le 16 octobre 2012