> Tech > Transférer des fichiers entre QSYS.LIB et l’IFS

Transférer des fichiers entre QSYS.LIB et l’IFS

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

Un autre aspect crucial de l'IFS est de pouvoir faciliter le partage des ressources iSeries. Et, sans aucun doute, certaines de ces ressources les plus importantes sont les fichiers base de données provenant du système de fichiers QSYS.LIB. Vous pouvez exécuter les commandes CL pour transférer un fichier base de

Transférer des fichiers entre QSYS.LIB et l’IFS

données d’une bibliothèque iSeries dans l’IFS,
où on pourra l’importer facilement dans diverses applications
PC, comme Excel, Word, ou autres programmes de manipulation
et de reporting de données personnalisés.
La meilleure commande pour transférer des données de
fichiers base de données présents dans le système de fichiers
QSYS.LIB vers l’IFS, est CPYTOIMPF (Copy to Import File).
La commande CPYTOSTMF (Copy to Stream File) permet
aussi de copier des fichiers base de données iSeries dans des
fichiers stream, et elle permet aussi la conversion des jeux de
caractères. Malheureusement, CPYTOSTMF ne fonctionne
que pour les membres de fichiers source et pour les fichiers
base de données décrits par programme. Elle ne fonctionne pas avec des fichiers base de données décrits en externe. La
commande CPYTOIMPF simplifie le transfert de données
entre des plates-formes, parce qu’elle est capable de créer
automatiquement divers types de fichiers délimités par des
champs. Par défaut, CPYTOIMPF crée des fichiers CSV
(comma-separated value) ; mais vous pouvez parfaitement
utiliser des caractères différents comme délimiteurs de
chaînes et de champs. L’exemple suivant copie les données
du fichier QIWS/QCUSTCDT dans qcustcdt.csv en utilisant
des valeurs séparées par des virgules (csv, comma-separated
values) :

/CPYTOIMPF
FROMFILE(QIWS/QCUSTCDT)
TOSTMF(‘/Shared Documents/qcustcdt.csv’) +
MBROPT( *REPLACE )
RCDDLM( *CRLF ) DTAFMT( *DLM )

Ici, le paramètre FROMFILE identifie la bibliothèque et le fichier iSeries qui seront transférés. Le
paramètre TOSTMF identifie l’emplacement
de destination du dossier IFS.
Si vous vous rappelez la précédente
discussion sur le nommage IFS, vous
reconnaîtrez que cet exemple utilise
un chemin absolu. Le paramètre
MBROPT ordonne à  la commande de
remplacer le contenu de tout fichier
existant qui est déjà  présent dans l’IFS.
Les paramètres les plus importants ici
sont RCDDLM (Record Delimiter) et
DTAFMT (Data Format). La valeur du
paramètre RCDDLM de *CRLF met un
caractère saut de ligne/retour chariot à 
la fin de chaque ligne, et la valeur
DTAFMT de *DLM indique qu’il s’agira
d’un fichier délimité. Autrement dit,
un caractère sera inséré entre chaque
champ qui est écrit dans le fichier de
sortie. Cette valeur est déterminée par
le contenu du paramètre FLDDMT. Cet
exemple utilise la valeur par défaut, qui
est une virgule.
En plus de copier des fichiers base
de données de QSYS.LIB dans l’IFS,
vous souhaiterez parfois faire l’inverse
: copier des fichiers plats (flat
files) de l’IFS dans des fichiers base de
données de QSYS.LIB. La meilleure
commande dans ce cas est CPYFRMIMPF
(Copy From Import File). CPYFRMSTMF
(Copy From Stream File) est
une autre commande similaire. Toutefois,
comme la commande CPYTOS
TMF, elle ne fonctionne qu’avec des fichiers
source ou des fichiers décrits
par programme, et pas avec des fichiers
base de données décrits en
externe présents dans la plupart des
applications iSeries. Le fait que la
commande CPYFRMIMPF soit capable
de référencer la définition externe
d’un fichier lui permet d’analyser syntaxiquement
et de convertir les
données d’un fichier plat présent dans
le fichier IFS, en un fichier base de
données dans QSYS.LIB.
L’exemple suivant montre comment
utiliser la commande CPYFRMIMPF
pour copier le fichier qcust
cdt.csv du répertoire IFS Shared
Documents dans le fichier décrit en externe
nommé QCUSTDT2 dans la bibliothèque
MIKEO. C’est d’ailleurs le
même fichier qui a été exporté dans
l’IFS, dans l’exemple précédent. La
commande permettant de copier le fichier
qcustcdt.csv.txt du système de fichiers
IFS dans le fichier QCUSTCDT2
de la bibliothèque MIKEO est la suivante
:

CPYFRMIMPF
FROMSTMF(‘/Shared Documents/qcustcdt.csv’) +
TOFILE(mikeo/qcustcdt2)
RCDDLM(*CRLF) DTAFMT(*DLM)

Le paramètre FROMSTMF indique d’où le fichier source
sera copié. Dans le cas présent, la chaîne utilise le format de
nommage IFS et la barre oblique (/) placée au début indique
un chemin absolu, signifiant que le fichier qcustcdt.csv sera
trouvé dans le dossier Shared documents, hors de la racine
du système de fichiers IFS. Le paramètre TOFILE identifie le
fichier cible qui contiendra les enregistrements copiés. Les
deux fichiers FROM et TO doivent exister avant que la commande
CPYFRMIMPF ne soit exécutée. Le paramètre
RCDDLM indique que les enregistrements du fichier d’entrée
sont séparés par des caractères saut de ligne et retour
chariot, qui sont le marqueur fin de ligne standard des fichiers
texte. Le paramètre DTAFMT utilise une valeur de
*DLM pour indiquer que le fichier d’entrée est un fichier
texte délimité avec des valeurs séparant les données pour
chaque champ.
Outre *DLM, qui convient pour des fichiers délimités par
des virgules, vous pouvez aussi utiliser une valeur *FIXED
pour des fichiers plats de longueur fixe dépourvus de tout
délimiteur de champ. Si la valeur *FIXED est utilisée dans le
paramètre DTAFMT, vous devez aussi fournir une valeur
pour le paramètre FLDFNFILE (Field Definition File). Le
paramètre FLDFNFILE prend le nom d’un fichier qui
contient une information de description de champ que la
commande CPYFRMIMPF pourra utiliser pour analyser syntaxiquement
le fichier d’entrée. Bien entendu, le format des
données présentes dans le paramètre FLDFNFILE doit respecter
une norme bien précise.
Outre des commandes CL utilisées pour transférer des
données entre l’IFS et les QSYS.LIB, vous pouvez utiliser des
programmes iSeries écrits en C, Java, RPG, et des programmes
Cobol pour créer, lire et écrire des données dans
des fichiers de l’IFS. Pour voir de plus près la manière de lire
et d’écrire dans l’IFS à  partir de RPG, voir l’article « RPG et
IFS : Introduction aux fichiers stream » (dans ce numéro).

Téléchargez cette ressource

Comment sécuriser une PME avec l’approche par les risques ?

Comment sécuriser une PME avec l’approche par les risques ?

Disposant de moyens financiers et humains contraints, les PME éprouvent des difficultés à mettre en place une véritable stratégie de cybersécurité. Opérateur de services et d’infrastructures, Naitways leur propose une approche pragmatique de sécurité « by design » en priorisant les risques auxquelles elles sont confrontées.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010