提供系统间IRIS进程(JOB
)信息。
^$JOB(job_number)
^$J(job_number)
参数
-
job_number
输入ObjectScript命令时创建的系统特定OBJ编号。每个活动的InterSystems IRIS进程都有一个唯一的作业号。登录到系统会启动一个作业。在UNIX®系统上,作业号是调用InterSystems IRIS时启动的子进程的PID
。JOB_NUMBER
必须指定为整数;不支持十六进制值。
可以将^$JO
B结构化系统变量用作$DATA
、$ORDER
和$QUERY
函数的参数,以获取有关本地InterSystems IRIS系统上是否存在InterSystems IRIS作业的信息。
以下示例显示如何将^$JOB
用作$DATA
、$ORDER
和$QUERY
函数的参数。
作为$DATA的参数
$DATA(^$JOB(job_number))
^$JOB
作为$DATA
的参数返回一个整数值,该值指示指定的作业是否作为节点存在于^$JOB
中。下表显示了$DATA
可以返回的整数值。
Value | Meaning |
---|---|
0 |
JOB 不存在 |
1 |
JOB 存在 |
以下示例测试系统间IRIS进程是否存在。
DHC-APP>SET x=$JOB
DHC-APP>WRITE !,$DATA(^$JOB(x))
1
变量x
设置为当前进程的作业号(例如:4294219937)。写入操作返回布尔值1,表示此进程存在。
作为$ORDER的参数
$ORDER(^$JOB(job_number),direction)
^$JOB
作为$ORDER
的参数,按排序顺序将下一个或上一个^$JOB
编号返回到指定的作业编号。如果不存在作为^$JOB
节点的此类JOB
编号,$ORDER
将返回空字符串。
Direction参数指定是否返回下一个或上一个job
编号。如果不提供方向参数,InterSystems IRIS会将排序顺序中的下一个job
编号返回给指定的job
编号。
以下子例程搜索InterSystems IRIS作业表,并将job
号存储在名为job
的本地数组中。
/// d ##class(PHA.TEST.SpecialVariables).JOB()
ClassMethod JOB()
{
JOB
SET pid=""
FOR i=1:1 {
SET pid=$ORDER(^$JOB(pid))
QUIT:pid=""
SET JOB(i)=pid
}
zw JOB
WRITE "总共job有: ",i
QUIT
}
DHC-APP>d ##class(PHA.TEST.SpecialVariables).JOB()
JOB(1)=612
JOB(2)=1424
JOB(3)=1972
JOB(4)=5624
JOB(5)=7244
JOB(6)=7864
JOB(7)=7872
JOB(8)=7892
JOB(9)=7920
JOB(10)=8332
JOB(11)=9048
JOB(12)=9084
JOB(13)=9340
JOB(14)=10084
JOB(15)=10112
JOB(16)=10156
JOB(17)=10200
JOB(18)=10212
JOB(19)=10828
JOB(20)=22432
总共job有: 21
作为$QUERY的参数
$QUERY(^$JOB(job_number))
^$JOB
作为$QUERY
的参数,按排序顺序将下一个^$JOB
编号返回到指定的JOB
编号。如果^$JOB
中没有这样的JOB
编号作为节点,则$QUERY
将返回空字符串。
以下示例返回InterSystems IRISJOB表中的前两个JOB
。请注意间接运算符(@)
的用法:
DHC-APP>SET x=$QUERY(^$JOB(""))
DHC-APP> WRITE !,x
^$JOB("612")
DHC-APP>WRITE !,$QUERY(@x)
^$JOB("1424")