Le web de Dominique Guebey – IBM AS/400 iSeries

Page web  : http://www.dg77.net/tekno/as400/as400pop.htm


   D o m i n i q u e   G u e b e y    J u n g l e      IBM AS/400 iSeries

e-Mail et AS/400

Quelques exemples élémentaires


SMTP, expédition de mails par ou via la machine

Généralités
Principe

Ce qui suit concerne uniquement l’utilisation de la commande SNA classique SNDDST.

Condition

Le sous-système QSNADS doit être démarré.

L’utilisateur doit être enregistré dans le répertoire de distribution du système.

Commande de base : WRKDIRE. Noter que le nom inscrit dans le répertoire est limité à 8 caractères ; il peut en fait être complètement différent de l'id utilisateur AS/400.

Configuration de base
Utilisation d’INTERNET
Pour pouvoir expédier des courriers électroniques dans le monde extérieur, demander à l’administrateur réseau le nom ou l’adresse réseau de la passerelle SMTP par laquelle il faut passer.
Accès au menu et aux options SMTP
GO  CFGTCP option 20 > 12
Attributs SMTP du système
CHGSMTPA [F4]
MAILROUTER : mettre l’adresse du relais.
ALWRLY : ne pas mettre *ALL ! Si *BOTH, utiliser ADDSMTPLE pour préciser les règles
Ajout d’adresses acceptées (exemple) :
ADDSMTPLE  TYPE(*ACCEPT)  INTNETADR('192.168.6.0')  SUBNETMASK('255.255.255.0')
Passerelle internet
ADDDIRE USRID(INTERNET GATEWAY) USRD('Passerelle SMTP') SYSNAME(INTERNET) PREFADR(NETUSRID *IBM ATCONTXT)
CHGDSTA SMTPRTE(INTERNET GATEWAY)
Nosplit...
CHGPOPA MSGSPLIT(*NOMAX)
(Re)démarrer le serveur SMTP.
ENDTCPSVR SERVER(*SMTP) (ou par iSeries Navigator).
STRTCPSVR SERVER(*SMTP) (ou par iSeries Navigator).
Envoi manuel d’un texte simple

Commande SNDDST type *LMSG. Le texte peut comporter jusqu’à 5000 caractères.

SNDDST TYPE(*LMSG) TOINTNET(('victor.hugoàbigfoot.com')) DSTD('x') LONGMSG('Texte 5000 car.') SUBJECT('Objet')

Remarques :

Envoi manuel d’un fichier

Commande SNDDST  *DOC.

Copie dans un dossier
Explication : la commande SNDDST ne connaît que QDLS, emplacement traditionnel des documents (commande WRKFLR).
Attention : les noms de documents sont limités à 12 caractères.
Fichier STREAM : exemple d’un PDF obtenu dans l’IFS : CPY OBJ('/tmp/MedecineScience.pdf') TOOBJ('/QDLS/exped/MedScien.pdf') DTAFMT(*BINARY) REPLACE(*YES)
Noter le paramètre DTAFMT(*BINARY) pour le fichier PDF. Pour un fichier simple texte on aura TOCCSID(*PCASCII)  DTAFMT(*TEXT).
Fichier BD : CPYTOPCD FROMFILE(MABIBLIO/NOMFIC) TOFLR(EXPED) TODOC(NOM8CAR.TXT) REPLACE(*YES) TRNTBL(QUSRSYS/QA66BFA93)
Noter le paramètre TRNTBL(QUSRSYS/QA66BFA93) : voir les pages des code WRKOBJ QUSRSYS/QA66*)
Fichier spool : copie du dernier spool d’impression du travail en cours :
  • Créer un fichier de travail : CRTPF MABIBLIO/TRAV RCDLEN(200)
  • CPYSPLF FILE(nom_fichier) TOFILE(MABIBLIO/TRAV) SPLNBR(*LAST)
  • Transfert dans le dossier : COPYTOPCD FROMFILE(MABIBLIO/TRAV) TOFLR(TRSFERT) TODOC(SPOOLXXX.TXT) REPLACE(*YES) TRNTBL(QUSRSYS/QA66BFA93)
