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.