VALUE

Sommaire


Valuepermet de déclarer les arguments d'un sous-programme en spécifiant qu'ils sontpassés par valeur.

 

Syntaxe

   Valuemot_typeliste_var_dim

 

Paramètres

Elément

Description

Restrictions

mot_type

Un des mots-clés utilisés pour lesdéclarations :
Libelle, Shortint, Date, Integer, Decimal, Char.
Dans le cas de Char, le nom de la variable est alors suivi de ().

Ce doit être un type de donnéesd'Adonix.

liste_var_dim

Liste devar_dim séparées par le caractère ','.

Aucune.

var_dim

Variable exprimée sous l'une des formessuivantes :
nom_var ounom_var '('liste_sep ')'

Aucune.

nom_var

nom_de_variable.

Aucune.

liste_sep

Liste de séparateurs ',' ( la placeprise habituellement par l'expression des dimensions reste vide, seul lenombre de dimensions est ainsi déclaré ).

Pas plus de 3 séparateurs car le nombrede dimensions est limité à 4.

 

Exemples

   # Déclaration d'arguments d'un Call
   Subprog SOUS_TRAIT(ARGUMENT1,ARGUMENT2,   ARGUMENT3)
  Value IntegerARGUMENT1(,,) :# ARGUMENT1 est un tableau à 3 dimensions
  Value CharARGUMENT2()(,)   :# ARGUMENT2 est un tableau à 2 dimensions
  Value CharARGUMENT3()()    :# ARGUMENT3 est un tableau de chaînes decaractères
  
Value DateARGUMENT4        :# ARGUMENT4 est une date(sans dimension)

 

Description et commentaires

Valuepermet de déclarer que les arguments d'un sous-programme sont passés parvaleur, c'est-à-dire recopiés dans une variable locale créée au moment du Call.Les modifications faites sur cette variable ne seront donc pas affectées auxvariables passées en argument de l'instruction Call.

Un ordre Valueest automatiquement fait pour les arguments d'un sous-programme non déclarésdans ce sous-programme, lorsque ces arguments sont des expressions (lorsque cesont des variables, un ordre Const est fait).

Si on veut pouvoir passer des expressions comme paramètres, il faudraobligatoirement les déclarer de type Value (ou ne pas les déclarer du tout).

Lorsqu'on ne précise pas l'indice de départ pour un tableau passé enargument, celui commence à l'indice 0, même si dans le traitement appelant, ilest 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)
  Value CharARGUMENT()()    :# tableau commençant à l'indice 0

   Subprog SOUS_TRAIT1(ARGUMENT)
  Value CharARGUMENT()(1..)    :# tableau commençant à l'indice 1

Remarque

Le passage de paramètres par valeur pourra prendre du temps et de la placemémoire dans le cas de tableaux qui auraient une taille importante car ils sontrecopiés lors d'un ordre Value.

 

Erreurs associées

Erreur

Description

ERMODE(10)

Incompatibilitéde type entre la déclaration de l'argument et le paramètre passé dans leCall.

ERDIM(55)

Lenombre de dimensions déclarées ne correspond pas à la dimension de lavariable passée en paramètre.

 

Mots-clés associés

SHORTINT - DECIMAL - CHAR - DATE - INTEGER- LIBELLE - CONST - VARIABLE - CALL - SUBPROG


SOMMAIRE

Adonix X3(r) L4G
Copyright (c) Adonix 1999 - All rights reserved