Envoi d'un spoule par mail
| | Suiv. |
Le programme permet l'envoi d'un fichier spoule par mail.
Le fichier spoule est copié dans un dossier partagé (FLR), d'où il est envoyé par SNDDST. L'utilisateur doit être déclaré dans le répertoire de distribution (WRKDIRE).
Voir ci-dessous la liste source.
100 /***** ENVOI DE SPOULE PAR MAIL *****/
200
300 PGM
400
500 DCL VAR(&SUBJECT) TYPE(*CHAR) LEN(50)
600 DCL VAR(&PJ ) TYPE(*CHAR) LEN(12)
700 DCL VAR(&PJ2 ) TYPE(*CHAR) LEN(30)
800 DCL VAR(&PMAIL) TYPE(*CHAR) LEN(100) +
900 VALUE('a@b.fr')
1000 DCL VAR(&EMAIL) TYPE(*CHAR) LEN(100) +
1100 VALUE('c@d.fr')
1200 DCL VAR(&BODY) TYPE(*CHAR) LEN(100)
1300
1400 /* RAZ DU FICHIER DE TRAVAIL */
1500 DLTF QTEMP/FIC
1600 MONMSG CPF0000
1700 CRTPF FILE(QTEMP/FIC) RCDLEN(200) SIZE(500000)
1800
1900 /* RECUPERATION DU SPOULE */
2000 CPYSPLF FILE(SPLF) TOFILE(QTEMP/FIC) SPLNBR(*LAST)
2100
2200 /* TRANSFORMATION DU SPOULE EN DOCUMENT AS400 (DANS QDLS) : PJ.TXT */
2300 CHGVAR VAR(&PJ) VALUE('PJ.TXT')
2400 CHGVAR VAR(&PJ2) VALUE('/QDLS/IRIS/' *CAT &PJ)
2500 CPYTOSTMF +
2600 FROMMBR('QSYS.LIB/QTEMP.LIB/FIC.FILE/FIC.MB+
2700 R') TOSTMF(&PJ2) STMFOPT(*REPLACE) +
2800 STMFCODPAG(*PCASCII)
2900
3000 /* INDIQUER UN TEXTE CORRECT POUR LE DOCUMENT CREE. CELUI-CI SERA REPRIS +
3100 EN TANT QU'OBJET DU MAIL */
3200 CHGVAR VAR(&SUBJECT) VALUE('Notre commande ....')
3300 CHGDOCD DOC(&PJ) FLR(IRIS) DOCD(&SUBJECT) +
3400 USRAUT((*PUBLIC *ALL))
3500
3600 /* ENVOI DU MAIL */
3700
3800 CHGVAR VAR(&BODY) VALUE(' ')
3900 SNDDST TYPE(*DOC) TOINTNET((&PMAIL) (&EMAIL *CC)) +
4000 DSTD('Description inutile mais +
4100 obligatoire') MSG(&BODY) SNDFMT(*NOCHG) +
4200 DOC(&PJ) FLR(IRIS)
4300 DLTDLO DLO(&PJ) FLR(IRIS)
4400
4500 FIN:
4600 ENDPGM
|
Création et envoi de fichier excel par l'AS400
| Préc. | Suiv. |
Le programme illustre la possibilité de créer un fichier excel directement sur l'as400 et de l'envoyer par mail.
Le fichier de données est copié dans un répertoire de l'ifs, en y ajoutant une tabulation entre chaque champ (le code x'05' devient x'09' par la conversion ebcdic-ascii).
Le fichier de données est en fait composé de deux tables; la première pour les entetes de colonne, la seconde contenant les données des lignes.
On peut inclure dans le fichier des formules de calcul. Celles-ci doivent faire référence au n° de ligne que l'enregistrement portera dans excel.
L'envoi du mail est ici réalisé par la commande freeware SNDM.
Les différentes sources sont listées ci-dessous.
Entetes de colonnes
FICHIER SOURCE . . . . . QDDSSRC MEMBRE . . . . . . . . . TSTXLE
SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
100
200 A R TSTXLEF1
300 A ENT1 20 COLHDG('ENTETE 1')
400 A ENT2 20 COLHDG('ENTETE 2')
500 A ENT3 20 COLHDG('ENTETE 3')
* * * * F I N D U S O U R C E * * * *
ENTETE 1 ENTETE 2 ENTETE 3
Zone 1 Zone 2 Résultat
* * * F I N D U R A P P O R T * * *
|
Données
FICHIER SOURCE . . . . . QDDSSRC MEMBRE . . . . . . . . . TSTXLD
SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
100
200 A R TSTXLDF1
300 A ZONE1 5S 0 COLHDG('ZONE 1')
400 A ZONE2 5S 0 COLHDG('ZONE 2')
500 A FORMUL 30 COLHDG('FORMULE')
* * * * F I N D U S O U R C E * * * *
ZONE 1 ZONE 2 FORMULE
1 2 =A2+b02
10 20 =abs(a3-b3)
100 200 =si(a4>b4;"plus";"moins")
0 0 =SOMME(a2:a4)
* * * F I N D U R A P P O R T * * *
|
Texte du corps du mail
FICHIER SOURCE . . . . . TSTXLSSRC MEMBRE . . . . . . . . . MAIL
SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
100 Ci-joint fichier excel ...
200
300 Cordialement,
400 Didier JACQUEMART
* * * * F I N D U S O U R C E * * * *
|
CL de traitement
FICHIER SOURCE . . . . . QCLSRC MEMBRE . . . . . . . . . TSTXLS
SEQNBR*...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+... 8
100 /**************************************************************/
200 /* CREATION ET ENVOI PAR MAIL DE FICHIER EXCEL */
300 /* */
400 /* DJ 18.02.2010 */
500 /**************************************************************/
600 PGM
700 DCL VAR(&FROM) TYPE(*CHAR) LEN(50)
800 DCL VAR(&TO1) TYPE(*CHAR) LEN(50)
900 DCL VAR(&TO2) TYPE(*CHAR) LEN(50)
1000
1100 CHGVAR VAR(&FROM) VALUE('from@a.fr')
1200 CHGVAR VAR(&TO1) VALUE('to1@b.fr')
1300 CHGVAR VAR(&TO2) VALUE('to2@c.fr')
1400
1500 /* * ENVOI DU MAIL */
1600 /* COPIER L'ENTETE */
1700 CPYTOIMPF FROMFILE(TSTXLE ) +
1800 TOSTMF('/IRIS/TSTXLS.XLS') MBROPT(*REPLACE) +
1900 STMFCODPAG(*PCASCII) RCDDLM(*CRLF) +
2000 STRDLM(*NONE) FLDDLM(X'05') DECPNT(*COMMA)
2100 /* COPIER LE FICHIER EN FORMAT EXCEL */
2200 CPYTOIMPF FROMFILE(TSTXLD) +
2300 TOSTMF('/IRIS/TSTXLS.XLS') MBROPT(*ADD ) +
2400 STMFCODPAG(*PCASCII) RCDDLM(*CRLF) +
2500 STRDLM(*NONE) FLDDLM(X'05') DECPNT(*COMMA)
2600 /* ENVOYER LE MAIL */
2700 SNDM FROM(&FROM) TO((&TO1) (&TO2 *N *CC)) +
2800 FILE(TSTXLSSRC) MBR(MAIL) SUBJECT('Test +
2900 excel par mail') +
3000 ATTACHMENT('/iris/tstxls.xls')
* * * * F I N D U S O U R C E * * * *
|
Transfert d'un fichier sous excel et envoi par mail
| Préc. | Suiv. |
Le programme permet le transfert d'un fichier sous excel via client/access et son envoi éventuel par mail, après compression.
Il utilise pour ceci le programme, écrit en vbs, tfrxls.vbs et la demande de transfert tfrxls.dtf.
La demande de transfert a pour contraintes que le nom de fichier as400 est symbolisé par la chaine XXXXXXXXXX et celui de sortie par YYYYYYYYYY.
Le reste de la demande est pré-établi (adresse système, version d'excel, ccsid 65535 ...).
Ci-dessous l'enchaînement du dialogue.
Fichier à transférer
Fichier de destination
Le nom du fichier de destination reprend par défaut celui du fichier d'origine. Il est bien sûr modifiable.
Destinataire du fichier
Si le destinataire n'est pas saisi, le fichier ne sera pas envoyé par mail mais simplement transféré sous excel.
Le nom peut être tapé de 3 manières :
- entièrement,
- semi-entièrement : le domaine est abrégé (@my=@mycompany.fr),
- en abrégé (3 lettres) pour les destinataires les plus souvent utilisés.
Objet du mail
Corps du mail
Les points sont transformés en retour chariot.
Si aucun texte n'est saisi, un texte par défaut est utilisé.
Déroulement
La demande de transfert de base est complétée des noms de fichiers as400 et de destination, puis lancée via la commande dos rtopcb.
Si un envoi par mail est demandé, le fichier est compressé par winrar puis envoyé par l'objet CDO.
Transformation d'une requête SQL en demande de transfert Client/Access
| Préc. | Suiv. |
Ce petit utilitaire transforme une requête élaborée sous SQL interactif en demande de transfert Client/Access.
Les jointures par JOIN ne sont pas traitées.
Fonctionnement
La requête SQL est au préalable copiée dans le presse-papiers à partir de la session AS400.
L'appel du programme provoque la récupération de cette requête et sa transformation. Cette dernière se base sur une demande de transfert modèle, dans laquelle les instructions sql sont ensuite modifiées.
Le résultat est un nouveau fichier .dtf.
Voir dans le fichier téléchargé de plus amples explications.
Transformation d'une demande de transfert Client/Access en requête SQL
| Préc. | Suiv. |
Ce petit utilitaire opère à l'inverse du précédent pour reprendre dans SQL une demande de transfert Client/Access.
Les jointures par JOIN ne sont pas traitées.
Fonctionnement
Le programme de conversion reçoit en paramètre le nom de la demande de transfert (fichier .dtf). Ceci peut se réaliser en tirant l'icône de la demande sur l'icône du programme.
La requête SQL est disponible dans le presse-papiers, d'où il suffit de la coller.
Voir dans le fichier téléchargé de plus amples explications.
La création d'écrans d'aide peut s'effectuer par l'intermédiaire de panneaux (objets *PNLGRP).
L'aide ainsi créée est semblable à l'aide fournie par le système et bénéficie des mêmes fonctionnalités (aide étendue, indexation, ...)
Un langage spécifique permet de définir le contenu du fichier et des différents points d'accès (les panneaux).
La création du source utilise SEU; ensuite le fichier doit être compilé et le fichier écran modifié pour faire appel aux rubriques d'aide.
Le langage est constitué de mots-clés devant respecter une certaine hiérarchie.
Les mot-clés sont précédés du caractère ":" et suivi d'un "."; ils peuvent écrits en minuscules. Les commentaires sont précédés d'un ".".
Le source commence par le mot-clé PNLGRP et se termine par EPNLGRP.
Un écran d'aide commence par HELP, qui définit le nom du panneau, et se termine par EHELP. Plusieurs panneaux peuvent être définis dans un même source.
Ensuite, divers ensembles de mots-clés permettent de définir des formats de contenus différents. Voici les principaux :
- rubrique, introduite par le mot-clé H2 (double-brillance, souligné); il existe aussi H1,H3, et H4,
- paragraphe, introduit par le mot-clé P,
- liste de termes, tableau de 2 colonnes (par exemple explication synthétique des touches de fonction) utilisant les mots-clés DL et terminée par EDL; les mots-clés DTHD, DDHD,DT,DD définissent respectivement l'entête et les lignes de la liste.
- liste numérotée, introduite par le mot-clé OL et terminée par EOL,
- liste non numérotée, similaire à la précédente où le n° est remplacé par une puce; elle est introduite par le mot-clé UL et terminée par EUL,
- liste simple, sans n° ni puce, introduite par le mot-clé SL et terminée par ESL,
Dans les trois derniers types de listes, les entrées sont identifiées par le mot clé LI.
Le mot clé LP définit un paragraphe à l'intérieur d'une ligne de liste.
La hiérarchie d'un groupe de panneaux peut se représenter ainsi:
Groupe de panneaux | PNLGRP | | | | | |
Panneau | | HELP | | | | |
Entete de rubrique | | | Hx | | | |
Paragraphe | | | | P | | |
Liste de termes | | | | DL | | |
Entete liste | | | | | DTHD DDHD | |
Ligne | | | | | DT DD | |
Fin liste de termes | | | | EDL | | |
Liste numérotée | | | | OL | | |
Ligne | | | | | LI | |
Paragraphe | | | | | | LP |
Fin liste numérotée | | | | EOL | | |
Liste non numérotée | | | | UL | | |
Ligne | | | | | LI | |
Paragraphe | | | | | | LP |
Fin liste non numérotée | | | | EUL | | |
Liste simple | | | | SL | | |
Ligne | | | | | LI | |
Paragraphe | | | | | | LP |
Fin liste simple | | | | ESL | | |
Fin panneau | | EHELP | | | | |
Fin groupe de panneaux | EPNLGRP | | | | | |
A chaque niveau de mot-clé, les textes peuvent commencer sur la ligne du mot-clé et se continuer sur les lignes suivantes, qui ne possèdent pas de mot-clé.
La mise en page obéit aux règles suivantes :
- les textes des lignes source sont concaténés en ignorant les espaces de fin (sauf un),
- sur le texte concaténé, les espaces de début sont supprimés.
Les différents types de listes et paragraphes peuvent être imbriqués. Ceci se traduit par des indentations supplémentaires à l'écran.
Extrait du code source (Fichier QPLNGRP, membre SBSJBQ, type PNLGRP) :
0005.00 :PNLGRP.
...
0060.00 :HELP NAME='AIDE03'.
0061.00 :H2.Fonction F10
0062.00 :P.
0063.00 La touche F10 a une fonction particulière.
0064.00 Elle permet d'actualiser la liste des sous-systèmes et de ce fait
0065.00 prend un certain temps interactif à s'exécuter.
0066.00 :EHELP.
...
0070.00 :EPNLGRP.
|
Dans le source du fichier écran, l'aide est appelée par les mots clés suivants, présents soit au niveau fichier, soit enregistrement :
- ALTHELP définit la touche d'appel de l'aide,
- HLPTITLE donne un titre au fichier d'aide,
- HLPPNLGRP définit quel panneau afficher,
- HLPARA définit la zone d'écran active pour déclencher le panneau.
Extrait du code source DDS:
0009.00 A ALTHELP(CA01)
0010.00 A HLPTITLE('AIDE SBSJBQ')
0011.00 A HLPPNLGRP('AIDE01' SBSJBQ)
...
0074.00 A H HLPPNLGRP('AIDE03' SBSJBQ)
0075.00 A HLPARA(23 25 23 52)
|
Voir dans le fichier téléchargé les sources complets.
Il existe plusieurs manières de créer des fonds de page sur as400 :
- l'utilitaire AFP STRAFPU, qui présente un écran en mode caractère pas très convivial pour la création de cadres et le cadrage de ceux-ci,
- Word pour dessiner le formulaire.
C'est ici la seconde méthode qui est décrite.
Imprimer le document dans un fichier
Il faut au préalable charger le driver de l'imprimante AFP300, disponible dans client/access.
Il est important de modifier les options d'impression de l'imprimante de la façon suivante :

Imprimer le document word sur cette imprimante, en demandant une sortie fichier, d'extension .prn.
Transférer le fichier sur l'as400
Le fichier créé est transféré sur l'as400, par exemple par une commande ftp, émise à partir du pc, comme celle-ci :
open adresse_ip_as400
user util motpas
bin
put d:\temp\fichier.prn fond
close
bye
|
Selon la configuration du ftp sur l'as400, il peut être nécessaire de préciser la bibliothèque de destination.
Convertir le fichier en fond de page
En écran de commande as400, lancer la commande :
CRTOVL OVL(bib/fondpage) FILE(bib/fond) MBR(fond) DATATYPE(*AFPDS)
TEXT(*MBRTXT)
|
Utilisation du fonds de page
Le fonds de page peut être utilisé de deux façons.
La première inclut le fonds de page dans le fichier imprimante, avec les dds suivantes :
************** Début des données *******************************************
A R GH001
A OVERLAY(*LIBL/FONDPAGE 0. 0.)
|
Avant la première impression dans le fichier, écrire l'enregistrement définissant le fond de page.
La seconde permet d'utiliser un fichier imprimante avec ou sans dds, grâce à un ovrprtf :
OVRPRTF FILE(fichimp) DEVTYPE(*AFPDS) FRONTOVL(bib/fondpage)
|
Pour améliorer la présentation et la lisibilité des sources, il est utile de pouvoir affecter des couleurs aux différentes lignes. Ceci se réalise en insérant avant les caractères à coloriser un code de contrôle. Sous client/access, on peut redéfinir les touches clavier pour faciliter la tâche.
Il suffit d'affecter à une combinaison de touches la fonction apl xx, où xx représente le code de contrôle hexadécimal de la couleur. Voir ci-dessous la liste de ces codes et les combinaisons couleur caractère / couleur de fond.
20 vert / noir
21 noir / vert
22 blanc / noir
23 noir / blanc
24 vert / noir souligné
25 noir / vert souligné
26 blanc / noir souligné
27 invisible
28 rouge / noir
29 noir / rouge
2a rouge / noir clignotant
2b noir / rouge clignotant
2c rouge / noir souligné
2d noir / rouge souligné
2e rouge / noir clignotant souligné
2f invisible
30 cyan / noir
31 noir / cyan
32 jaune / noir
33 noir / jaune
34 cyan / noir souligné
35 noir / cyan souligné
36 jaune / noir souligné
37 invisible
38 rose / noir
39 noir / rose
3a bleu / noir
3b noir / bleu
3c rose / noir souligné
3d noir / rose souligné
3e bleu / noir souligné
3f carré vert + vert
|
FTP permet de transférer des sources d'un as400 à un autre. Le principe repose sur l'utilisation d'un fichier de sauvegarde.
Le programme MEPSRCIN présenté ci-dessous sauvegarde un fichier de sources préalablement constitué des sources à envoyer, transfère la sauvegarde sur un autre système, puis lance la restauration du fichier d'origine.
PGM
CLRSAVF BIB/SAVSRC
SAVOBJ OBJ(SRC) LIB(BIB) DEV(*SAVF) SAVF(BIB/SAVSRC)
OVRDBF INPUT BIB/QTXTSRC MBR(MEPSRCIN)
OVRDBF OUTPUT BIB/QTXTSRC MBR(LOG)
FTP AS400DEST
ENDPGM
|
Le fichier BIB/SRC comporte les sources sélectionnées pour le transfert.
Le fichier BIB/SAVSRC est un fichier de type *SAVF, qui doit exister sur les deux systèmes.
Le fichier QTXTSRC comporte un membre MEPSRCIN, qui contient les commandes FTP à lancer. Le membre LOG est destiné à recevoir le log du transfert.
Liste du membre MEPSRCIN
User password
bin
put bib/savsrc bib/savsrc
quote rcmd dltf bib/src
quote rcmd RSTOBJ OBJ(SRC) SAVLIB(BIB) DEV(*SAVF) SAVF(BIB/SAVSRC) RSTLIB(BIB)
quit
|
Lister des descriptions de fichiers
| Préc. | |
Cet outil permet de lister de manière lisible des descriptions de fichiers. Il permet de gérer des tables classiques, ainsi que des tables SQL, dont les noms de tables et de champs peuvent dépasser les 10 caractères habituels.
L'écran de lancement demande un nom de fichier ou un nom de table sql, et la bibliothèque à utiliser ou *LIBL.
Un programme de contrôle permet de vérifier l'exactitude des données entrées :
- Nom de fichier OU table SQL
- Bibliothèque obligatoire
- Table sql existante
Les noms de tables sql doivent être transformés en leurs équivalents sur 10 caractères, afin de pouvoir utiliser les commandes du système. On trouve cette équivalence dans la table systables.
Si le nom de bibliothèque est précisé, il suffit de rechercher le nom de table et le nom de bibliothèque as400. Si le nom de bibliothèque est *LIBL, il faut faire le traitement précédent pour chacune des bibliothèques de la liblist du job.
Si la correspondance n'est pas trouvée, la table SQL n'existe pas (bibliothèque ou libl).
La phase suivante consiste à extraire plusieurs informations du fichier as400 déterminé :
- Description du fichier pour obtenir son intitulé (DSPFD)
- Description du fichier pour obtenir ses zones clés (DSPFD)
- Description des champs du fichier (DSPFFD)
Les trois fichiers obtenus sont regroupés par une requête QM, laquelle sert au programme d'édition. L'édition est ensuite copiée dans un fichier texte qui peut être utilisé pour une intégration dans un traitement de texte pour réaliser une documentation.
Note sur les tables SQL
Tous les fichiers et tables sql sont décrits dans la table systables.
Les tables créées par sql peuvent comporter des noms (table et champs) dépassant les 10 caractères. Dans ce cas, l'équivalence est calculée en prenant les cinq premiers caractères et en ajoutant un n° de séquence à 5 chiffres.
Pour le nom de table, il est donné dans systables, pour les noms de champs, on les trouve dans les entetes de colonne du DSPFFD.
Par exemple, dans une table on a les champs CLIENT_NUM et CLIENT_NOM dans cet ordre, les noms as400 seront CLIEN00001 et CLIEN00002. Dans une autre table, selon l'ordre des champs, CLIENT_NUM pourra avoir un autre équivalent.
Pour les tables, même chose, notamment lorsque l'on crée des vues, selon l'ordre de création, le nom as400 pourra être différent selon les bibliothèques (entre développement, homologation et production par exemple).
|