Pour lire et mettre à jour des enregistrements, il faut passer par la plupart des étapes nécessaires à l'écriture des enregistrements dans un fichier avec clé. A nouveau, plusieurs classes collaborent. Les étapes à suivre pour lire et mettre à jour des enregistrements dans un fichier avec clé sont les
Lecture et mise à jour

suivantes :
1. Créer un objet de connexion AS400.
2. Créer un objet fichier.
3. Créer un objet description d’enregistrement de fichier.
4. Extraire un objet format d’enregistrement grâce à la description de l’enregistrement.
5. Associer le format d’enregistrement avec l’objet fichier.
6. Ouvrir le fichier.
7. Créer un ensemble de clés.
8. Lire un enregistrement au moyen de l’ensemble de clés.
9. Extraire des valeurs de zones de l’enregistrement.
10. Définir de nouvelles valeurs de zones dans l’enregistrement.
11. Mettre à jour le fichier.
12. Fermer le fichier.
Les cinq premières étapes sont les mêmes que pour écrire des enregistrements
dans un fichier avec clé. Pour l’étape 6, à savoir ouvrir un fichier pour le
lire ou le mettre à jour, spécifiez la valeur READ_WRITE au paramètre de type
d’ouverture en appelant la méthode open :
myFile.open(AS400File.READ_WRITE, 0,
AS400File.COMMIT_LOCK_LEVEL_NONE);
L’accès au niveau enregistrement de la boîte à outils supporte l’utilisation
de clés complètes et partielles. Par exemple, un fichier DB2/UDB possédant une
clé constituée des zones A, B et C peut être lu au moyen d’une clé pour la zone
A, d’une clé pour les zones A et B, ou d’une clé pour les zones A, B et C.
L’utilisation de zones Java comme données de clé pour localiser des enregistrements
DB2/UDB n’est pas toujours une manoeuvre des plus aisées. Si la clé du fichier
contient des zones caractères, il faut compléter la fin des chaînes Java utilisées
en clé avec des blancs de la longueur de la zone caractères. La clé suivante
est construite pour extraire l’enregistrement écrit dans le premier exemple
d’accès au niveau enregistrement. Les clés sont toujours définies comme un ensemble
d’objets, même si le fichier DB2/UDB n’a qu’une zone de clé. Le fichier CUSTMAST
possède une clé numérique et n’a donc pas besoin d’être complété :
L’utilisation de zones Java comme données de clé pour localiser des enregistrements
DB2/UDB n’est pas toujours une manoeuvre des plus aisées
Object[ ] key = new Object[ ] {new
java.math.BigDecimal(12345)};
Un ensemble d’objets à clé correctement construits permet de commencer à lire
des enregistrements avec la méthode read de l’objet fichier avec clé. A chaque
lecture, une instance de la classe Record contenant les données de l’enregistrement
est renvoyée. Si un enregistrement correspondant à la valeur de la clé spécifiée
n’est pas trouvé, la méthode read revient vide :
Record record = myFile.read(key);
Outre la méthode read, la classe KeyedFile en offre d’autres pour travailler
avec les données de clé. La figure 5 énumère les plus communément utilisées,
et il existe également plusieurs méthodes héritées pour travailler avec un fichier
à clé (figure 6).
Après avoir essayé de lire un enregistrement sur clé, cherchez une valeur nulle.
Si un enregistrement a été lu, commencez à extraire des valeurs des zones individuelles
de l’objet enregistrement. Dans l’exemple suivant, chaque zone d’un enregistrement
du fichier CUSTMAST est imprimée vers le périphérique de sortie standard :
Ce code tire profit de la capacité inhérente à Java de transformer un objet
de quelque type que ce soit en chaîne
if (record != null)
{
System.out.println(« Customer ID: » +
record.getField(« CUSTID »));
System.out.println(« Name : » +
record.getField(« CUSTNAME »));
System.out.println(« Address : » +
record.getField(« CUSTSTREET »));
System.out.println(« City : » +
record.getField(« CUSTCITY »));
}
La méthode getField accepte un nom de zone comme paramètre, et renvoie un objet
Java. Le type de données de l’objet est déterminé par le type de données de
la zone du fichier DB2/UDB. La conversion du type de données effectuée par la
boîte à outils est à l’opposé de celle effectuée pour la méthode setField. Reportez-vous
à nouveau à la figure 4 pour une liste des types de données DB2/UDB et Java
compatibles. (La classe Record de la boîte à outils supporte aussi les méthodes
getField et setField par index, qui est basé sur zéro). A noter dans l’exemple
que la zone de l’ID client CUSTID est en décimal condensé, mais est pourtant
utilisée comme s’il s’agissait d’une chaîne :
System.out.println(« Customer ID: » +
record.getField(« CUSTID »));
Ce code tire profit de la capacité inhérente à Java de transformer un objet
de quelque type que ce soit en chaîne. Pour accéder aux données décimales condensées
de la zone ID client, en tant que leur véritable type de données (BigDecimal),
programmez le résultat de l’appel à la méthode getField comme ci-dessous :
BigDecimal custID =
(BigDecimal)record.getField(« CUSTID »)
Pour mettre à jour les valeurs des zones dans l’enregistrement actuel, utilisez
la méthode setField sur l’objet enregistrement. L’exemple suivant modifie les
valeurs des zones nom et adresse du client :
record.setField(« CUSTNAME »,
« Daniel Darnell »);
record.setField(« CUSTSTREET »,
« 222 Oak Lane »);
Pour conserver les modifications, exécutez la méthode de mise à jour sur l’objet
fichier à clé et transmettez-lui l’objet enregistrement avec les valeurs des
zones modifiées :
myFile.update(record);
Fermez le fichier avec clé une fois que vous avez terminé :
myFile.close();
Pour profiter des techniques d’optimisation des performances des fichiers séquentiels,
familières avec RPG et Cobol, l’accès au niveau enregistrement de la boîte à
outils est un bon choix
Il existe des échantillons de code complets pour écrire un enregistrement dans
un fichier et lire et mettre à jour des enregistrements. Visitez par exemple
l’adresse http://www.as400network.com pour les obtenir.
Téléchargez cette ressource

État des lieux de la réponse à incident de cybersécurité
Les experts de Palo Alto Networks, Unit 42 et Forrester Research livrent dans ce webinaire exclusif leurs éclairages et stratégies en matière de réponses aux incidents. Bénéficiez d'un panorama complet du paysage actuel de la réponse aux incidents et de sa relation avec la continuité de l'activité, des défis auxquels font face les entreprises et des tendances majeures qui modèlent ce domaine. Un état des lieux précieux pour les décideurs et professionnels IT.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Reporting RSE : un levier d’innovation !
- De la 5G à la 6G : la France se positionne pour dominer les réseaux du futur
- Datanexions, acteur clé de la transformation numérique data-centric
- Les PME attendent un meilleur accès aux données d’émissions de la part des fournisseurs
- Fraude & IA : Dr Jekyll vs. Mr Hyde, qui l’emporte ?
