包含使用TIMEOUT
选项的最后一个命令产生的真值。
$TEST
$T
$test
包含带有超时的最后一个命令产生的真值(1或0)。$TEST
由以下命令设置,无论它们是从终端提示符输入还是在例程代码中遇到:
new job
成功,则计时作业会将$TEST
设置为1。如果超时到期,则$TEST
设置为0。lock
成功,则定时LOCK
将$TEST
设置为1。如果超时到期,则$TEST
设置为0。open
成功,则定时打开会将$TEST
设置为1。如果超时到期,则$TEST
设置为0。read
在超时到期前完成,则定时读取会将$TEST
设置为1。如果超时到期,则$TEST
设置为0。在没有超时的情况下发出这些命令不会设置$TEST
。
注意:$test
也是由旧版本的if
命令设置的。当前块结构的IF
命令既不设置也不检查它。当计算旧式IF
命令的测试表达式时,$TEST
被设置为等于结果真值。换句话说,如果if
表达式测试为真,则$test
被设置为1。如果它测试为false,则$test
被设置为0(零)。
可以使用set
命令将$test
设置为布尔值。值1或任何非零数值设置$test=1
。值0或非数字字符串值设置$test=0
。
$test
可以由任何可以返回逻辑条件的命令或函数设置。
未指定超时的成功的JOB
,LOCK
,OPEN
或READ
命令不会更改$TEST
的现有值。
在调用过程时,DO
命令保持$TEST
的值,而在调用子例程时,则保持不变。
调用execute_code
时,ZBREAK
命令将保持$TEST
的值。
以下代码执行定时读取,并使用$TEST
测试读取是否完成。
/// d ##class(PHA.TEST.SpecialVariables).TEST()
ClassMethod TEST()
{
READ !,"Type a letter: ",a#1:10
IF $TEST {
DO Success(a)
} ELSE {
DO TimedOut
}
Success(val)
WRITE !,"Received data: ",val
TimedOut()
WRITE !,"Timed out"
}
DHC-APP>d ##class(PHA.TEST.SpecialVariables).TEST()
Type a letter: 2
Received data: 2
DHC-APP>d ##class(PHA.TEST.SpecialVariables).TEST()
Type a letter:
Timed out
$TEST
的操作没有超时的JOB
,LOCK
,OPEN
和READ
命令对$TEST
无效。后置条件表达式对$TEST
也没有影响。
面向块的IF
命令(通过将其括在花括号中来定义代码块)绝不使用$TEST
。以下对IF
遗留命令的调用也不使用$TEST
:不带参数的遗留IF
和ELSE
命令对$TEST
无效。
在定时操作不成功后,Caché不会生成错误消息。应用程序必须检查$test
,然后生成适当的消息。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。