Le web de Dominique Guebey – IBM AS/400 iSeries

Page : http://www.dg77.net/tekno/as400/transfer.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

Transferts de fichiers sur iSeries

Sommaire


IBM-IBM : utilisation d’un fichier DDM

DDM = Distributed Data Management. Voici un exemple de copie d’un fichier AS/400 vers AS/400. Avec certaines limitations, DDM peut être utilisé en liaison avec d’autres systèmes IBM.

Pour que DDM soit actif :

Exemple :

/* Cree le fichier DDM sur le systeme emetteur, faisant reference au 
systeme eloigne */
CRTDDMF FILE([mabibliotheque]/DGDDM) RMTFILE([bibliotheque]/nomfichier) +
        RMTLOCNAME([nom_systeme_ou_IP] *IP)
/* Copie directe avec creation sur le systeme distant                   */
CPYF FROMFILE([biblio]/[fichier]) TOFILE([mabibliotheque]/DGDDM) CRTFILE(*YES)            

Difficile de faire plus simple. Noter le paramètre *IP, à défaut de configuration SNADS.

Remarques :


IBM-IBM : utilisation de DRDA (SQL sur un système distant)

DRDA = Distributed Relational Database Architecture. Exemple : commandes SQL exécutés sur un autre AS/400 et sortie des données sur le système local.


SNA

