第十七章 Caché 變數大全 $TEST 變數
阿新 • • 發佈:2021-01-30
技術標籤:Caché 變數大全CachéCachetest超時布林值
文章目錄
第十七章 Caché 變數大全 $TEST 變數
包含使用TIMEOUT
選項的最後一個命令產生的真值。
大綱
$TEST
$T
描述
$test
包含帶有超時的最後一個命令產生的真值(1或0)。$TEST
由以下命令設定,無論它們是從終端提示符輸入還是在例程程式碼中遇到:
- 如果在超時之前嘗試啟動
new job
成功,則計時作業會將$TEST
$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
Setting $TEST
可以使用set
命令將$test
設定為布林值。值1或任何非零數值設定$test=1
。值0或非數字字串值設定$test=0
。
$test
可以由任何可以返回邏輯條件的命令或函式設定。
維護$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
,然後生成適當的訊息。