Code : Tout sélectionner
;Global d1.l
;Global d2.l
;d1= 10
;d2= 24
Macro dead()
d1 = d1 + 1
EndMacro
Procedure Leff()
d2 = d2 +1
EndProcedure
dead()
dead()
dead()
leff()
leff()
leff()
Debug d1
Debug d2
Chaque fois, qu'on appelle macro dead() : d1 est incrementé
par contre, procedure leff() : d2 est incrementé mais localement !
donc d1 = 3 en global : c'est tout à fait normale !!
donc d2 = 0 en global : c'est tout à fait normale !!
Pourtant, il y a la fonction Protected qui permet de ne pas melanger les 2 variables : local + global ! mais cela ne s'applique qu'aux procedures.
Par contre, dans une macro les variables se melangent.
Ce qui me parait etrange, c'est que l'on peut protected une variable qui est dejà ~locale et que dans macro, on ne puisse pas, mis à part de mettre d1 = 0 au debut de la macro.