Résultat d’un fetch dans une DS sous adelia 400

Méthode

 Définir dans le modèle une variable de même longueur que la totalité du format du fichier en *NODEF (ici 1023)

 Définir une ds externe associant cette variable au fichier (ici MYFILE)

 Déclarer un curseur sur toutes les zones

 Effectuer le fetch dans la ds

Déclaration de la variable et source du programme ADELIA


Opt Zone Mot Directeur Lg. Déc D1 D2 Référence
DSMYF DSMYF 1023 *NODEF


DSE DSMYF MYFILE
DEBUT_SQL
+ DECLARE C_LIGNE CURSOR FOR
+ SELECT * FROM MYFILE
+ WHERE DTECRE >= 20060915
+ ORDER BY Z1, Z2, Z3
FIN_SQL
DEBUT_SQL
+ OPEN C_LIGNE
FIN_SQL
TANT_QUE *SQLCODE <> 100
DEBUT_SQL
+ FETCH NEXT FROM C_LIGNE
+ INTO :DSMYF
FIN_SQL
SI *SQLCODE = 0
*- Faire quelque chose
FIN
REFAIRE
DEBUT_SQL
+ CLOSE C_LIGNE
FIN_SQL
TERMINER

Conclusion

Lors de l’exécution, les contenus de chaque champ renvoyés par le fetch se retrouvent dans les zones de la DS.

Dans le cas ou vous manipulez un fichier de 80 zones par exemple, un argument récurrent pour ne pas utiliser un curseur sql est de trouver irritant de lister toutes les zones du fetch.

Et bien comme en rpg, ce n’est plus un argument, car avec cette méthode (qui n’est pas nouvelle), c’est facile.

Print Friendly, PDF & Email