Changement de la description
CHGDOCD DOC(MedScien.pdf) FLR(EXPED) DOCD('Envoi par l''AS/400')
Explication : ce sera l’objet de l’eMail ; par défaut, c’est le nom du fichier qui est utilisé.
Envoi
SNDDST TYPE(*DOC) TOINTNET(('victor.hugoàbigfoot.com')) DSTD('Essais SMTP AS/400') MSG('(256 car. maxi) - cet eMail a ete envoye par l''AS/400') DOC(MedScien.pdf) FLR(TRSFERT)

POP, service de courrier par l’AS/400

Préambule

Utilisation du serveur intégré de l’ordinateur central IBM AS400/iSeries. Des utilisateurs de PC répertoriés sur l’AS400 peuvent s’envoyer réciproquement des « e-mail ». Des utilisateurs des sessions 5250 ordinaires sur AS400 peuvent aussi envoyer des messages aux PC, (y compris avec des fichiers en « pièce jointe »).

Préalables sur l’AS400 :

Le sous-système QSNADS doit être démarré.

Il faut un complément de configuration pour chaque identité qui sera utilisée, qu’il s’agisse d’un profil utilisateur AS400 ou pas : commande WRKDIRE [Entrée]. Si le profil ne figure pas dans la liste, il faut l’ajouter, (voir plus bas). Si le profil existe déjà dans la liste : entrer 2 (modifier), puis aller sur le sixième écran : "Niveau de service messagerie" : 2 (messagerie système). Ecran suivant : "Adresse de prédilection" : 3 (nom SMTP). Touche F19 (modifier nom SMTP) : si n’existe pas encore, un message demandera de frapper [Entrée]. Dans la zone "SMTP user ID", mettre le nom utilisateur en minuscules. Dans "SMTP domain", mettre : machine.monorg.fr

Ajout d’un profil dans le répertoire du système.

WRKDIRE [Entrée], Sur la première ligne : Opt : 1 (Ajouter), Id Util : id. utilisateur, Adresse : MACHINE [Entrée] Renseigner les zones suivantes : Description : nom ou autre indication, Nom et Groupe : MACHINE (rien dans le groupe), Profil utilisateur : id. utilisateur, Renseigner ensuite les informations indiquées au § 2. Valider la création par [Entrée]

Configuration sur le PC du logiciel client de messagerie

Exemple pour Outlook Express : Outils > Comptes > Ajouter > Courrier : entrer le « nom complet » (prénom + nom ou autre) > Suivant : cocher « j’ai déjà une adresse? » et entrer (id. AS400 en minuscules)@machine.monorg.fr (exemple pour id. utilisateur as400 "TATIANA" : tatiana@machine.monorg.fr) > Suivant : "Serveur de courrier sortant" entrer 10.100.1.1, idem pour "courrier entrant" > Suivant : nom du compte : id utilisateur ; mot de passe : celui de l’AS400, on peut ne rien mettre et décocher la zone "retenir?", dans ce cas le mot de passe sera demandé à chaque connexion avec le serveur. > Terminer.

Envoi d’un eMail à un autre utilisateur de l’AS400 : Pour un utilisateur "DUPONT", le destinataire devra être : dupont@machine.monorg.fr

Outillage rudimentaire pour envoyer des eMails depuis l’AS400

Utiliser les commandes décrites ci-dessous, ou OfficeVision : STROFC [Entrée], option 1, ou directement la commande SNDDST

La commande suivante permet d’envoyer à un utilisateur voulu un message de 256 caractères, avec un objet de 44. Un complément de 1024 caractères arrivera en pièce-jointe

                       ENVOI COURRIER INTRA-TESTUD (DMAIL)                      
                                                                                
 Indiquez vos choix, puis appuyez sur ENTREE.                                   
                                                                                
 ID destinataire :  . . . . . . .   ________      Valeur alpha                  
 SYSTEME      : . . . . . . . . .   ASCHASSE      Valeur alpha                  
 Descriptif/objet : . . . . . . .   ____________________________________________
______                                                                          
 Message :  . . . . . . . . . . .   ____________________________________________
________________________________________________________________________________
________________________________________________________________________________
____________________________________________________                            
 Texte long : . . . . . . . . . .   '.'_________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
________________________________________________________________________________
____________________________________________________________________ ...        
                                                                                
                                                                            Fin 
 F3=Exit   F4=Invite   F5=Réafficher   F12=Annuler   F13=Mode d'emploi invite   
 F24=Autres touches                                                             
