第十七章 Caché 變量大全 $TEST 變量 第十七章 Caché 變量大全 $TEST 變量 大綱 描述 示例 注意

第十七章 Caché 變量大全 $TEST 變量

包含使用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(零)。

Setting $TEST

可以使用set命令將$test設置爲布爾值。值1或任何非零數值設置$test=1。值0或非數字字符串值設置$test=0

$test可以由任何可以返回邏輯條件的命令或函數設置。

維護$TEST

未指定超時的成功的JOBLOCKOPENREAD命令不會更改$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的操作

沒有超時的JOBLOCKOPENREAD命令對$TEST無效。後置條件表達式對$TEST也沒有影響。

面向塊的IF命令(通過將其括在花括號中來定義代碼塊)絕不使用$TEST。以下對IF遺留命令的調用也不使用$TEST:不帶參數的遺留IFELSE命令對$TEST無效。

不成功的定時操作

在定時操作不成功後,Caché不會生成錯誤消息。應用程序必須檢查$test,然後生成適當的消息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章