前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Caché 变量大全 $KEY 变量

Caché 变量大全 $KEY 变量

作者头像
用户7741497
发布2022-05-10 17:09:19
3510
发布2022-05-10 17:09:19
举报
文章被收录于专栏:hml_知识记录

Caché 变量大全 $KEY 变量

包含最近读取的终止符。

大纲

代码语言:javascript
复制
$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包含空字符串,表示没有收到终止符。

代码语言:javascript
复制
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将包含用户输入的回车。

代码语言:javascript
复制
/// 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 !,"意想不到的结果" }
}
代码语言:javascript
复制
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返回读取操作的终止状态时,必须将变量设置为同一命令行的一部分。

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

代码语言:javascript
复制
DHC-APP>READ x:10

从命令行,然后检查

KEY`设置一个局部变量,如下所示:

代码语言:javascript
复制
DHC-APP>READ x:10 SET rkey=$KEY

这将保留由读取操作设置的$key的值。要显示此读取操作值,请发出以下命令行语句之一:

代码语言:javascript
复制
DHC-APP>WRITE $ASCII(rkey)
-1
;空字符串返回-1(超时)
;返回终止符的ASCII十进制值
DHC-APP>ZZDUMP rkey
;为空字符串返回空行(超时)
;返回终止符的十六进制值

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Caché 变量大全 $KEY 变量
  • 大纲
  • 描述
  • 示例
  • 注意
    • $KEY和$ZB的比较
      • 命令行上的$KEY
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档