/* ENVOI D'UN COURRIER PAR AS400                              */

             CMD        PROMPT('ENVOI COURRIER INTRA-TESTUD')
             PARM       KWD(PUSRID) TYPE(*CHAR) LEN(08) MIN(1) +
                          PROMPT('ID destinataire :')
             PARM       KWD(PLIEU) TYPE(*CHAR) LEN(08) RSTD(*NO) +
                          DFT(ASCHASSE) MIN(0) PROMPT('SYSTEME      :')
             PARM       KWD(PDSTD) TYPE(*CHAR) LEN(44) MIN(1) +
                          CHOICE(OBJET) PROMPT('Descriptif/objet :')
             PARM       KWD(PMSG) TYPE(*CHAR) LEN(256) +
                          PROMPT('Message :')
             PARM       KWD(LMSG) TYPE(*CHAR) LEN(1024) DFT('.') +
                          PROMPT('Texte long :')

Le CL utilisé est le suivant :

/* PGM        PARM(&PTYPE &PUSRID &PLIEU &PDSTD &PMSG &PJTE)   */
PGM        PARM(&PUSRID &PLIEU &PDSTD &PMSG &PJTE)
             DCL        VAR(&PTYPE) TYPE(*CHAR) LEN(06) VALUE(*LMSG)
             DCL        VAR(&PUSRID) TYPE(*CHAR) LEN(08)
             DCL        VAR(&PLIEU) TYPE(*CHAR) LEN(08)
             DCL        VAR(&PDSTD) TYPE(*CHAR) LEN(44)
             DCL        VAR(&PMSG) TYPE(*CHAR) LEN(256)
             DCL        VAR(&PJTE) TYPE(*CHAR) LEN(1024)
             SNDDST TYPE(&PTYPE) TOUSRID((&PUSRID &PLIEU)) +
                    DSTD(&PDSTD) MSG(&PMSG) LONGMSG(&PJTE)
             MONMSG CPF0000
             ENDPGM

Envoi d’un fichier AS400 en pièce jointe

                      COURRIER avec fichier joint (DMAILF)                      
                                                                                
 Indiquez vos choix, puis appuyez sur ENTREE.                                   
                                                                                
 BIBLIOTHEQUE : . . . . . . . . .   __________    Valeur alpha                  
 FICHIER :  . . . . . . . . . . .   __________    Valeur alpha                  
 SYSTEME      : . . . . . . . . .   ASCHASSE      Valeur alpha                  
 ID destinataire :  . . . . . . .   ________      Valeur alpha                  
 Message :  . . . . . . . . . . .   ____________________________________________
________________________________________________________________________________
________________________________________________________________________________
____________________________________________________                            
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                            Fin 
 F3=Exit   F4=Invite   F5=Réafficher   F12=Annuler   F13=Mode d'emploi invite   
 F24=Autres touches                                                             

Commande

/* ENVOI D'UN COURRIER PAR AS400 AVEC FICHIER BD COMME PIECE-JOINTE */ 
             CMD        PROMPT('COURRIER avec fichier joint')          
             PARM       KWD(BIB) TYPE(*CHAR) LEN(10) MIN(1) +          
                          PROMPT('BIBLIOTHEQUE :')                     
             PARM       KWD(FIC) TYPE(*CHAR) LEN(10) MIN(1) +          
                          PROMPT('FICHIER :')                          
             PARM       KWD(SYS) TYPE(*CHAR) LEN(08) RSTD(*NO) +       
                             DFT(ASCHASSE) MIN(0) +                    
                          PROMPT('SYSTEME      :')                     
             PARM       KWD(DEST) TYPE(*CHAR) LEN(08) MIN(1) +         
                          PROMPT('ID destinataire :')                  
/*           PARM       KWD(OBJ) TYPE(*CHAR) LEN(44) MIN(0) +          
                          PROMPT('Descriptif/objet :')        */       
             PARM       KWD(MSG) TYPE(*CHAR) LEN(256) +                
                          PROMPT('Message :')                          

CL utilisé (noter qu’on met aussi une copie du fichier dans un dossier partagé TRANS de QDLS)

