Accueil du site > Les articles > Récupérer le numéro de transaction courante sous Adélia.
Version à imprimer Enregistrer au format PDF

Récupérer le numéro de transaction courante sous Adélia.

mardi 18 mai 2004, par Grégory Jarrige Visites  1117

Comment récupérer le numéro de transaction courante d’un programme interactif ? En déclarant une variable avec pour nom DDS "àNOTRS", de longueur : 2 caractères alpha), et surtout en *NODEF. Utilisée dans le RPG généré par ADELIA, au niveau du moniteur de transaction, elle contient "01", "02", etc... en fonction de la transaction courante.


Intérêt : il ne serait plus nécessaire de passer le numéro de transaction "en dur" à des macros telles que &CTL_OPTION(01 ;ZZ_COD_OPT), ce qui éviterait les erreurs notamment lors de copier-coller d’une transaction à une autre (on oublie parfois de changer les paramètres des macros lors d’un copier-coller, et c’est le genre d’erreur qui fait perdre beaucoup de temps).

Inconvénient : ça fonctionne à condition cependant de n’avoir pas déclaré le paramètre de macro recevant le numéro de la transaction comme étant de type "n° transaction", car dans ce cas, ADELIA contrôle que le paramètre est bien un numéro de transaction en dur, et renvoie une erreur de compilation dans le cas contraire.

Autre problème : ne pas écrire de code dans la macro tel que celui-ci : DECLARER £TRS:01 ;£_NUM_TRS_:01 2

A la compilation du code ADELIA, la ligne ci-dessus deviendrait :

- cas 1 : on passe le numéro de transaction "01" en premier paramètre de la macro DECLARER £TRS01 ;£_NUM_TRS_01 2

- cas 2 : on passe le numéro de transaction sous la forme d’une variable (W_NO_TRS) en premier paramètre de la macro DECLARER £TRSW_NO_TRS ;£_NUM_TRS_W_NO_TRS 2

Le cas n° 2 entrainera une erreur de compilation systématique. Pourtant, dans certains cas, le programmeur préfèrera utiliser le cas n° 2 et il serait dommage qu’il ne puisse le faire à cause d’un défaut de conception de la macro.

De plus, la création de variable "à la volée" (càd au moment de la compilation), tel que dans l’exemple ci-dessus, entraine l’impossibilité de retrouver les programmes utilisant une variable au moyen d’une recherche dans les sources ADELIA.