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 :
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
- Avec iSeries navigator : Mes connexions > développer le système > Bases de données
- 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
Réception (RCVNETF)
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).
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
Affichage : on trouve en tête les informations qui identifient le fichier spool.
Commande de copie de l’état dans un fichier physique
F10 pour avoir les paramètres complémentaires
- 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 :
FTP et AS/400
FTP interactif
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).
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.
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 :
Alors, avec wrklnk '/QfileSvr.400/SYSTEM2/*', que vois-je ?
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 :
- 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).
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/* :
- 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é.
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
Automatisation
Un CL pour envoyer tout fichier BD :
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.
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.
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 :
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.