/* CE CL LIT                                                  UN    */
/* FICHIER,                    ET L'ENVOIE             SOUS FORME   */
/* DE DISTRIBUTION OFFICEVISION RECUPERABLE PAR E-MAIL.             */
/* PARAMETRES : - BIBLIOTHEQUE                                      */
/*              - FICHIER                                           */
/*              - SYSTEME (NORMALEMENT : ASCHASSE)                  */
/*              - DESTINATAIRE.                                     */
/*              - OBJET : NON (SNDDST *DOC => OBJET = DOC)          */
/*              - MESSAGE                                           */
PGM  PARM(&BIB &FIC &SYS &DEST      &MSG)                             
DCL &BIB TYPE(*CHAR) LEN(10)                                          
DCL &FIC TYPE(*CHAR) LEN(10)                                          
DCL &SYS TYPE(*CHAR) LEN(08)                                          
DCL &DEST TYPE(*CHAR) LEN(08)                                         
DCL &OBJ  TYPE(*CHAR) LEN(44)                                         
DCL &MSG  TYPE(*CHAR) LEN(256)                                        
DCL &NOMF TYPE(*CHAR) LEN(12)                                         
CHGVAR &NOMF VALUE(&FIC *TCAT '.TXT')                                 
CHGVAR &OBJ  VALUE(&FIC)                                              
CRTFLR TRANS                                                          
MONMSG CPF0000                                                         
DLTDLO DLO(&FIC) FLR(TRANS)                                            
MONMSG CPF0000                                                         
CPYTOPCD FROMFILE(&BIB/&FIC) TOFLR(TRANS) TODOC(&FIC)                  
MONMSG CPF0000                                                         
             SNDDST     TYPE(*DOC) TOUSRID((&DEST &SYS)) DSTD(&OBJ) +  
                          MSG(&MSG) SNDFMT(*NOCHG) DOC(&FIC) FLR(TRANS)
MONMSG CPC9033 EXEC(GOTO CMDLBL(SUITE))                                
MONMSG CPF0000                                                         
/* CALL JOBMSG PARM('ANOMALIE : COURRIER NON ENVOYE') */               
 SUITE:                                                                
DLTDLO DLO(&FIC) FLR(TRANS)                                            
MONMSG CPF0000                                                         
ENDPGM                                                                 

Envoi sous forme texte d’un fichier spool d’impression dont on a récupéré au préalable les coordonnées (JOB, USER, NUMBER…)

                    Courrier avec etat-spool joint (DMAILS)                    
                                                                               
Indiquez vos choix, puis appuyez sur ENTREE.                                   
                                                                               
Nom du travail . . . . . . . . .   __________    NAME                          
Utilisateur  . . . . . . . . . .   __________    USER                          
Numéro du travail  . . . . . . .   ______        NUMBER                        
Fichier spool  . . . . . . . . .   __________    NAME                          
Numéro du fichier  . . . . . . .   *ONLY         0-9999, *ONLY                 
SYSTEME :  . . . . . . . . . . .   ASCHASSE      Valeur alpha                  
DESTINATAIRE : . . . . . . . . .   ________      Valeur alpha                  
Chaine de recherche (facult.)  .   _________________                           
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                           Fin 
F3=Exit   F4=Invite   F5=Réafficher   F12=Annuler   F13=Mode d'emploi invite   
F24=Autres touches                                                             

La chaîne de recherche correspond à une tentative pour automatiser l’envoi périodique de DSPLOG partiels sur un id. correspondant à des anomalies.

/* ENVOI D'UN LISTING PAR MAIL                                  */     
             CMD        PROMPT('Courrier avec etat-spool joint')     
PARM KWD(JOB) TYPE(*CHAR) LEN(10) MIN(1) +                           
     CHOICE('NAME') PROMPT('Nom du travail')                         
PARM KWD(USER) TYPE(*CHAR) LEN(10) MIN(1) +                          
     CHOICE('USER') PROMPT('Utilisateur')                            
PARM KWD(NUMBER) TYPE(*CHAR) LEN(6) MIN(1) +                         
     CHOICE('NUMBER') PROMPT('Numéro du travail')                    
PARM KWD(FILE) TYPE(*CHAR) LEN(10) MIN(1) +                          
     CHOICE('NAME') PROMPT('Fichier spool')                          
