Version 6.0
SET PROCESS VARIABLE (Prozess; ZielVar; Ausdr{; ZielVar2; Ausdr2; ...; ZielVarN; AusdrN})
Parameter | Typ | Beschreibung | |
Prozess | Numerisch | Zielprozessnummer | |
ZielVar | Variable | Zielvariable | |
Ausdr | Variable | Quellausdruck (oder Quellvariable) |
Beschreibung
Der Befehl SET PROCESS VARIABLE schreibt die Prozessvariablen ZielVar (dstVar2, etc.) des Zielprozesses mit der in Prozess übergebenen Nummer mit den in Ausdr1 (expr2, etc.) übergebenen Werten.
Jede Zielvariable kann eine Variable oder ein Array-Element sein. Beachten Sie hierzu jedoch die unten aufgelisteten Einschränkungen.
In jedem Paar QuellVar;ZielVar müssen beide Variablen zueinander kompatibel sein, da sonst die erhaltenen Werte evtl. ohne Bedeutung sind. Gibt es keine Zielvariable im interpretierten Modus, wird sie erstellt und mit dem Ausdruck zugewiesen.
Der aktuelle Prozess "überfliegt" die Variablen aus dem Zielprozessdieser Prozess erhält keine Warnung, dass ein anderer Prozess die Instanz seiner Variablen liest.
4D Server: Mit 4D Client können Sie Variablen in einen Zielprozess schreiben, der auf dem Server-Rechner ausgeführt wird (Serverprozedur). Versehen Sie dazu die im Parameter Prozess angegebene Nummer mit einem Minuszeichen.
Wichtig: Die Prozesskommunikation zwischen mehreren Rechnern über den Befehl SET PROCESS VARIABLE ist nur vom Client zum Server möglich. Es ist immer ein Client-Prozess, der die Variablen einer Serverprozedur liest oder schreibt.
Tipp: Kennen Sie nicht die Kennummer der Serverprozedur, können Sie auch die Interprozessvariablen des Servers verwenden. Dazu können Sie jeden negativen Wert in Prozess eingeben. Sie müssen also nicht unbedingt die Kennummer des Prozesses wissen, um SET PROCESS VARIABLE mit den Interprozessvariablen des Servers einzusetzen. Das ist von Vorteil, wenn eine Serverprozedur mit der Datenbankmethode On server startup gestartet wird. Da Client-Rechner nicht automatisch die Kennummer dieses Prozesses wissen, können Sie im Parameter Prozess einen beliebigen negativen Wert übergeben.
Einschränkungen
SET PROCESS VARIABLE erlauben keine lokalen Variablen als Zielvariablen.
SET PROCESS VARIABLE erlaubt jede Art von Zielprozess oder Interprozessvariablen. Davon ausgenommen sind:
Zeiger
Arrays jeglichen Typs. Wollen Sie ein Array als Ganzes von einem Prozess in einen anderen schreiben, verwenden Sie den Befehl VARIABLE TO VARIABLE. Beachten Sie jedoch, dass Sie mit SET PROCESS VARIABLE das Element eines Array schreiben können.
Sie können nicht das Element eines Array von Zeigern oder eines Elements eines zweidimensionalen Array schreiben.
Der Zielprozess muss ein Benutzerprozess sein, er kann kein Kernel-Prozess sein. Gibt es keinen Zielprozess, wird ein Fehler erzeugt. Diesen Fehler können Sie mit einer Fehlerverwaltungsmethode abfangen, die mit ON ERR CALL installiert wurde.
Beispiele
1. Diese Codezeile setzt (zum leeren String) die Textvariable vtCurStatus des Prozesses mit der in $vlProcess übergebenen Nummer:
SET PROCESS VARIABLE($vlProcess;vtCurStatus;"")
2. Diese Codezeile setzt die Textvariable vtCurStatus des Prozesses mit der in $vlProcess übergebenen Nummer auf den Wert der Variablen $vtInfo aus der ausführenden Methode im aktuellen Prozess:
SET PROCESS VARIABLE($vlProcess;vtCurStatus;$vtInfo)
3. Diese Codezeile setzt die Textvariable vtCurStatus des Prozesses mit der in $vlProcess übergebenen Nummer auf den Wert derselben Variablen im aktuellen Prozess:
SET PROCESS VARIABLE($vlProcess;vtCurStatus;vtCurStatus)
Hinweis: Das erste vtCurStatus bezeichnet die Instanz der Variablen im Zielprozess. Das zweite vtCurStatus bezeichnet die Instanz der Variablen im aktuellen Prozess.
4. Dieses Beispiel setzt alle Elemente eines Prozessarray aus dem mit $vlProcess angegebenen Prozess sequentiell in Großbuchstaben:
GET PROCESS VARIABLE($vlProcess;vl_IPCom_Array;$vlSize) For($vlElem;1;$vlSize) GET PROCESS VARIABLE($vlProcess;at_IPCom_Array{$vlElem};$vtElem) SET PROCESS VARIABLE($vlProcess;at_IPCom_Array{$vlElem};Uppercase($vtElem)) End for
Hinweis: In diesem Beispiel enthält die Prozessvariable vl_IPCom_Array die Größe des Array at_IPCom_Array und muss vom Quell-/Zielprozess aufrechterhalten werden.
5. Dieses Beispiel schreibt die Instanz der Variablen v1, v2 und v3 des Zielprozesses mit der Instanz derselben Variablen aus dem aktuellen Prozess:
SET PROCESS VARIABLE($vlProcess;v1;v1;v2;v2;v3;v3)
Referenz
CALL PROCESS, Einführung in Prozesse, GET PROCESS VARIABLE, VARIABLE TO VARIABLE.
Exchanging Data Between Processes