1. 程式人生 > 其它 >第十七章 Caché 變數大全 $TEST 變數

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

技術標籤:Caché 變數大全CachéCachetest超時布林值

文章目錄

第十七章 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,然後生成適當的訊息。