SHARED
DESCRIPTION.
L' instruction SHARED permet de partager des variables, avec les fonctions personnalisées FUNCTION ou SUB ou de préserver la valeur de variables déclarées dans des fonctions personnalisées FUNCTION ou SUB.
SYNTAXES.
DIM SHARED nom?
DIM SHARED nom AS type
DIM SHARED AS type noma, noma, ... , nomn
FUNCTION
...
SHARED noma, noma, ... , nomn
...
END FUNCTION
SUB
...
SHARED noma, noma, ... , nomn
...
END SUB
REMARQUES.
nom doit être le nom d'une variable ou d'un tableau de données existant.
Quand l'instruction SHARED est utilisée avec les mots-clés DIM ou REDIM, ce sera toujours dans le code proncipale du programme, c'est-à-dire en dehors de toutes fonctions personnalisées FUNCTION ou SUB. Dans ce cas, les variables et tableaux de données deviennent de portée globale.
Les variables et tableaux de données de portée globale pourront être manipulées, lues et/ou modifiées, dans toutes les fonctions personnalisées FUNCTION ou SUB, sans qu'il soit besoin de les nommer dans les paramètres lors de l'appel d'une fonction personnalisée. Les modifications aui leur seront apportées dans ces procédures seront pérennes à la sortie de la fonction.
Dans une déclaration DIM ou REDIM, la combinaison COMMON SHARED sera utilisée si l'on souhaite partager des variables et des tableau de données avec les modules importés par le script et les fonctions personnalisées de ces modules.
Quand l'instruction SHARED est utilisée dans une fonction personnalisée FUNCTION ou SUB elle ne doit pas être associée aux mots-clés DIM ou REDIM. Dans ce cas, toutes les variables et tableaux de données nommées après le mot-clé SHARED partage leur valeur avec le code du module principale et avec le code de la fonction personnalisée, c'est-à-dire la suite d'instructions en dehors de toute fonctions personnalisée FUNCTION ou SUB.
Quand des variables ou tableaux de données sont partagées à l'intérieur d'une fonction personnalisée FUNCTION ou SUB, leur valeur est partagée pour tout le code principal et uniquement pour la fonction qui l'a déclarée et partagée. Ces variables et tableaux de données ne sont pas accessibles pour les autres fonctions personnalisées FUNCTION ou SUB.
Si la combinaison des mots-clés COMMON SHARED permet de partager les valeurs des items pourront être lues et/ou modifiées dans tous les modules principaux appelés par le programme, ainsi que dans les fonctions personnalisées qu'ils comportent.
Si le type d'une variable ou d'un tableau de données n'est pas indiqué, elle/il est du type SINGLE (!).
RUBRIQUE.
Les tableaux de données pour plus de détails sur la création et l'utilisation des tableaux de données.
EXEMPLES.
DIM SHARED kpartage AS INTEGER
DIM kbloque AS SINGLE
kmessage$ = "Bonjour le monde !"
kbloque = 25
PRINT "A la declaration des variables :"
PRINT "kpartage ="; kpartage, "kbloque ="; kbloque, "kmessage$ = ;kmessage$
FOR kpassage = 0 TO 1
k = FNC_Valeurs(kbloque)
PRINT "A la sortie de la fonction :";kpartage
PRINT "kpartage ="; kpartage, "kbloque ="; kbloque, "kmessage$ = ";kmessage$
NEXT kpassage
END
FUNCTION FNC_Valeurs (Q!)
kpartage = kpartage + 1
Q! = Q! / 2
kmessage$ = "Dans la fonction ... "
PRINT "Passage dans la fonction :"; kpartage
PRINT "kpartage ="; kpartage, "kbloque ="; Q!, "kmessage$ = ";kmessage$
END FUNCTION
retourne :
A la declaration des variables :
kpartage = 0 kbloque = 25 kmessage$ = Bonjour le monde !
Passage dans la fonction : 1
kpartage = 1 kbloque = 12.5 kmessage$ = Dans la fonction ...
A la sortie de la fonction : 1
kpartage = 1 kbloque = 12.5 kmessage$ = Bonjour le monde !
Passage dans la fonction ::2
kpartage = 2 kbloque = 6.25 kmessage$ = Dans la fonction ...
A la sortie de la fonction : 1
kpartage = 1 kbloque = 6.25 kmessage$ = Bonjour le monde !
kpassage = 9
kgarde = 8
kperdu = 7
kcontrole = 6
PRINT "Avant l'appel de la fonction ..."
PRINT "Nbr de passage :"; kpassage; " - kgarde :"; kgarde; " - kperdu :"; kperdu; " (controle) :"; kcontrole; ")"
FNC_Valeurs
PRINT "A la sortie de la fonction ..."
PRINT "Nbr de passage :"; kpassage; " - kgarde :"; kgarde; " - kperdu :"; kperdu; " (controle) :"; kcontrole; ")"
SUB FNC_Valeurs
STATIC kpassage, kgarde
SHARED kcontrole
kperdu = 1000
IF kpassage = 0 THEN kgarde = 1000 ELSE kgarde = kgarde / 2
kperdu = kperdu * 2
PRINT "Au passage :"; kpassage; " - kgarde :"; kgarde; " - kperdu :"; kperdu; " (controle) :"; kcontrole; ")"
kpassage = kpassage + 1
kcontrole = kpassage
IF kpassage < 4 THEN FNC_Valeurs
END SUB
retourne :
Avant l'appel de la fonction ..."
Nbr de passage : 9 - kgarde : 8 - kperdu : 7 - (controle : 6)
Au passage : 0 - kgarde : 1000 - kperdu : 2000 - (controle : 0)
Au passage : 1 - kgarde : 500 - kperdu : 2000 - (controle : 1)
Au passage : 2 - kgarde : 250 - kperdu : 2000 - (controle : 2)
Au passage : 3 - kgarde : 125 - kperdu : 2000 - (controle : 3)
A la sortie de la fonction ..."
Nbr de passage : 9 - kgarde : 8 - kperdu : 7 - (controle : 4)
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.