Process state
Process state ( process ) -> 戻り値
引数 | 型 | 説明 | |
---|---|---|---|
process | Integer | → | プロセス番号 |
戻り値 | Integer | ← | プロセスの状態 |
このコマンドはスレッドセーフではないため、プリエンプティブなコードには使えません。
説明
Process state コマンドは、processに指定したプロセス番号を持つプロセスの状態を返します。
プロセスのステータスとしては以下のような定数があらかじめ定義されています:
定数 | 型 | 値 | コメント |
---|---|---|---|
Does not exist | 倍長整数 | -100 | |
Aborted | 倍長整数 | -1 | |
Executing | 倍長整数 | 0 | |
Delayed | 倍長整数 | 1 | |
Waiting for user event | 倍長整数 | 2 | |
Waiting for input output | 倍長整数 | 3 | |
Waiting for internal flag | 倍長整数 | 4 | |
Paused | 倍長整数 | 5 | |
_o_Hidden modal dialog | 倍長整数 | 6 | 互換性に関する注意: このプロセス状態は4D v16 以降存在しません。Process info コマンドにprocState=Waiting for user event および procMode=False を渡すことでこれと同等のステータスが返されます。 |
プロセスが存在しない (つまり1からCount tasks までの番号を渡さなかった) 場合、Process state はDoes not exist (-100)を返します。
例題
以下の例は、各プロセスの名前とプロセス参照番号を配列asProcNameとaiProcNumに入れます。このメソッドは、プロセスがアボートされたかを調べます。この場合、プロセス名とプロセス番号は配列に追加されません:
$vlNbTasks:=Count tasks
ARRAY TEXT(asProcName;$vlNbTasks)
ARRAY INTEGER(aiProcNum;$vlNbTasks)
$vlActualCount:=0
For($vlProcess;1;$vlNbTasks)
If(Process state($vlProcess)>=Executing)
$vlActualCount:=$vlActualCount+1
PROCESS PROPERTIES($vlProcess;asProcName{$vlActualCount};$vlState;$vlTime)
aiProcNum{$vlActualCount}:=$vlProcess
End if
End for
// Eliminate unused extra elements
ARRAY TEXT(asProcName;$vlActualCount)
ARRAY INTEGER(aiProcNum;$vlActualCount)