Transferts de fichiers sur iSeries
Sommaire
- IBM-IBM : utilisation d’un fichier DDM |
- IBM-IBM : utilisation de DRDA (SQL sur un système distant) |
- SNA |
- Envoi de fichier spool d’impression AS/400-AS/400 |
- FTP et AS/400 |
- Utilisation de FTS |
- SAVRST (sauvegarde locale + restauration distante automatique) |
- AS400-AS400 : montage automatique d’IFS distant (QfileSvr.400) |
- QNTC et partages SMB |
- Client ACCESS/iSeries ACCESS |
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 :
- Existence de la fonction : WRKJOB QRWTSRVR
- Lancement du serveur : STRTCPSVR *DDM
- Fixer le niveau de sécurité : CHGDDMTCPA PWDRQD(*NO) (pas de mot de passe demandé – utile en phase de test).
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 :
- Le fichier éloigné n’a pas besoin d’exister au moment du CRTDDMF.
- C'est un CPYF (copie de fichier), ne fonctionnera pas avec un SAVF, (utiliser plutôt SNDNETF, cf infra)
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.
- Conditions : le support DDM doit fonctionner.
- Configuration :
- Déterminer le nom de la BD sur l’AS/400 distant :
- Avec la cde WRKRDBDIRE [Entrée] : le nom de la base de donnée est indiquée sur la ligne *LOCAL
Gestion des postes de bases de données relationnelles Afficher à partir de . . __________________ Indiquez vos options, puis appuyez sur ENTREE. 1=Ajouter 2=Modifier 4=Enlever 5=Afficher détails 6=Imprimer détails Lieu Option Poste éloigné Texte _ __________________ _ TARPON_BD *LOCAL _ EXTMIRROR DEVPOUF F3=Exit F5=Réafficher F6=Imprimer liste F12=Annuler
- Avec iSeries navigator : Mes connexions > développer le système > Bases de données
- Avec la cde WRKRDBDIRE [Entrée] : le nom de la base de donnée est indiquée sur la ligne *LOCAL
- Ajouter un poste à la liste des Bases de Données :
- Commande WRKRDBDIRE option 1 ; ou ADDRDBDIRE [Entrée] : ADDRDBDIRE NOMBASE RMTLOCNAME('129.129.129.129' *IP) TEXT('[Texte libre]')
- Par iSeries Navigator : clic droit sur Bases de données dans le panneau de gauche, choisir Nouveaux > Poste de répertoire de base de données relationnelles.
- Déterminer le nom de la BD sur l’AS/400 distant :
- Utilisation avec SQL (exemple en mode interactif) :
- STRSQL [Entrée]
- F13 (ou : maj + F1)
- 1 (Modification des attributs de session)
- Sortie SELECT : mettre 3 (Fichier) [Entrée]
- Entrer un nom de fichier et de bibliothèque en sortie ; option conseillée : "2" (remplacer le fichier s’il existe) "5" permet d’ajouter si les besoins du travail le demandent.
- Commande de connexion SQL sur l’autre système : CONNECT TO [Nom_BD] USER Nom_user USING '[psw]'. Les commandes SQL qu’on entre maintenant s’exécutent sur le système distant, mais la sortie se fait dans le fichier local qui a été défini précédemment.
- Passer à la base de donnée locale : SET CONNECTION [nom_bdd]
- Savoir quelle BDD on travaille : CONNECT
- Mettre fin à la liaison : DISCONNECT
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 :
- Création d’un fichier physique : CRTPF MABIBLIO/LISTING RCDLEN(256).
- 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
- 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)
- Sauvegarde / Restauration ou envoi par tout autre moyen
- 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 :
- Rafraîchissement du système de développement [http://www.dg77.net/tekno/as400/as400ftp.htm]
- « log FTP alimenté par SQL ». [http://www.dg77.net/tekno/as400/ftpsql.htm]
- « Extraction de fichiers sur AS/400-iSeries puis envoi par FTPiSeries ». [http://www.dg77.net/tekno/as400/cl_sqlftp.htm]
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
- OPTION (1 car.) : S=envoie, R=reçoit
- FROMLIB (10 car.) : bibl. émission
- FROMFILE (10 car.) : fichier émission
- FROMMBR (10 car.) : membre émis
- TYPE (6 car.) : blanc
- TOLIB (10 car.) : bibl. réception
- TOFILE (10 car.) : fichier réception
- TOMBR (10 car.) : membre reçu
- TODATE (6 car.) : blanc
- REPLACE (1 car.) : Y=remplace, sinon N.
- RMTLOCNAME (8 car.) : nom de lieu éloigné
- PASSWORD (10 car.) : mot de passe
- RTNCODE (1 car.) : code retour (0=ok, 1=erreur locale, 2=erreur sur système éloigné)
- 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 :
- S’applique à deux systèmes membres d’un réseau APPN.
- Utilise la syntaxe IFS, que nul n’est censé ignorer au XXIe siècle.
- Utilise les fonctionnalités de SAVOBJ et RSTOBJ.
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 :
- Copie de fichiers à la souris (« drag and drop ») d’un AS/400 à l’autre. Utilisable dans iSeries Navigator (ex-Operation Navigator d’iSeries-Access).
- Après création d’un partage SMB sur l’AS/400 local (toujours avec iSeries Navigator) : accès distant possible par un poste Windows ou Linux (via un « lecteur réseau ») à votre AS/400 de l’agence de Dar-Es-Salaam même si cette machine n’est pas membre du même réseau que le PC !
- Accès par WRKLNK. Exemple : copie sur un répertoire local par l’option 3 [F4].
- Manipulations directes dans QSHELL. Ex : cp /QfileSvr.400/SYSTEM2/home/compta/*.pdf /home/mondossier
- Envoi d’objets mis dans un SAVF :
>>>> >> >> CPY '/qsys.lib/mabiblio.lib/sauve.file' '/QfileSvr.400/system2/qsys.lib/biblio.lib' REPLACE(*yes)
- Copie par CPYTOSTMF à partir d’un membre de fichier OS/400. Il y a quelques
restrictions (seulement fichiers sources ou sans DDS ; et ne pas oublier de modifier
les droits après la copie si on veut que d’autres y aient accès).
CPYTOSTMF '/qsys.lib/mabiblio.lib/qrpglesrc.file/nomprogramme.mbr' '/QfileSvr.400/system2/qdls/mondossier/listprog.txt' STMFOPT(*REPLACE) STMFCODPAG(*PCASCII)
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.
- Dans la 2de partie (PC), actionner le bouton Détails.
- Sous Fichier de description du fichier PC, cocher « sauvegarde de la description du transfert ». Indiquer un nom et éventuellement un emplacement.
A défaut de description, le fichier envoyé sur l’AS/400 sera copié en tant que fichier source.
Exécution du transfert
- (Par exemple) Clic droit > Nouveau > Transfert de données vers un serveur iSeries > Suivant.
- Renseigner le chemin+nom du fichier PC à envoyer > Suivant > Voulez vous utiliser un fichier de description de fichier pour ce transfert ? > Cocher « Oui » > Suivant.
- Renseigner le chemin+nom du fichier .FDF > Suivant.
- Identifier le serveur iSeries de destination (liste définie dans iSeries Navigator) > Suivant.
- Renseigner le fichier de destination, sous la forme bibliothèque/fichier(mambre). > Suivant.
- Cocher l’option voulue (Création du fichier, création de membre, remplacement de membre, ajout dans un membre existant) > Suivant.
- Terminer : le transfert s’exécute.
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