Variable permet de déclarer les arguments d'un sous-programme en spécifiant qu'ils sont passés par adresse.
Variable mot_type liste_var_dim
Elément | Description | Restrictions |
mot_type | Un des mots-clés utilisés pour les déclarations : | Ce doit être un type de données d'Adonix. |
liste_var_dim | Liste de var_dim séparées par le caractère ','. | Aucune. |
var_dim | Variable exprimée sous l'une des formes suivantes : | Aucune. |
nom_var | nom_de_variable. | Aucune. |
liste_sep | Liste de séparateurs ',' ( la place prise habituellement par l'expression des dimensions reste vide, seul le nombre de dimensions est ainsi déclaré ). | Pas plus de 3 séparateurs car le nombre de dimensions est limité à 4. |
# Déclaration d'arguments d'un Call
Subprog SOUS_TRAIT(ARGUM1, ARGUM2, ARGUM3)
Variable Integer ARGUM1(,,) :# ARGUM1 est un tableau à 3 dimensions
Variable Char ARGUM2()(,) :# ARGUM2 est un tableau à 2 dimensions
Variable Date ARGUM3 :# ARGUM3 est une date (sans dimension)
Variable permet de déclarer que les arguments d'un sous-programme sont passés par adresse. Les variables déclarées ainsi sont définies dans la classe [L], mais elles pointent sur les variables passées en paramètre du Call. Autrement dit, toute modification faite sur une des variables dans le sous-programme se répercute dans les variables passées en paramètre du Call.
Lorsqu'on ne précise pas l'indice de départ pour un tableau passé en argument, celui commence à l'indice 0, même si dans le traitement appelant, il est déclaré commençant par un autre indice. Exemple :
# Appel des sous-programmes
Local Char ARGUMENT(30)(1..6)
Call SOUS_TRAIT0
Call SOUS_TRAIT1
Subprog SOUS_TRAIT0(ARGUMENT)
Variable Char ARGUMENT()() :# tableau commençant à l'indice 0
Subprog SOUS_TRAIT1(ARGUMENT)
Variable Char ARGUMENT()(1..) :# tableau commençant à l'indice 1
Erreur | Description |
ERMODE (10) | Incompatibilité de type entre la déclaration de l'argument et le paramètre passé dans le Call. |
ERDIM (55) | Le nombre de dimensions déclarées ne correspond pas à la dimension de la variable passée en paramètre. |
ERARGTY (70) | L'argument passé au Call est une expression (elle ne peut être passée que par valeur). |