第九章 Caché 變量大全 $KEY 變量 第九章 Caché 變量大全 $KEY 變量 大綱 描述 示例 注意

第九章 Caché 變量大全 $KEY 變量

包含最近讀取的終止符。

大綱

$KEY
$K

描述

$KEY包含終止當前設備上的最後一個READ命令的字符或字符序列。 $KEY$ZB在功能上非常相似;請參閱下面的詳細比較。

  • 如果最後一次讀取由於終止符(如<Return>鍵)而終止,則$key包含終止符。
  • 如果上次讀取由於超時或固定長度的讀取長度限制而終止,則$key包含空字符串。未遇到終止符。
  • 如果最後一次讀取是單字符讀取(READ*a),並且輸入了一個字符,則$KEY包含實際的輸入字符。

$KEY$ZB非常相似,儘管不完全相同。請參閱下面的內容進行比較。

可以使用set命令爲$key指定值。可以使用ZZDUMP命令顯示$KEY的值。

在終端會話期間,每個命令行的結尾都記錄在$key中作爲回車符(十六進制0D)。此外,$KEY特殊變量由初始化終端會話的進程初始化爲回車符。因此,要在終端會話期間顯示由READ命令或SET命令設置的$KEY的值,必須將$KEY值複製到同一行代碼中的局部變量。

示例

在下面的示例中,可變長度讀取命令要麼從終端接收數據,要麼在10秒後超時。如果用戶在超時之前輸入數據,則$KEY包含終止數據輸入的用戶輸入回車(十六進制0D)。但是,如果讀取超時,則$key包含空字符串,表示沒有收到終止符。

DHC-APP>READ "Ready or Not: ",x:10
Ready or Not: 10
DHC-APP> ZZDUMP $KEY
 
0000: 0D   

在下面的示例中,固定長度的讀取命令要麼從終端接收數據,要麼在10秒後超時。如果用戶輸入指定數量的字符(在本例中爲一個字符),則用戶不必按<Return>即可結束讀取操作。用戶可以通過按<Return>來響應讀取提示,而不是輸入指定的字符數。

如果讀取操作超時,則$KEY$ZB都包含空字符串。如果用戶輸入一個字符的中間首字母,$key將包含空字符串,因爲定長讀取操作在沒有終止符的情況下結束。如果用戶按<Return>而不是輸入中間的首字母,$key將包含用戶輸入的回車。

/// d ##class(PHA.TEST.SpecialVariables).KEY()
ClassMethod KEY()
{
    READ "Middle initial: ",z#1:10
    IF $ASCII($ZB)=-1 {
        WRITE !,"讀取超時" }
    ELSEIF $ASCII($KEY)=-1 {
        WRITE !,"輸入了一個字符" }
    ELSEIF $ASCII($KEY)=13 {
        WRITE !,"輸入了行回車符" }
    ELSE {
        WRITE !,"意想不到的結果" }
}
DHC-APP>d ##class(PHA.TEST.SpecialVariables).KEY()
Middle initial:
讀取超時
DHC-APP>d ##class(PHA.TEST.SpecialVariables).KEY()
Middle initial: 1
輸入了一個字符
DHC-APP>d ##class(PHA.TEST.SpecialVariables).KEY()
Middle initial:
輸入了行回車符

注意

$KEY$ZB的比較

$KEY$ZB都包含終止讀取操作的字符。這兩個特殊變量相似,但不完全相同。以下是主要區別:

  • 可以使用set命令設置$key。無法設置$ZB
  • 在定長讀取成功之後,$ZB包含最終字符輸入(例如,當5位郵政編碼“02138”作爲定長讀取輸入時,$ZB包含“8”)。在成功進行定長讀取之後,$KEY包含空字符串(“”)。
  • $KEY不支持基於塊的讀寫操作,如磁帶I/O。

命令行上的$KEY

從終端命令行交互發出命令時,按<Return>可發出每個命令行。$KEY$ZB特殊變量記錄此命令行終止符。因此,當使用$KEY$ZB返回讀取操作的終止狀態時,必須將變量設置爲同一命令行的一部分。

例如,如果發出以下命令:

DHC-APP>READ x:10

從命令行,然後檢查key,它將不包含讀取操作的結果;它將包含執行命令行的`<return>`字符。要返回讀取操作的結果,請在同一命令行中使用`KEY`設置一個局部變量,如下所示:

DHC-APP>READ x:10 SET rkey=$KEY

這將保留由讀取操作設置的$key的值。要顯示此讀取操作值,請發出以下命令行語句之一:

DHC-APP>WRITE $ASCII(rkey)
-1
;空字符串返回-1(超時)
;返回終止符的ASCII十進制值
DHC-APP>ZZDUMP rkey
;爲空字符串返回空行(超時)
;返回終止符的十六進制值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章