PARM KWD(SPLNBR) TYPE(*CHAR) LEN(5) DFT(*ONLY) +                     
     MIN(0) CHOICE('0-9999, *ONLY') +                                
     PROMPT('Numéro du fichier')                                     
             PARM       KWD(SYS) TYPE(*CHAR) LEN(08) RSTD(*NO) +     
                             DFT(ASCHASSE) MIN(0) PROMPT('SYSTEME :')
             PARM       KWD(DEST) TYPE(*CHAR) LEN(08) MIN(1) +       
                          PROMPT('DESTINATAIRE :')                   
             PARM       KWD(SEL) TYPE(*CHAR) LEN(16) PROMPT('Chaine +
                          de recherche (facult.)')                   
/* CE CL LIT LE LISTING, LE TRANSFORME EN                           */
/* FICHIER, OPERE UNE SELECTION, ET ENVOIE LE RESULTAT SOUS FORME   */
/* DE DISTRIBUTION OFFICEVISION RECUPERABLE PAR E-MAIL.             */
/* PARAMETRES :                                                     */
/*                                                                  */
PGM  PARM(&JOB &USER &NUMBER &FILE &SPLNBR &SYS &DEST &SEL)           
DCL &JOB TYPE(*CHAR) LEN(10)                                          
DCL &USER TYPE(*CHAR) LEN(10)                                         
DCL &NUMBER TYPE(*CHAR) LEN(6)                                        
DCL &FILE   TYPE(*CHAR) LEN(10)                                       
DCL &SPLNBR TYPE(*CHAR) LEN(5)                                        
DCL &SYS TYPE(*CHAR) LEN(08)                                          
DCL &DEST TYPE(*CHAR) LEN(08)                                         
DCL &SEL  TYPE(*CHAR) LEN(16)                                         
DCL VAR(&JOBUS) TYPE(*CHAR) LEN(10)                                   
             RTVJOBA                USER(&JOBUS)                      
                                                                      
/* CREE LE FICHIER TEMPORAIRE */                                      
DLTF FILE(QTEMP/SPLTMP)                                               
MONMSG CPF0000                                                        
CRTPF      FILE(QTEMP/SPLTMP) RCDLEN(192) SIZE(100000 32767)        
                                                                    
/* CREE   LE FICHIER SPOOL */                                       
             CPYSPLF    FILE(&FILE) TOFILE(QTEMP/SPLTMP) +          
                          JOB(&NUMBER/&USER/&JOB) SPLNBR(&SPLNBR) + 
                          MBROPT(*REPLACE)                          
             MONMSG     MSGID(CPF3342) EXEC(DO)                     
             SNDMSG     MSG('Les coordonnées ne correspondent à +   
                          aucun listing connu.') TOUSR(&JOBUS)      
                          ENDDO                                     
             MONMSG     MSGID(CPF3309) EXEC(DO)                     
             SNDMSG     MSG('Rien a lister.                     +   
                                              ') TOUSR(&JOBUS)      
                          ENDDO                                     
/* MENAGE            */                                             
DLTF QS36F/DG.LOG                                                   
MONMSG CPF0000                                                      
                                                                    
CPYF QTEMP/SPLTMP QS36F/DG.LOG CRTFILE(*YES)                        
DLTF FILE(QTEMP/SPLTMP)                                             
             MONMSG     MSGID(CPF0000)                              
                                                                      
                                                                      
/* DLTSPLF FILE(*SELECT) SELECT(*CURRENT *ALL *ALL &REF) */           
DLTF QS36F/DG.TXT                                                     
MONMSG CPF0000                                                        
IF COND(&SEL *NE *BLANK) THEN(DO)                                     
CPYF QS36F/DG.LOG QS36F/DG.TXT  CRTFILE(*YES) +                       
     INCCHAR(*RCD 1 *CT &SEL)                                         
     ENDDO                                                            
ELSE CPYF QS36F/DG.LOG QS36F/DG.TXT  CRTFILE(*YES)                    
                                                                      
DMAILF BIB(QS36F) FIC(DG.TXT) SYS(&SYS) DEST(&DEST) MSG('ETAT AS400, +
     VOIR PIECE-JOINTE')                                              
MONMSG CPF0000                                                        
                                                                      
DLTF QS36F/DG.LOG                                                     
MONMSG CPF0000                                                        
DLTF QS36F/DG.TXT                                                     
MONMSG CPF0000                                                        
 FIN:        ENDPGM                                                   

Cette version permet aussi d’envoyer un listing, mais concernant le job en cours : à faire lancer en batch dans la foulée par ledit job.

/* CE CL LIT LE LISTING QUI VIENT D'ETRE SORTI, LE TRANSFORME EN    */ 
/* FICHIER, OPERE UNE SELECTION, ET ENVOIE LE RESULTAT SOUS FORME   */ 
/* DE DISTRIBUTION OFFICEVISION RECUPERABLE PAR E-MAIL.             */ 
/* PARAMETRES : - REFERENCE (EX : QPDSPLOG POUR UN DSPLOG,          */ 
/*              - SYSTEME (NORMALEMENT : ASCHASSE)                  */ 
/*              - DESTINATAIRE.                                     */ 
/*              - CHAINE DE SELECTION.                              */ 
/*                                                                  */ 
PGM  PARM(&REF &SYS &DEST &SEL)                                        
DCL &REF TYPE(*CHAR) LEN(10)                                           
DCL &SYS TYPE(*CHAR) LEN(08)                                           
DCL &DEST TYPE(*CHAR) LEN(08)                                          
DCL &SEL  TYPE(*CHAR) LEN(16)                                          
CALL MGNEW/DGCPYSPLF PARM(&REF QS36F DG.LOG)                           
/* DLTSPLF FILE(*SELECT) SELECT(*CURRENT *ALL *ALL &REF) */            
DLTF QS36F/&REF                                                        
MONMSG CPF0000                                                         
IF COND(&SEL *NE *BLANK) THEN(DO)                                      
CPYF QS36F/DG.LOG QS36F/&REF    CRTFILE(*YES) +                        
     INCCHAR(*RCD 1 *CT &SEL)                                          
     ENDDO                                                          
ELSE CPYF QS36F/DG.LOG QS36F/&REF    CRTFILE(*YES)                  
                                                                    
DMAILF BIB(QS36F) FIC(&REF) SYS(&SYS) DEST(&DEST) MSG('ETAT AS400, +
     VOIR PIECE-JOINTE')                                            
MONMSG CPF0000                                                      
                                                                    
DLTF QS36F/DG.LOG                                                   
MONMSG CPF0000                                                      
DLTF QS36F/&REF                                                     
MONMSG CPF0000                                                      
 FIN:        ENDPGM                                                 

DGCPYSPLF, module utilisé par les précédents

/* TRANSFORME UN ETAT EN FICHIER                              */
/*                                                            */
PGM PARM(&REFER &LIB &FIC)
/* DECLARE LES PARAMETRES */
DCL VAR(&JOBNM) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBUS) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBNB) TYPE(*CHAR) LEN(06)
DCL VAR(&SPLNM) TYPE(*CHAR) LEN(10)
DCL VAR(&SPLNB) TYPE(*CHAR) LEN(05)
DCL VAR(&REFER) TYPE(*CHAR) LEN(10)
DCL VAR(&TITRE) TYPE(*CHAR) LEN(40)
DCL VAR(&LIB  ) TYPE(*CHAR) LEN(10)
DCL VAR(&FIC  ) TYPE(*CHAR) LEN(10)
/* ZONES DE TRAVAIL       */

MONMSG MSGID(CPF2105)

             RTVJOBA    JOB(&JOBNM) USER(&JOBUS) NBR(&JOBNB)
CHGVAR VAR(&SPLNB) VALUE('*LAST')

IF COND(&REFER *EQ *BLANK) THEN(CHGVAR VAR(&REFER) VALUE('LISTING'))
IF COND(&TITRE *EQ *BLANK) THEN(CHGVAR VAR(&TITRE) VALUE(&REFER))
CHGVAR VAR(&SPLNM) VALUE(&REFER)

/* CREE LE FICHIER TEMPORAIRE */
DLTF FILE(QTEMP/SPLTMP)
MONMSG CPF0000
CRTPF      FILE(QTEMP/SPLTMP) RCDLEN(192) SIZE(100000 32767)

/* CREE   LE FICHIER SPOOL */
             CPYSPLF    FILE(&SPLNM) TOFILE(QTEMP/SPLTMP) +
                          JOB(&JOBNB/&JOBUS/&JOBNM) SPLNBR(&SPLNB) +
                          MBROPT(*REPLACE)
             MONMSG     MSGID(CPF3342) EXEC(DO)
             SNDMSG     MSG('Les coordonnées ne correspondent à +
                          aucun listing connu.') TOUSR(&JOBUS)
                          ENDDO
             MONMSG     MSGID(CPF3309) EXEC(DO)
             SNDMSG     MSG('Rien a lister.                     +
                                              ') TOUSR(&JOBUS)
                          ENDDO
/* MENAGE            */
DLTF &LIB/&FIC
MONMSG CPF0000

CPYF QTEMP/SPLTMP &LIB/&FIC CRTFILE(*YES)
DLTF FILE(QTEMP/SPLTMP)
             MONMSG     MSGID(CPF0000)
ENDPGM
Examen et récupération directe des eMails

L’OS400 crée un répertoire correspondant au destinataire dans l’IFS. Avec WRKLNK, on peut visiter /QTCPTMM/MAIL

                          Gestion des liens d'objet
                                                                              
Répertoire . . . . :   /QTCPTMM/MAIL/CHAIGNEA

Indiquez vos options, puis appuyez sur ENTREE.
  3=Copier   4=Enlever       5=Niveau suivant   7=Rebaptiser
  8=Afficher les attributs   11=Modifier répertoire en cours...

Opt     Lien objet
        JW580146.NOT

        
        
        
        
        
        
        
                                                                           Fin
Paramètres ou commande
===>
F3=Exit           F4=Invite           F5=Réafficher   F9=Rappel   F12=Annuler
F17=A partir de   F22=Zone complète   F23=Autres options

Avec CPYFRMSTMF, l’objet peut être transféré dans un membre de fichier quelconque (dans cet exemple on le met dans DIV, membre de QCLSRC de la bibliothèque GUD) :

 ===> CPYFRMSTMF FROMSTMF('/QTCPTMM/MAIL/CHAIGNEA/JW580146.NOT') 
TOMBR('/QSYS.LIB/GUD.LIB/QCLSRC.FILE/DIV.MBR') MBROPT(*REPLACE)

Un CL pour faire le même travail :

PGM PARM(&USR &NUM &BIB &FIC &MBR)                                 
DCL &USR TYPE(*CHAR) LEN(10)                                       
DCL &NUM TYPE(*CHAR) LEN(16)                                       
DCL &CHAINF TYPE(*CHAR) LEN(64)                                    
DCL &BIB TYPE(*CHAR) LEN(10)                                       
DCL &FIC TYPE(*CHAR) LEN(10)                                       
DCL &MBR TYPE(*CHAR) LEN(10)                                       
DCL &CHAINT TYPE(*CHAR) LEN(64)                                    
CHGVAR VAR(&CHAINF) VALUE('/QTCPTMM/MAIL/' *TCAT &USR *TCAT +      
           '/' *TCAT &NUM *TCAT '.NOT')                            
CHGVAR VAR(&CHAINT) VALUE('/QSYS.LIB/' *TCAT &BIB *TCAT '.LIB' +   
      *TCAT  '/' *TCAT &FIC *TCAT '.FILE/' *TCAT &MBR *TCAT '.MBR')
CPYFRMSTMF FROMSTMF(&CHAINF)                  +                    
           TOMBR(&CHAINT)                                  +       
           MBROPT(*ADD)                                            
MONMSG CPF0000                                                     
ENDPGM                                                             

Le résultat, qui montre le goût croissant des utilisateurs pour la communication moderne. L’objet ligne 5, L’expéditeur ligne 9, le destinataire ligne 11, le texte lignes 21-24. Le premier est lyonnais, le second à l’agence 44 (Loire Atlantique).

Received: by ASCHASSE.TESTUD.FR (IBM AS/400 ANYMAIL/400 MIME V4R1M0) Tue, 18 Sep 2001  16:58:01 +0000
MIME-Version: 1.0
Date: Tue, 18 Sep 2001  16:58:01 +0000
Message-Id: <441BC0A0109181657520000000001@ASCHASSE.TESTUD.FR>
Subject: OL 4  FCN 1   DESOLE
Sensitivity: none
Priority: normal
Importance: normal
From: martin@ASCHASSE.TESTUD.FR
X-From-OFFICEVISION: <MARTIN ASCHASSE>
To: chaignea@ASCHASSE.TESTUD.FR
Content-Type: multipart/mixed;
 boundary="PART.BOUNDARY.1"

> THIS IS A MESSAGE IN 'MIME' FORMAT.  Your mail reader does not support MIME.
> You may not be able to read some parts of this message.

--PART.BOUNDARY.1
Content-ID: <1_1>
Content-Type: text/plain; charset=ISO-8859-1

OL 4  FCN 1   DESOLE


--PART.BOUNDARY.1--