LOCAL
DESCRIPTION.
L'instruction LOCAL permet de déclarer des variables de portée locale dans une fonction personnalisée PROC ou FN.
Voir l'instruction LOCAL DATA pour mémoriser la position actuelle du pointeur de données des DATA.
SYNTAXE.
LOCAL knom?
REMARQUES.
knom peut être n'importe quelle combinaison de lettres majuscules ou minuscules et de chiffres, mais commençant par une lettre et qui ne soit pas un mot-clé du BBC BASIC.
? peut être :
- rien, pour des valeurs numériques variables, entières ou réelles à virgule flottante ;
- &, pour des nombres entiers de 0 à 255 ;
- %, pour des nombres entiers de −2147483648 à 2147483647 ;
- %%, pour des nombres entiers de −9223372036854775808 à 9223372036854775807 ;
- #, pour des nombres réels de ±2,3E−308 à ±1,7E308 ;
- $, pour des chaines de caractères ;
L'instruction LOCAL ne s'utilise que dans des fonctions personnalisées PROC ou FN.
Dans BBC BASIC, toutes les variables sont de portée globale par défaut, c'est-à-dire qu'une fois qu'elles ont été déclarées dans le module principal ou dans une fonction personnalisée PROC ou FN, leur valeur peut être lue ou modifiée dans le module principal, mais aussi dans toutes les fonctions personnalisées PROC ou FN.
Déclarée une variable avec le mot-clé LOCAL, dans une fonction personnalisée, permet de s'assurer qu'il n'y aura pas de correspondance avec une variable de même nom utilisée dans le module principale. Ainsi si une variable avait le même nom dans le module principale, sa valeur ne serait pas modifiée dans la fonction personnalisée. Cependant, la valeur de la variable du module principale, n'étant plus accessible dans la fonction personnalisée, il ne sera pas possible de la lire non plus.
Il n'est pas obligatoire qu'une variable de même nom existe dans le module principal pour la déclarer de portée locale avec le mot-clé LOCAL dans une fonction personnalisée PROC ou FN. Il est possible de déclarer de portée locale plusieurs variables de même nom dans des fonctions personnalisées différentes, elles seront toutes indépendantes les unes des autres et de celle qui pourrait être déclarée dans le module principal.
Si un tableau de données, ou une structure de données, est déclaré comme étant de portée locale avec le mot-clé LOCAL dans une fonction personnalisée PROC ou FN, il devra être déclaré et dimensionné avec l'instruction DIM pour pouvoir être utilisé dans cette fonction personnalisée sans provoquer d'erreur. Le format d'un tableau de données, ou d'une structure de données, peut être similaire ou différent de celui du module principal.
A la sortie de la fonction personnalisée, toutes les valeurs des variables déclarées avec le mot-clé LOCAL sont perdues. Pour pérenniser ces valeurs, pour une utilisation future avec cette même fonction personnalisée, on utilisera le mot-clé PRIVATE à la place de l'instruction LOCAL.
EXEMPLES.
kprincipal$ = "Principal"
PRINT "Dans le module principal : "; kprincipal$
PROC_Sans
PROC_Avec
PRINT "Dans le module principal : "; kprincipal$
END
REM --- Sans déclarations locales ---
DEF PROC_Sans
kprincipal$ = "non local"
PRINT "Dans la procedure SANS : "; kprincipal$
ENDPROC
REM --- Avec déclarations locales ---
DEF PROC_Avec
LOCAL kprincipal$
kprincipal$ = "local"
PRINT "Dans la procedure AVEC : "; kprincipal$
ENDPROC
retourne
Dans le module principal : Principal
Dans la procedure SANS : non local
Dans la procedure AVEC : local
Dans le module principal : non local
FOR kvaleur = 1 TO 3
kcontrole = 0
PRINT "Execution : "; kvaleur
PROC_Recursive
NEXT kvaleur
END
REM --- fonction récursive ---
DEF PROC_Recursive
LOCAL klocal
PRIVATE kprive
kcontrole = kcontrole + 1
klocal = klocal + 10
kprive = kprive + 3
PRINT kcontrole; " - Variable locale : "; klocal; " - Variable prive : "; kprive
IF kcontrole <> 3 THEN PROC_Recursive
ENDPROC
retourne
Execution : 1
1 - Variable locale : 10 - Variable prive : 3
2 - Variable locale : 10 - Variable prive : 6
3 - Variable locale : 10 - Variable prive : 9
Execution : 2
1 - Variable locale : 10 - Variable prive : 12
2 - Variable locale : 10 - Variable prive : 15
3 - Variable locale : 10 - Variable prive : 18
Execution : 3
1 - Variable locale : 10 - Variable prive : 21
2 - Variable locale : 10 - Variable prive : 24
3 - Variable locale : 10 - Variable prive : 27
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.