Accéder au contenu principal Passer au contenu complémentaire

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.

Note InformationsRemarque : Si l'enregistrement est introuvable ou si la fin du fichier est atteinte, le buffer F.alias est nettoyé et le champ mailto:F.alias.@EOF@ F.alias.@EOF@ est mis à jour à 1. Sinon, F.alias.@EOF@ contient la valeur 0.

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é.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !