Aller au contenu principal
Version: 20 R7 BETA

VARIABLE TO VARIABLE

VARIABLE TO VARIABLE ( process ; varDestination ; varSource {; varDestination2 ; varSource2 ; ... ; varDestinationN ; varSourceN} )

ParamètreTypeDescription
processIntegerNuméro du process de destination
varDestinationVariableVariable de destination
varSourceVariableVariable source

Cette commande n'est pas thread-safe, elle ne peut pas être utilisée dans du code préemptif.

Description

La commande VARIABLE TO VARIABLE écrit la valeur de la ou des variable(s) varSource1 (varSource2, etc.), dans la ou les variable(s) process varDestination (varDestination2, etc.) du process de destination dont vous avez passé le numéro dans process.

VARIABLE TO VARIABLE a un fonctionnement semblable à celui de la commande SET PROCESS VARIABLE, avec cependant les différences suivantes :

  • Alors que vous passez comme source à SET PROCESS VARIABLEdes expressions (et donc vous ne pouvez pas passer un tableau en totalité), vous devez passer comme source à VARIABLE TO VARIABLE uniquement des variables (et donc vous pouvez passer un tableau en totalité).
  • Avec SET PROCESS VARIABLE, chaque variable de destination peut être une variable ou un élément de tableau, mais ne peut pas être un tableau. Avec VARIABLE TO VARIABLE, chaque variable de destination peut être une variable, un tableau ou un élément de tableau.

4D Server : La communication process “intermachine” permise par les commandes VARIABLE TO VARIABLE, SET PROCESS VARIABLE et GET PROCESS VARIABLE n’est possible que du client vers le serveur. C’est toujours un process client qui lit ou écrit les variables d’une procédure stockée.

Pour chaque association varDestination;varSource, le type de la variable source doit être compatible avec la variable de destination, sinon vous pourrez obtenir des variables avec des valeurs non significatives. En mode interprété, si la variable de destination n'existe pas, elle est créée puis le type et la valeur de la variable source lui sont affectés.

Lorsque le process courant écrit les variables du process de destination, ce dernier n'est averti en aucune manière de l'écriture de l'instance de ses variables par un autre process.

Restrictions

VARIABLE TO VARIABLE n'accepte pas de variables locales comme variables de destination.

VARIABLE TO VARIABLE accepte tout type de variable process ou interprocess de destination, à l'exception de variables de type :

  • Pointeur
  • Tableau de pointeurs
  • Tableau à deux dimensions

Le process de destination doit être un process utilisateur, ce ne peut être un des process du moteur de 4D. Si le process de destination n'existe pas, une erreur est retournée. Vous pouvez intercepter cette erreur à l'aide d'une méthode de gestion d'erreurs installée par la commande ON ERR CALL.

Exemple

L'exemple suivant récupère un tableau process depuis le process désigné par $vlProcess, passe séquentiellement tous ses éléments en caractères majuscules puis réécrit entièrement le tableau :

 GET PROCESS VARIABLE($vlProcess;at_IPCom_Tab;$anTab)
 For($vlElem;1;Size of array($anTab))
    $anTab{$vlElem}:=Uppercase($anTab{$vlElem})
 End for
 VARIABLE TO VARIABLE($vlProcess;at_IPCom_Tab;$anTab)

Voir aussi

GET PROCESS VARIABLE
Introduction aux process
SET PROCESS VARIABLE