Voir la page sur configuration SNADS [http://www.dg77.net/tekno/as400/as400sna.htm].

Pour mémoire, ajout d’un poste utilisateur dans le répertoire : ADDDIRE USRID(USER_ID SYSTEME) USRD('commentaire') USER(USER_ID)

Envoi (SNDNETF)

Envoi d’un programme à utilisateur Dupont sur système ADASH

CRTSAVF  FILE(TRANSFER)
SAVOBJ   OBJ(MONPROGRAM)  LIB(MABIBLIO)  SAVF(TRANSFER) +
    UPDHIST(*NO)  DTACPR(*YES)
SNDNETF  FILE(TRANSFER)  TOUSRID((DUPONT ADACH))
Réception (RCVNETF)
WRKNETF  /* En interactif, afficher et gerer les fichiers reseaux */
CRTSAVF  FILE(RECOIT)
RCVNETF  FROMFILE(TRANSFER)  TOFILE(RECOIT)
CRTLIB   LIB(MABIBLIO)
RSTOBJ   OBJ(MONPROGRAM)  SAVLIB(MABIBLIO)  SAVF(RECOIT)

Copie de fichier spool d’impression AS/400-AS/400

SNDNETSPLF

Cette commande suppose une configuration SNA avec inscription au répertoire de distribution (cf supra). Elle permet d'envoyer un listing sur un autre système, mais aussi de dupliquer un état sur le même AS/400 en l’envoyant à un autre utilisateur. Exemple : envoi d’un état de l’activité du système (QPDSPAJB est le nom du fichier spool créé par WRKACTJOB).

WRKACTJOB  OUTPUT(*PRINT)
SNDNETSPLF  FILE(QPDSPAJB)  TOUSRID(([nom] [systeme]))

Dans la gestion des fichiers spools (commande WRKSPLF — et aussi WRKOUTQ), une option est prévue pour lancer SNDNETSPLF (1=Envoyer).

Transfert via un fichier physique

Un pis aller à connaître. Etapes :

  1. Création d’un fichier physique : CRTPF  MABIBLIO/LISTING  RCDLEN(256).
  2. Copie du spool dans le fichier physique : CPYSPLF avec CTLCHAR(*FCFC)

    CPYSPLF = conversion d’un état spool en fichier physique. On doit en connaître l’identifiant. Par exemple avec l’option 8 dans WRKSPLF

                          Gestion de tous les fichiers spoule
    
     Indiquez vos options, puis appuyez sur ENTREE.                                 
       1=Envoyer   2=Modifier   3=Suspendre   4=Supprimer   5=Afficher   6=Libérer  
       7=Messages   8=Attributs   9=Gérer l'état d'impression
                                                                                    
    
                                  Unité ou                      Total   Pg en   Nb  
     Opt  Fichier     Utilisat    file        Référence   Etat  pages   cours   ex  
      8   QPDSPAJB    AKHMET      PRT01                   RDY      23            1  
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                Fin 
     Paramètres pour les options 1, 2, 3 ou commande                                
     ===> _________________________________________________________________________
     F3=Exit   F10=Vue 4   F11=Vue 2   F12=Annuler   F22=Imprimantes                
     F24=Autres touches                                                             
    

    Affichage : on trouve en tête les informations qui identifient le fichier spool.

                         Gestion d'attributs de fichier spoule                      
                                                                                    
     Travail  . . . . . . :   QPADEV000N      Fichier  . . . . . . :   QPDSPAJB     
       Utilisateur  . . . :     AKHMET          Numéro . . . . . . :     000001     
       Numéro . . . . . . :     792103        Date de création . . :   14/07/89     
     Nom système trav . . :   SYS400Z         Heure de création  . :   12:29:40     
                                                                                    
     Etat . . . . . . . . . . . . . . . . . :   PRET                                
     File d'attente en sortie . . . . . . . :   PRT01                               
       Bibliothèque . . . . . . . . . . . . :     QUSRSYS                           
     ASP contenant le fichier . . . . . . . :   1                                   
     Type d'imprimé . . . . . . . . . . . . :   *STD                                
     Priorité en sortie . . . . . . . . . . :   5                                   
     Exemplaires en attente d'impression  . :   1                                   
     Nombre total d'exemplaires . . . . . . :   1                                   
     Nombre maximal d'enregistrements . . . :   100000                              
     Nombre de séparateurs  . . . . . . . . :   0                                   
     Disponibilité du fichier . . . . . . . :   *FILEEND                            
     Suspendre le fichier avant écriture  . :   *NO                                 
                                                                        A suivre... 
     Appuyez sur ENTREE pour continuer.                                             
                                                                                    
     F3=Exit   F5=Réafficher   F12=Annuler   F13=Modifier                           
    

    Commande de copie de l’état dans un fichier physique

                           Copier un fichier spoule (CPYSPLF)                       
                                                                                    
     Indiquez vos choix, puis appuyez sur ENTREE.                                   
                                                                                    
     Fichier spoule . . . . . . . . . > QPDSPAJB      Nom                           
     Fichier BD de destination  . . . > DIV           Nom                           
       Bibliothèque . . . . . . . . . >   AKHMET_WRK  Nom, *LIBL, *CURLIB           
     Travail  . . . . . . . . . . . . > QPADEV000N    Nom, *                        
       Utilisateur  . . . . . . . . . >   AKHMET      Nom                           
       Numéro . . . . . . . . . . . . >   792103      000000-999999                 
     Numéro de fichier spoule . . . . > 1             1-999999, *ONLY, *LAST, *ANY  
     Nom de système de travail  . . .   *ONLY         Nom, *ONLY, *CURRENT, *ANY    
     Fichier spoule créé:                                                           
       Date de création . . . . . . .   *ONLY         Date, *ONLY, *LAST            
       Heure de création  . . . . . .                 Heure, *ONLY, *LAST           
     Membre de destination  . . . . .   *FIRST        Nom, *FIRST                   
     Remplacement ou ajout enregs . .   *REPLACE      *REPLACE, *ADD                
                                                                                    
                                                                                    
                                                                                    
                                                                                Fin 
     F3=Exit   F4=Invite   F5=Réafficher   F10=Autres paramètres   F12=Annuler      
     F13=Mode d'emploi invite              F24=Autres touches                       
    

    F10 pour avoir les paramètres complémentaires

                           Copier un fichier spoule (CPYSPLF)                       
                                                                                    
     Indiquez vos choix, puis appuyez sur ENTREE.                                   
                                                                                    
                                                                                    
                                Autres paramètres                                   
                                                                                    
     Caractère de contrôle  . . . . .   *fcfc         *NONE, *FCFC, *PRTCTL...      
     Valeurs canal:                                                                 
       Canal  . . . . . . . . . . . .   *NORMAL       1-12, *NORMAL                 
       Ligne  . . . . . . . . . . . .                 1-255                         
                  + si autres valeurs                                               
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                                                                Fin 
     F3=Exit   F4=Invite   F5=Réafficher   F12=Annuler   F13=Mode d'emploi invite   
     F24=Autres touches                                                             
    
  3. Inclusion dans un traîtement batch : pour copier le dernier spool créé par le travail en cours, on a juste besoin de connaître le nom du fichier spool : CPYSPLF  QPDSPAJB  MABIBLIO/NOMFICHIER  SPLNBR(*LAST)  CTLCHAR(*FCFC)
  4. Sauvegarde / Restauration ou envoi par tout autre moyen
  5. Installation dans le spool utilisateur de l’état récupéré depuis le PF :
    OVRPRTF (QSYSPRT) CPI(15) CTLCHAR(*FCFC)
    CPYF (fichier) TOFILE(QSYSPRT)
    

FTP et AS/400

FTP interactif
/* création du fichier de sauvegarde local  */
  5 > crtsavf mabiblio/sauve      
/* ou :                                    */     
  5 > clrsavf mabiblio/sauve             
/* sauvegarde                              */     
  5 > SAVOBJ OBJ(NOMFICHIER) LIB(BIBLIO) DEV(*SAVF) SAVF(MABIBLIO/SAUVE)
/* lance FTP                               */
  5 > STRTCPFTP RMTSYS(NOMSYSTEM)                                     

Envoi du *SAVF et restauration sur le système distant. Grâce à QUOTE RCMD, tout se fait depuis le système émetteur pendant la session FTP, y compris le CRTSAVF et la restauration (RSTOBJ).

                            File Transfer Protocol                      
                                                                        
Previous FTP subcommands and messages:                                  
  Connecting to host SYSTEM2 at address 192.168.1.2 using port 21.      
  220-QTCP at SYSTEM2.                                                  
  220 Connection will close if idle more than 5 minutes.                
>> > > alfons                                                                
  331 Enter password.                                                   
  230 ALPHONS logged on.                                                
   OS/400 is the remote operating system. The TCP/IP version is "V5R3M0".
  250  Now using naming format "0".                                      
  257 "QGPL" is current library.                                         
>> > > lcd mabiblio                                                           
  Local working directory is MABIBLIO                                    
>> > > cd biblio                                                              
  250 "BIBLIO" is current library.                                       
>> > > quote rcmd crtsavf biblio/sauve             
  250 Command crtsavf biblio/sauve successful.
>> > > binary                                                                  
  200 Representation type is binary IMAGE.                                
>> > > put trans                                                               
  227 Entering Passive Mode (192,168,1,2,248,241).                        
  150 Sending file to member TRANS in file TRANS in library BIBLIO.       
  250 File transfer completed successfully.                               
>> > > quote rcmd rstobj *all biblio dev(*savf) savf(biblio/sauve)             
  250 Command rstobj *all biblio dev(*savf) savf(biblio/sauve) successful.
>> > > close                                                                   
  221 QUIT subcommand received.                                           
Enter an FTP subcommand.                                                  
===> quit ________________________________________________________________
__________________________________________________________________________
__________________________________________________________________________
F3=Exit     F6=Print       F9=Retrieve                                    
F17=Top    F18=Bottom    F21=CL command line                              
FTP batch

Un transfert FTP peut être automatisé. On trouvera plusieurs exemples dans ces pages :


Utilisation de FTS

Programme QSYS/QY2FTML. FTS peut être utilisé sur tout type de ligne de communication. Utilisable par exemple pour des échanges avec des S/36 implantés dans des lieux déshérités.

CALL PGM(QY2FTML) PARM('S' 'USRID     ' 'QPRTFSRC  ' 'NOM_MEMBRE' 
'      ' 'USRID     ' 'QPRTFSRC  ' 'NOM_MEMBRE' '      ' ' ' 'NOM_BIBLIO' 
'MOTDEPASSE' ' ' '        ')                                                     

Liste des paramètres pour transfert AS/400 à AS/400

  1. OPTION (1 car.) : S=envoie, R=reçoit
  2. FROMLIB (10 car.) : bibl. émission
  3. FROMFILE (10 car.) : fichier émission
  4. FROMMBR (10 car.) : membre émis
  5. TYPE (6 car.) : blanc
  6. TOLIB (10 car.) : bibl. réception
  7. TOFILE (10 car.) : fichier réception
  8. TOMBR (10 car.) : membre reçu
  9. TODATE (6 car.) : blanc
  10. REPLACE (1 car.) : Y=remplace, sinon N.
  11. RMTLOCNAME (8 car.) : nom de lieu éloigné
  12. PASSWORD (10 car.) : mot de passe
  13. RTNCODE (1 car.) : code retour (0=ok, 1=erreur locale, 2=erreur sur système éloigné)
  14. MESSAGE-ID (8 car.) : id. message erreur.

SAVRST (sauvegarde locale + restauration distante automatique)

Les facilités apportées par TCP/IP n’empêchent pas qu’une bonne configuration SNA peut toujours rendre de signalés services. SAVRST en est la preuve. Cette commande permet, en une seule instruction, de créer une sauvegarde, la transférer puis de procéder à la restauration.

SAVRST :

Exemples :

SAVRST  RMTLOCNAME(SYSTEM2) OBJ(('QSYS.LIB/MABIBLIO.LIB/MONFICHIER.FILE/MONFICHIER.MBR'))
Envoie sur la machine SYSTEM2 MONFICHIER de la bibliothèque MABIBLIO.
SAVRST RMTLOCNAME(SYSTEM2) OBJ(('MONREP')) SAVACT(*YES) SAVACTMSGQ('QSYS.LIB/SIGNAL.LIB/MESMSG.MSGQ') CRTPRNDIR(*YES)
Envoi du répertoire MONREP (du répertoire en cours) sur SYSTEM2. SAVACT autorise l’utilisation de l’objet en cours de sauvegarde. Les messages sont mis dans la file MESMSG de la bibliothèque SIGNAL. CRTPRNDIR(*YES) permettra la création des répertoires parents s’ils n’existent pas.

AS400-AS400 : montage automatique d’IFS distant (QfileSvr.400)

L’IFS contient un répertoire /QfileSvr.400, d’une redoutable utilité. Supposons que nous sommes sur SYSTEM1, relié par TCP/IP sans plus à SYSTEM2 (Les sous-systèmes QSERVER sont bien sûr actifs). Supposons encore que mon userid existe sur SYSTEM2, avec le même mot de passe. Sous réserve de disposer de droits suffisants, je vais pouvoir exécuter ce qui suit :

 Option ou commande                      
 ===> MKDIR DIR('/QfileSvr.400/SYSTEM2') 

Alors, avec wrklnk '/QfileSvr.400/SYSTEM2/*', que vois-je ?

                          Gestion des liens d’objet
                                                                                
 Répertoire . . . . :   /QfileSvr.400/SYSTEM2                                   
                                                                                
 Indiquez vos options, puis appuyez sur ENTREE.                                 
   2=Réviser   3=Copier       4=Enlever   5=Afficher   7=Rebaptiser             
   8=Afficher les attributs   11=Modifier répertoire en cours...                
 
 Opt   Lien objet             Type     Attribut     Texte
       bin                    DIR                                               
       c5103530               DIR                                               
       dev                    DIR                                               
       etc                    DIR                                               
       home                   DIR                                               
       md                     DIR                                               
       mdu                    DIR                                               
       olcopenserver          DIR                                               
       pdf                    DIR                                               
                                                                    A suivre... 
 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                       

L’IFS de SYSTEM2 !

Que s’est-il passé ? l’accès par QfileSvr.400 correspond au montage d’une arborescence, ce à quoi les UNIXiens sont familiers. Noter que le lien créé par MKDIR disparaît à chaque IPL. /QNTC connaît le même phénomène : la section sur QNTC indique les moyens de recréer le lien automatiquement.

Résultat : tout est presque permis, sans configuration SNA ni serveur FTP. Les administrateurs qui liront des lignes comprendront désormais (si ce n’était pas encore le cas) l’intérêt d’une bonne politique de profilage des utilisateurs, autorisations, autorités et privilèges divers...

Quelques possibilités :


Transfert AS400-PC par QNTC

Intérêt de QNTC

Dans l’IFS (Integrated File System), /QNTC permet d’observer et d’utiliser directement depuis l’AS/400-iSeries des partages de fichiers sur PC.

Les informations qui suivent utilisent une configuration Windows XP.

Conditions d’utilisation de QNTC
Informations communes au PC et à l’AS400
  • Un même domaine
  • Existence d’un id. utilisateur identique avec le même mot de passe.
Sur le PC, avoir un « dossier partagé »
Voir Propriétés du dossier > Onglet Partage > Cocher "Partager ce dossier", et indiquer le nom qui ifentifiera le dossier sur le réseau. Ce nom peut être différent du nom local.
Sur le PC encore, vérifier les noms de l’ordinateur et du domaine NT (à défaut : le groupe de travail).
Pour connaître le nom de domaine : Démarrer > Paramètres > Panneau de configuration > Système > Onglet "nom de l’ordinateur" : on doit voir le nom complet et le nom de domaine. Le nom complet se compose de [nom de l’ordinateur].[nom de domaine], par exemple TARDOL24.testud.
Sur le PC toujours, vérifier le nom d’utilisateur et éventuellement, adapter le mot de passe.
Enfoncer les touches [Ctrl] + [Alt] + [Suppr]. Le panneau qui s’affiche indique "xxxxxxxxx a ouvert une session en tant que yyyyyy\zzzzzz". zzzzzz est le nom utilisateur qui doit exister aussi sur l’AS400. Le bouton "Modifier le mot de passe" permet éventuellement de mettre le même mot de passe que sur l’AS400.
Gestion des comptes utilisateurs sur le PC
Méthode 1 : Démarrer > Paramètres > Panneau de configuration > Comptes d’utilisateurs
Méthode 2 : Démarrer > Paramètres > Panneau de configuration > Outils d’administration > Gestion de l’ordinateur > Utilisateurs et groupes locaux
Méthode 3 : Demander à l’administrateur...
Sur l’AS400 le netserver doit être démarré
STRHOSTSVR *ALL
Mieux : dans iSeries Access (alias Client Access) : Mes connexions > Réseau > Serveurs > TCP/IP > iSeries Netserver > "Clic-droit" > Démarrage
Sur l’AS400 le netserver doit appartenir au même domaine que le PC
Toujours dans "iSeries Netserver" avec iSeries Access, Propriétés > Onglet "Général", si "Nom du domaine" n’est pas correct, cliquer sur "Prochain démarrage" et mettre à jour les zones : nom du serveur, nom du domaine. Il est préférable de cocher "Démarrer en même temps que TCP/IP".
Puis redémarrer le serveur.
Sur l’AS400, existence d’un utilisateur avec le bon mot de passe
Utiliser par exemple WRKUSRPRF. Le mot de passe se modifie en cours de sessions avec CHGPWD.
Exploitation de QNTC
Création du sous répertoire correspondant au PC-serveur
 CRTDIR 'QNTC/Nom_du_PC' 
IMPORTANT
Le contenu de QNTC est effacé après chaque IPL. Il conviendra donc d’ajouter le CRTDIR dans le QSTRUP pour qu’il soit régénéré à chaque démarrage. Ou encore, par exemple, de lancer la création au début de chaque CL qui en a besoin (suivi de MONMSG CPF0000)
Démonstration
La configuration a été faite pour le PC "TARDOL24". Résultat d’un  WRKLNK '/QNTC/*  :
                          Gestion des liens d'objet                            
                                                                               
Répertoire . . . . :   /QNTC                                                   
                                                                               
Indiquez vos options, puis appuyez sur ENTREE.                                 
  2=Réviser   3=Copier       4=Enlever   5=Afficher   7=Rebaptiser             
  8=Afficher les attributs   11=Modifier répertoire en cours...                
                                                                               
Opt   Lien objet             Type     Attribut     Texte                       
      TARDOL24               DDIR                                              
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                               
                                                                           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                       
Lecture du partage
Etant sous le bon profil utilisateur, la commande  WRKLNK '/QNTC/Nom_du_PC/Nom_du_partage/*' , doit montrer la liste des fichiers qui se trouvent sur le PC dans le "dossier" partagé.
                           Gestion des liens d'objet                            
                                                                                
 Répertoire . . . . :   /QNTC/TARDOL24/voy                                       
                                                                                
 Indiquez vos options, puis appuyez sur ENTREE.                                 
   2=Réviser   3=Copier       4=Enlever   5=Afficher   7=Rebaptiser             
   8=Afficher les attributs   11=Modifier répertoire en cours...                
                                                                                
 Opt   Lien objet             Type     Attribut     Texte                       
       div.xls                DSTMF                                             
       wdsc.txt               DSTMF                                             
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                            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                       
Envoi rapide d’un fichier sur le PC

Pour permettre l’utilisation de CPYTOSTMF, le fichier est d’abord copié dans un fichier sans description externe. Noter le code page *PCASCII


  2 > CRTPF FILE(MABIBLIO/TEMP) RCDLEN(1024)          
      Fichier TEMP créé dans la bibliothèque MABIBLIO.
      Membre TEMP ajouté au fichier TEMP de MABIBLIO.     
  2 > CPYF MABIBLIO/OFPTPF MABIBLIO/TEMP  MBROPT(*REPLACE) FMTOPT(*NOCHK)  
      Longueur de la mémoire tampon supérieure à enreg pour membre OFPTPF.      
      100 enregistrement(s) du membre OFPTPF copié(s).                          
  2 > CPYTOSTMF FROMMBR('/QSYS.LIB/MABIBLIO.LIB/TEMP.FILE/TEMP.MBR') TOSTMF 
      ('/QNTC/TARDOL24/voy/ofpt.txt') STMFCODPAG(*PCASCII)                       
      Objet copié.                                                              
  2 > CPYTOSTMF FROMMBR('/QSYS.LIB/MABIBLIO.LIB/TEMP.FILE/TEMP.MBR') TOSTMF
      ('/QNTC/TARDOL24/voy/ofpt.txt') STMFOPT(*REPLACE) STMFCODPAG(*PCASCII)    
      Objet copié.                                                             

Automatisation

Un CL pour envoyer tout fichier BD :

PGM (&NOMFIC &NOMBIB)                                                  
DCL &NOMFIC *CHAR 10                                                   
DCL &NOMBIB *CHAR 10                                                   
DCL &WTOSTM *CHAR 50                                                   
                                                                       
DLTF  QTEMP/TOQNTC
MONMSG CPF0000
CRTPF FILE(QTEMP/TOQNTC) RCDLEN(1024)                                  
MONMSG CPF0000                                                         
                                                                       
CPYF &NOMBIB/&NOMFIC QTEMP/TOQNTC  MBROPT(*REPLACE) FMTOPT(*NOCHK)     
MONMSG CPF0000                                                         
                                                                       
CHGVAR &WTOSTM ('/QNTC/TARDOL24/VOY/' *TCAT &NOMFIC *TCAT '.TXT')       
CRTDIR ('/QNTC/TARDOL24')  /* LES LIENS DANS QNTC DISPARAISSENT      */
MONMSG CPF0000             /* A CHAQUE IPL                           */
CPYTOSTMF FROMMBR('/QSYS.LIB/QTEMP.LIB/TOQNTC.FILE/TOQNTC.MBR')   +
          TOSTMF(&WTOSTM) STMFOPT(*REPLACE) STMFCODPAG(*PCASCII)                       
                                                                       
ENDPGM                                                                 

Le problème est que les échanges de données avec QNTC doivent se faire sous un profil utilisateur spécifique. Pour y satisfaire, l’envoi en batch permet d’utiliser le profil du partage grâce au paramètre USER.


SBMJOB CMD(CALL PGM(Nom_du_cl) PARM(Nom_fichier Nom_bibliotheque)) USER(userid)

Sinon il faudra jouer avec les API IBM QSYGETPH et QWTSETP... En guise de mise en bouche, voir notre CL de contrôle de profil et mot de passe. [http://www.dg77.net/tekno/as400/as400prf.htm]

Sauvegarde bibliothèque envoyée au réseau

Ce CL sauvegarde une bibliothèque sous forme de fichier *SAVF, et envoie ce dernier sur un PC via QNTC.

PGM (&NOMBIB)
DCL &NOMBIB *CHAR 10
DCL &WTOSTM *CHAR 50
DCL &CMDPC  *CHAR 50

CRTSAVF QTEMP/SVBIB
MONMSG  CPF0000
CLRSAVF QTEMP/SVBIB
MONMSG  CPF0000
SAVLIB  &NOMBIB *SAVF SAVF(QTEMP/SVBIB)
MONMSG  CPF0000

CHGVAR &WTOSTM ('/QNTC/TARDOL24/VOY/' *TCAT &NOMBIB *TCAT '.SAVF')

CRTDIR ('/QNTC/TARDOL24')  /* LES LIENS DANS QNTC DISPARAISSENT */
MONMSG CPF0000             /* A CHAQUE IPL                      */

CPYTOSTMF  '/QSYS.LIB/QTEMP.LIB/SVBIB.FILE' &WTOSTM +
           STMFOPT(*REPLACE) STMFCODPAG(*PCASCII)
MONMSG  CPF0000
DLTF    QTEMP/SVBIB
MONMSG  CPF0000
ENDPGM

Client Access/iSeries ACCESS

Intégration dans Excel

Intervention si fonction non activée. Pour avoir les transferts de fichiers dans la barre d’outils : Menu Outils > Add-Ins > Macro complémentaire > parcourir > sélectionner cwbtfxla.xll dans le répertoire Program Files\IBM\Client Access\Shared > OK. > "Transfert de Données pour iSeries" doit être coché.

A partir de ce moment, on peut charger automatiquement un fichier dans EXCEL à partir d’un transfert iSeries-Access.

Avertissement

Il est possible d’automatiser des transferts utilisant iSeries Access. Pour qu’ils fonctionnent, une connexion doit avoir été établie sur le PC avec l’AS/400. Veiller à ce que ce soit fait avant (par exemple) de partir en week-end, sinon le lundi matin on risque de retrouver le PC attendant depuis le vendredi soir un userid et mot de passe... D’une façon générale il faut ouvrir une connexion (par exemple en lançant un transfert de fichier pour rien) après chaque redémarrage du poste concerné.

Pour contourner le problème, avoir sur le PC un userid + mot de passe existant sur l’AS/400, et configurer de façon idoine la connexion dans iSeries Navigator (dans Propriétés, cf onglet Connexion).

Créer un transfert iSeries vers PC.
Accès à la fonction
Démarrer > Programmes > IBM iSeries Access for Windows > Transfert de données à partir d’un serveur iSeries
Propriétés
Onglet "Conversion" : cocher « convertir le CCSID 65535 »
Onglet "Liste des bibliothèques" : on peut ajouter des noms pour faciliter la recherche qui suit
Ongle "Démarrage" : cocher "exécution automatique" permet de lancer le transfert sans l’ouvrir. Ce qui permet de l’envoyer depuis l’AS/400 ou en cliquant dessus. Ou encore par la commande START ou CWBTF.
Sélection Système-bibliothèque-fichier-membre
Sélectionner l’AS400 parmi tous ceux de votre écurie
Nom du fichier : sous la forme biblio/fichier(membre). On peut s’aider avec le bouton "Survol".
Options de données
Permet d’effectuer des opérations SQL sur le(s) fichier(s) choisi.
Unité de sortie
On a le choix entre l’affichage à l’écran, la sortie sur imprimante, l’insertion dans une page html simplifiée, et la sortie sur un fichier disque.
Format de sortie et fichier transfert
Dans le cas de la sortie d’un fichier, le bouton "Détails" permet de spécifier le type de données : texte ASCII ou UNICODE, séparateurs par une virgule ou tabulation.
Il faut en indiquer la localisation et le nom du fichier. Le bouton "Survol" aide à choisir l’emplacement.

A la fermeture du transfert, il est possible de sauvegarde les paramètres utilisés dans un fichier portant l’extension .DTF.

Transfert de données PC vers la base de données AS/400
Création d’une définition de fichier (FDF)

Le fichier de départ est supposé être en simple texte. Une description est nécessaire pour convertir les différents champs en packé etc. et tenant compte des CCSID. Un fichier .FDF (format definition file) contient ces informations. Il est créé simplement en réalisant un transfert AS/400-PC comme indiqué supra.

A défaut de description, le fichier envoyé sur l’AS/400 sera copié en tant que fichier source.

Exécution du transfert
Mémorisation du transfert

A la fermeture du transfert, il est possible de sauvegarde les paramètres utilisés dans un fichier portant l’extension .DTT.

Commandes PC pour lancer les transferts
RTOPCB, transfert AS/400 vers PC.
Utilise un .DTF ou un .TTO. Exemple : RTOPCB c:\temp\chtkt.tto. Entrer RTOPCB seul dans une invite de commande PC pour voir l’aide donnant les options. Il est possible d’indiquer un fichier contenant une liste de transferts.
RFROMPCB, transfert PC vers AS/400.
Utilise un .DTT ou un .TFR. Même principe que pour RTOPCB.
Lancement d’un transfert depuis une session interactive

Dans un programme qui s’exécute à l’écran 5250, on peut lancer un batch PC (et donc un transfert comme ci-dessus) à l’aide des commandes d’intégrateur STRPCO et STRPCCMD. Exemple :

0031.00          /* Transfere fichier puis le renomme */
0032.00          CHGVAR     VAR(&FILE_NEW) VALUE('NOMF' *TCAT &NUM )
0033.00          CHGVAR     VAR(&DIR) VALUE('\\mon_serveur\d\bin\archive\')
0034.00          CHGVAR     VAR(&CMD) VALUE(&DIR *TCAT 'TRANS305.DTF')
0035.00          STRPCO     /* DEMARRE INTEGRATEUR ISERIES ACCESS SUR LE PC */
0036.00          MONMSG     MSGID(CPF0000)
0037.00          STRPCCMD   PCCMD(&CMD)   PAUSE(*yes) /* TRANSFERE LE FICHIER */
0038.00          CHGVAR     VAR(&CMD) VALUE(&DIR  *TCAT 'monbat.BAT' *BCAT &FILE_NEW)
0039.00          STRPCCMD   PCCMD(&CMD) PAUSE(*yes)   /* LANCE BATCH SUR LE PC */
Lancement d’un transfert depuis un batch

L’intégrateur iSeries-Access utilisé précédemment (cf utilisation de STRPCO/STRPCCMD) ne fonctionne qu’en interactif. Pour une tâche qui tourne en batch, la situation n’est pourtant pas désespérée, grâce à RUNRMTCMD. Cette commande s’utilise avec des systèmes reliés par SNA, ou encore simplement par TCP/IP mais à condition que le service RPC tourne sur le système MS Windows de destination.

RUNRMTCMD accèdera au PC sous réserve d’avoir indiqué (paramètres RMTUSER et RMTPWD) un nom d’utilisateur et un mot de passe valables. Dans l’exemple ci-dessous, on lance un transfert dont le nom est passé en paramètre (variable &TRANSF). L’ordinateur de destination est joint par TCP/IP, son nom Console est identifié par la Table d’hôte ou par le serveur DNS.

PGM        PARM(&TRANSF) /* Nom du transfert passe en parametre */
DCL        VAR(&TRANSF) (*CHAR) LEN(20)
DCL        VAR(&CMD) TYPE(*CHAR) LEN(2000)
CHGVAR     VAR(&CMD) VALUE('RTOPCB' *BCAT &TRANSF)
RUNRMTCMD  CMD(&CMD) RMTLOCNAME('Console' *IP) RMTUSER(CONSADMIN) RMTPWD(ZRG006)
monmsg cpf0000
ENDPGM