VARIABLE TO VARIABLE
VARIABLE TO VARIABLE ( process ; dstVar ; srcVar {; dstVar2 ; srcVar2 ; ... ; dstVarN ; srcVarN} )
引数 | 型 | 説明 | |
---|---|---|---|
process | Integer | → | 送り先プロセス番号 |
dstVar | Variable | → | 送り先変数 |
srcVar | Variable | → | ソース変数 |
このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。
説明
VARIABLE TO VARIABLEコマンドは、引数srcVar1 srcVar2に渡す値を、processに渡す番号を持つ送り先プロセスのdstVar (dstVar2等) プロセス変数に書き込みます。
VARIABLE TO VARIABLEは、SET PROCESS VARIABLEコマンドと同じ動作をしますが、以下の点が異なります:
- SET PROCESS VARIABLEコマンドは引数にソース式を渡すため、配列全体を渡すことができません。これに対して、VARIABLE TO VARIABLEコマンドは明示的に引数としてソース変数を渡すため、配列を全体として渡すことができます。
- SET PROCESS VARIABLEコマンドの各送り先変数は変数または配列要素を指定することができますが、配列全体は指定できません。VARIABLE TO VARIABLEコマンドの各送り先変数は変数、配列または配列要素を指定することができます。
カレントプロセスは送り先プロセスの変数を"のぞき見"しています。送り先プロセスは別のプロセスが自分の変数のインスタンスに書き込んでいることについては何も警告されません。
4D Server: GET PROCESS VARIABLE、SET PROCESS VARIABLE、VARIABLE TO VARIABLEコマンドにより提供されるマシン間プロセス通信はクライアントからサーバへのみ行うことができます。ストアドプロシジャの読み書きを行うのは常にクライアントプロセスです。
srcVar;dstVarの組み合わせにおいて、ソース変数は送り先変数と互換性のあるタイプである必要があり、互換性がない場合には、意味のない値が設定されます。
インタプリタモードでは、送り先変数が存在しない場合、変数が作成されソース変数の値が設定されます。
カレントプロセスは送り先プロセスの変数を"のぞき見"しています。送り先プロセスは別のプロセスが自分の変数のインスタンスに書き込んでいることについては何も警告されません。
制限事項
VARIABLE TO VARIABLE は、送り先変数としてローカル変数を受け付けません。
VARIABLE TO VARIABLE は、任意のタイプの送り先プロセスまたはインタープロセス変数を受け付けますが、以下のタイプは除きます:
- ポインタ
- ポインタ配列
- 2次元配列
送り先プロセスは、ユーザプロセスである必要があります。カーネルプロセスは、送り先プロセスにはなれません。送り先プロセスが存在しない場合には、エラーが生成されます。ON ERR CALLコマンドでインストールされたエラー処理メソッドを使用すると、このエラーをとらえることができます。
例題
以下の例は、ローカル変数*$vlProcess*で示されたプロセスからプロセス配列を読み込み、配列要素を順番に大文字に変換して、配列を全体として書き込みます:
GET PROCESS VARIABLE($vlProcess;at_IPCom_Array;$anArray)
For($vlElem;1;Size of array($anArray))
$anArray{$vlElem}:=Uppercase($anArray{$vlElem})
End for
VARIABLE TO VARIABLE($vlProcess;at_IPCom_Array;$anArray)