Lecture de fichiers (AS/400 IBMi)
Vous pouvez lire le contenu des autres fichiers (physiques et logiques) directement dans la transformation afin de récupérer des données externes. Pour ce faire, procédez en deux étapes : la déclaration et l'utilisation.
FICHIER - déclaration
Vous pouvez déclarer un fichier dans la fenêtre de déclaration (3).
La syntaxe de déclaration d'un fichier est la suivante :
FILE alias LIKE library/File
L'alias sera utilisé pour référencer le buffer du fichier et ses zones.
Lorsque vous quittez la fenêtre de déclaration, un buffer nommé F.alias est ajouté dans la liste (1).
Par exemple, si vous saisissez :
/* Declaration to access a file
FILE CUSTOMER LIKE ADVENTURE/DIMCUST
Le buffer F.CUSTOMER est ajouté. Il contient les zones suivantes :
- F.CUSTOMER.@EOF@
- F.CUSTOMER.CUSTKEY
- toutes les autres zones des fichiers
Le fait que le nom du fichier ADVENTURE/DIMCUST présent est saisi au niveau de la clause LIKE ne signifie pas que c'est ce fichier qui sera lu, seulement que le fichier qui sera lu aura la même structure.
Chaque fois qu'un fichier est lu, spécifiez le nom de fichier comme constante ou dans une variable. Ainsi, le nom du fichier (bibliothèque/fichier et éventuellement membre) peut dépendre du contenu d'un champ.
Le moteur de Talend Change Data Capture pour AS/400 IBMi gère l'ouverture des fichiers, jusqu'à 1000 fichiers.
Vous pouvez observer, dans la liste des zones, qu'une colonne indique les zones qui composent la clé de lecture et leur ordre.
Si le fichier physique ne comporte pas de clé, vous pouvez lire un fichier logique qui en possède une.
Instructions de lecture
Les instructions de lecture sont multiples, afin de couvrir toutes les possibilités d'IBMi.
READfirst – Lecture du premier enregistrement
READfirst b.Field1/Constant ON alias
Cette opération permet de lire le premier enregistrement du fichier dans le buffer F.alias.
Exemple :
/* Declaration to access a file
FILE CATEG LIKE RAFALE/CATEG
/* Reads the first record of the RAFALE/CATEG file
READfirst ‘RAFALE/CATEG’ ON CATEG
/* Copies the contents of the DESCRIPTION field in the CATEG file to the O.CATEGDESC field
O.CATEGDESC = F.CATEG.DESCRIPTION
Lecture du premier enregistrement du fichier RAFALE/CATEG et récupération du contenu du champ LIBELLE de cet enregistrement pour le mettre dans le champ LIBCATEG du buffer de sortie.
READlast – Lecture du dernier enregistrement
READlast b.Field1/Constant ON alias
Cette opération permet de lire le dernier enregistrement du fichier dans le buffer F.alias.
Exemple :
/* Declaration to access a file
FILE CATEG LIKE RAFALE/CATEG
/* Reads the last record of the RAFALE/CATEG file
READlast ‘RAFALE/CATEG’ ON CATEG
/* Copies the contents of the DESCRIPTION field in the CATEG file to the O.CATEGDESC field
O.CATEGDESC = F.CATEG.DESCRIPTION
Lecture du dernier enregistrement du fichier RAFALE/CATEG et récupération du contenu du champ LIBELLE de cet enregistrement pour le mettre dans le champ LIBCATEG du buffer de sortie.
READnext – Lecture de l'enregistrement suivant
READnext b.Field1/Constant ON alias
Cette opération permet de lire l'enregistrement suivant l'enregistrement courant du fichier dans le buffer F.alias.
Exemple :
/* Declaration to access a file
FILE CATEG LIKE RAFALE/CATEG
/* Reads the next record of the RAFALE/CATEG file
READnext ‘RAFALE/CATEG’ ON CATEG
/* Copies the contents of the DESCRIPTION field in the CATEG file to the O.CATEGDESC field
O.CATEGDESC = F.CATEG.DESCRIPTION
Lecture de l'enregistrement suivant du fichier RAFALE/CATEG et récupération du contenu du champ LIBELLE de cet enregistrement pour le mettre dans le champ LIBCATEG du buffer de sortie.
READprevious – Lecture de l'enregistrement précédent
READprevious b.Field1/Constant ON alias
Cette opération permet de lire l'enregistrement précédant l’enregistrement courant du fichier dans le buffer F.alias.
Exemple :
/* Declaration to access a file
FILE CATEG LIKE RAFALE/CATEG
/* Reads the previous record of the RAFALE/CATEG file
READprevious ‘RAFALE/CATEG’ ON CATEG
/* Copies the contents of the DESCRIPTION field in the CATEG file to the O.CATEGDESC field
O.CATEGDESC = F.CATEG.DESCRIPTION
Lecture de l'enregistrement précédent du fichier RAFALE/CATEG et récupération du contenu du champ LIBELLE de cet enregistrement pour le mettre dans le champ LIBCATEG du buffer de sortie.
READkey – Lecture par clé
READkey b.Field1/Constant ON alias WITHKEY EQ TO b.Field2/Constant
GE
GT
LE
LT
NEXTEQ
NEWUNIQ
PREVEQ
PREVUNIQ
Cette opération permet de lire l'enregistrement correspondant au critère de filtre pour le fichier dans le buffer F.alias.
Les critères de clés suivants peuvent être utilisés :
Clé | Description |
---|---|
EQ | Recherche l'enregistrement ayant la même valeur que la clé. |
GE | Recherche l'enregistrement ayant une valeur supérieure ou égale à celle de la clé. |
GT | Recherche l'enregistrement ayant une valeur supérieure à celle de la clé. |
LE | Recherche l'enregistrement ayant une valeur inférieure ou égale à celle de la clé. |
LT | Recherche l'enregistrement ayant une valeur inférieure à celle de la clé. |
NEXTEQ | Recherche le prochain enregistrement ayant la même valeur que la clé. |
NEXTUNIQ | Recherche le prochain enregistrement ayant la valeur de clé unique. |
PREVEQ | Recherche l'enregistrement précédent ayant la même valeur que la clé. |
PREVUNIQ | Recherche l'enregistrement précédent ayant la valeur de clé unique. |
La clé peut être partielle. Si, par exemple, le fichier AS/400 IBMi que vous souhaitez lire possède comme clés les zones ZONECLE1, ZONECLE2 et ZONECLE3, il est possible de n'utiliser que ZONECLE1 ou ZONECLE1 suivie des trois premiers caractères de ZONECLE2.
Si la clé du fichier AS/400 IBMi se compose de plusieurs zones et que vous souhaitez effectuer une recherche sur la clé entière, vous pouvez, par exemple, définir un champ à longueur complète, avec des sous-descriptions utilisant la clause BASED pour l'instruction DCL.
Exemple :
FILE ORDER LIKE OMBIL_SRC/ORDERL01
/* The key of the ORDERL01 file is STE(2 alpha), CODCLI(10 Num), NUMCDE(9 PACKED)
DCL W.CDE_KEY CHAR 17
DCL W.CDE_KEY.STE CHAR 2 BASED CDE_KEY POS 1
DCL W.CDE_KE.CUSTCODE ZONED 10,0 BASED CDE_KEY POS 3
DCL W.CDE_KEY.NUMCDE PACKED 9,0 BASED CDE_KEY POS 13
/* Loads the read key
W.CDE_KEY.STE = S.JRN_MBR
W.CDE_KEY.CODECLI = I.CODECLI
W.CDE_KEY.NUMCDE = I.NUMCDE
/* Reads the record with key in the OMBIL_PRD/ORDERL01 file
READkey ‘OMBIL_PRD/ORDERL01’ ON CATEG WITHKEY EQ TO W.CDE_KEY
O.NAME = F.ORDER.NAME
Lecture de l'enregistrement du fichier OMBIL_PRD/ORDERL01 (notez que le nom de la bibliothèque n'est pas le même que dans la déclaration FILE) avec la clé composée de la société.