Dans le cas d'appels de SUBs imbriquées à plusieurs niveaux, il m'arrive d'avoir besoin de connaître le contenu d'une variable locale définie dans une SUB d'un niveau supérieur, comme dans ce petit exemple:
- Code:
-
sub1(17)
end
sub sub1(par1)
dim_local var1$
var1$ = "vient de SUB1"
sub2(3)
end_sub
sub sub2(par1)
dim_local var2$
print sub1@var1$
print str$(sub1@par1)
end_sub
et je voudrais obtenir:
- Citation :
- vient de SUB1
17
J'ai choisi l'opérateur @ pour signifier que ce qui précède est le nom de la SUB visée. Je sais que toutes les variables locales (et les paramètres) sont définies dans la table des symboles de Panoramic avec leur nom préfixé d'une manière ou d'une autre, par le nom de la SUB concernée. Serait-ce possible d'y accéder ?
Autre suggestion: serait-ce possible de connaître le nom de la SUB "appelante", ainsi peut-être du nopbre de SUBs imbriquées ? Exemple:
- Code:
-
print SUB_NAME$(0)
sub1()
end
sub sub1()
print SUB_NAME$(0)
sub2()
end_sub
sub sub2()
print SUB_NAME$(0)
print SUB_NAME$(1)
print SUB_NAME$(2)
print str$(SUB_LEVEL)
end_sub
et j'attends ceci:
- Citation :
- _
sub1
sub2
sub1
_
2
La variable SUB_LEVEL contiendrait le niveau d'imbrication de SUBs (incrémentée à chaque appel d'une SUB, et décrémentée à chaque END_SUB ou EXIT_SUB.
La fonction SUB_NAME$(N) retournerait le nom de la SUB de niveau SUB_LEVEL-N, et "_" si l'on n'est pas dans une SUB.
En ce qui concerne les variables locales et paramètres des SUBs imbriquées, on pourrait aussi imaginer des fonctions du type
- Code:
-
SUB_VARIABLE(N,NOM$)
SUB_VARIABLE$(N,NOM$)
retournant la valeur d'une variable locale d'un niveau SUB_LEVEL-N.
EDITJe sais que les variables locales sont mémorisées avec un nom interne du format:
NOMDESUB!NOMDEVARIABLE
tout en majuscules. Il en est de même pour les paramètres formels qui sont mémorisés sous le même format. Mais je n'ai pas accès à cette syntaxe.