COMMON |
Commune |
---|---|
QuickBASIC/QBasic |
Syntaxe
COMMON variable[,variable][,variable]... |
COMMON [SHARED][/nomBloc/] listeVar |
Paramètres
Nom | Description |
---|---|
nomBloc | Ce paramètre permet d'indiquer un identificateur QuickBASIC valide (jusqu'à 40 caractères) utilisé pour identifier un groupe de variables. Utilisez un nom de bloc pour partager uniquement des groupes spécifiques de variables. Lorsqu'un nom de bloc est utilisé, le bloc COMMON est un bloc COMMON nommé. Lorsque le nom de bloc est omis, le bloc est un bloc COMMON vierge. Les éléments d'un bloc COMMON nommé ne sont pas conservés à travers une chaîne de caractères vers un nouveau programme. |
variable | Ce paramètre permet d'indiquer la variable à conserver. |
listeVar | Ce paramètre permet d'indiquer une liste de variables à partager entre les modules ou les programmes enchaînés. La même variable ne peut pas apparaître dans plus d'une instruction COMMON dans un module. |
SHARED | Ce paramètre permet d'indiquer que les variables doivent être partagées avec toutes les procédures SUB ou FUNCTION du module. Le SHARED peut éliminer le besoin d'une instruction SHARED dans les procédures SUB ou FUNCTION. |
Description
Cette commande permet d'indiquer les variables à conserver lors d'un enchaînement de programme avec la commande «CHAIN».
Remarques
- Le paramètre listeVar a la syntaxe suivante :
- Les anciennes versions de BASIC exigeaient que le nombre de dimensions apparaisse après le nom d'un tableau dynamique dans une instruction COMMON. Le nombre de dimensions n'est plus requis, bien que QuickBASIC accepte l'ancienne syntaxe pour maintenir la compatibilité avec les versions antérieures.
- Une instruction COMMON établit l'entreposage des variables dans une zone spéciale leur permettant d'être partagées entre des modules ou avec d'autres programmes appelés avec une instruction CHAIN.
- Étant donné que les instructions COMMON établissent des variables globales pour un programme entier, elles doivent apparaître avant toute instruction exécutable. Toutes les instructions sont exécutables, à l'exception des suivantes : COMMON, CONST, DATA, DECLARE, DEFtype, DIM (pour les tableaux statiques), OPTION BASE, REM, SHARED, STATIC, TYPE...END TYPE et toutes les métacommandes.
- Les variables des blocs COMMON sont mises en correspondance par position et type, et non par nom. Ainsi, l'ordre des variables est significatif dans les instructions COMMON. Dans le fragment suivant, c'est l'ordre des variables dans les instructions COMMON liant les variables, pas les noms :
- Les tableaux statiques et dynamiques sont placés dans COMMON en utilisant le nom du tableau suivi de parenthèses. Un tableau statique doit être dimensionné avec des indices à constante entière dans une instruction DIM précédant l'instruction COMMON. Un tableau dynamique doit être dimensionné dans une instruction DIM ou REDIM ultérieure. Les éléments d'un tableau dynamique ne sont pas alloués dans le bloc COMMON. Seul un descripteur de tableau est placé en commun.
- La taille d'une zone commune peut être différente de celle d'un autre module ou programme chaîné si un bloc COMMON vierge a été utilisé. Lorsqu'un programme QuickBASIC partage des blocs COMMON avec une routine dans la bibliothèque utilisateur, le programme appelant ne peut pas redéfinir le bloc COMMON à une taille plus grande.
- Les erreurs causées par des instructions COMMON incompatibles sont subtiles et difficiles à trouver. Un moyen simple d'éviter les instructions COMMON incompatibles est de placer les déclarations COMMON dans un seul fichier d'inclusion et d'utiliser la métacommande $INCLUDE dans chaque programme.
- Le fragment de programme suivant montre comment utiliser la métacommande $INCLUDE pour partager un fichier contenant des instructions COMMON entre programmes :
- Utilisation de COMMON nommé : Un bloc COMMON nommé fournit un moyen pratique de regrouper des variables afin que différents modules aient accès uniquement aux variables communes dont ils ont besoin. Le fragment de programme suivant, calculant le volume et la densité d'un prisme rectangulaire, utilise des blocs COMMON nommés pour partager différents ensembles de données avec deux sous-programmes. Le sous-programme VOLUME doit partager uniquement les variables représentant les longueurs des côtés (dans le bloc SIDES de COMMON). Le sous-programme DENSITY a également besoin de variables représentant le poids (dans le bloc WEIGHT de COMMON) :
- 'Programme principale
- DIM S(3)
- COMMON /Sides/ S()
- COMMON /Weight/ C
- C=52
- S(1)=3:S(2)=3:S(3)=6
- CALL Volume
- CALL Density
- END
- 'Sous-programme VOLUME dans un module séparé.
- DIM S(3)
- COMMON SHARED /Sides/ S()
- SUB Volume STATIC
- Vol=S(1)*S(2)*S(3)
- :
- END SUB
- 'Sous-programme DENSITY dans un module séparé.
- DIM S(3)
- COMMON SHARED /Sides/ S()
- COMMON SHARED /Weight/ W
- SUB Density STATIC
- Vol=S(1)*S(2)*S(3)
- Dens=W/Vol
- :
- END SUB
- Utilisation de COMMON avec CHAIN : L'instruction COMMON fournit le seul moyen de transmettre les valeurs des variables directement à un programme chaîné. Pour transmettre des variables, les deux programmes doivent contenir des instructions COMMON. N'oubliez pas que l'ordre et le type des variables sont significatifs, pas les noms de variables. L'ordre et le type des variables doivent être les mêmes pour toutes les instructions COMMON communiquant entre les programmes de chaînage.
- Bien que l'ordre et le type des variables soient essentiels pour s'assurer que les bonnes valeurs sont transmises, les blocs COMMON n'ont pas besoin d'être de la même taille. Si le bloc COMMON dans le programme chaîné est plus petit que le bloc COMMON dans le programme de chaînage, les variables COMMON supplémentaires dans le programme de chaînage sont ignorées. Si la taille du bloc COMMON dans le programme chaîné vers est plus grande, les variables numériques COMMON supplémentaires sont initialisées à zéro. Les variables de chaîne de caractères supplémentaires sont initialisées à des chaînes de caractères nulles.
- Les tableaux statiques passés en COMMON par le programme de chaînage doivent être déclarés comme statiques dans le programme chaîné. De même, les tableaux dynamiques placés en commun par le programme de chaînage doivent être dynamiques dans le programme enchaîné.
- Pour utiliser COMMON avec CHAIN lorsque vous compilez en dehors de l'environnement QuickBASIC, vous devez utiliser le module BRUN45.EXE. Ce module est utilisé lorsque vous compilez à partir de la ligne de commande sans l'option /O ou lorsque vous utilisez l'option de la boîte de dialogue Make EXE appelée «EXE Requiring BRUN45.EXE.».
variable[()][AS type][, variable[()][AS type]]... |
La liste suivante décrit les parties d'une liste de variables :
Paramètres | Description |
---|---|
variable | Ce paramètre permet d'indiquer tout nom de variable QuickBASIC valide. |
AS type | Ce paramètre permet de déclarer la variable comme étant de type de données type. Le type de données peut être INTEGER, LONG, SINGLE, DOUBLE, STRING ou un type de données défini par l'utilisateur. |
Les blocs COMMON nommés ne sont pas conservés dans les programmes chaînés. Utilisez des blocs COMMON vides pour transmettre des variables à un programme chaîné.
Exemples
Prenons pour acquis que le fichier «COMMON1.BAS» :
Et le fichier «COMMON2.BAS» situé dans le dossier «C:\SOURCE\SAMPLES\QB» :
on obtiendra le résultat suivant :
Gladir.comVoir également
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - CHAIN
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - DIM
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - REDIM
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - FUNCTION
Langage de programmation - QuickBASIC/QBasic - Référence de procédures et de fonctions - SUB