美文网首页
第九章 Caché 变量大全 $KEY 变量

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

作者: Cache技术分享 | 来源:发表于2021-01-21 06:49 被阅读0次

    第九章 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
    ;为空字符串返回空行(超时)
    ;返回终止符的十六进制值
    

    相关文章

      网友评论

          本文标题:第九章 Caché 变量大全 $KEY 变量

          本文链接:https://www.haomeiwen.com/subject/fxcrzktx.html