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

2021-01-21  本文已影响0人  Cache技术分享

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

包含最近读取的终止符。

大纲

$KEY
$K

描述

$KEY包含终止当前设备上的最后一个READ命令的字符或字符序列。 $KEY$ZB在功能上非常相似;请参阅下面的详细比较。

$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都包含终止读取操作的字符。这两个特殊变量相似,但不完全相同。以下是主要区别:

命令行上的$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
;为空字符串返回空行(超时)
;返回终止符的十六进制值
上一篇下一篇

猜你喜欢

热点阅读