文章目录

  • 第二十五章 Caché 变量大全 $ZB 变量
  • 大纲
  • 描述
    • 文件结束行为
    • 从终端或文件读取
    • 命令行上的$ZB
    • `$ZB`,带磁带I/O

第二十五章 Caché 变量大全 $ZB 变量

包含当前I / O设备的状态信息。

大纲

$ZB

描述

$ZB包含读取操作后特定于当前I / O设备的状态信息

  • 从终端,顺序文件或其他基于字符的I / O设备读取时,$ZB包含读取操作的终止字符。它可以是终止符(例如),如果读取操作不需要终止符,则可以是输入数据的最后一个字符;如果需要终止符但未收到终止符,则可以是空字符串(例如,如果读取操作超时)。
  • 从磁带等基于块的I / O设备读取数据时,ZB包含I/O缓冲区中剩余的字节数。写入磁带时,‘ZB包含I / O缓冲区中剩余的字节数。写入磁带时,`ZB包含I/O缓冲区中剩余的字节数。写入磁带时,‘ZB`还包含I / O缓冲区中的字节数。

不能使用SET命令修改此特殊变量。尝试这样做会导致<SYNTAX>错误。

从基于字符的设备或文件中读取时,$ZB$KEY都可以用于返回READ终止字符。对于基于字符的读取,这两个特殊变量非常相似,但不完全相同。对于基于块的读写(例如磁带),请使用$ZB; $KEY不支持基于块的读取和写入操作。

文件结束行为

默认情况下,Caché通过发出<ENDOFFILE>错误来处理顺序文件的文件结尾;它不会设置$ZB。可以以与MSM兼容的方式配置文件结束行为。在这种情况下,遇到文件结尾时,Caché不会发出错误,而是将$ZB设置为“”(空字符串),并将$ZEOF设置为-1。

要配置文件结束处理,请转到管理门户,依次选择“系统”,“配置”,“兼容性设置”。查看和编辑SetZEOF的当前设置。设置为“true”时,Caché将$ZB设置为“”(空字符串),并将$ZEOF设置为-1。默认值为“false”。

可以使用%SYSTEM.Process类的SetZEOF()方法控制当前进程的文件结束处理。可以通过设置Config.Miscellaneous类的SetZEOF属性来建立系统范围的默认行为。

从终端或文件读取

$ZB包含涉及终端,顺序文件或其他基于字符的I / O设备的读取操作中的终止字符(或字符序列)。 $ZB可以包含以下任意一项:

  • 终止符,例如回车符。
  • 转义序列(最多16个字符)。
  • 固定长度READ x#n中的第n个字符。 (在这种情况下,$KEY特殊变量返回空字符串。)
  • READ * x的单个字符。
  • 定时读取到期后为空字符串(“”)。

例如,考虑以下具有5秒超时的可变长度读取:

/// d ##class(PHA.TEST.SpecialVariables).ZB()
ClassMethod ZB()
{ZbreadREAD !,"Enter number:",num:5WRITE !, numWRITE !, $ASCII($ZB)QUIT
}
DHC-APP>d ##class(PHA.TEST.SpecialVariables).ZB()Enter number:13
DHC-APP>d ##class(PHA.TEST.SpecialVariables).ZB()Enter number:2
2
13

如果用户在读取提示符下键入123并按<Return>,则Caché将123存储在num变量中,并将<Return>(ASCII十进制代码13,十六进制0D)存储在ZB中。如果读取超时,‘ZB中。如果读取超时,`ZB中。如果读取超时,‘ZB包含空字符串;$ASCII(“”)`返回值-1。

命令行上的$ZB

从终端命令行交互发出命令时,按<Return>可发出每个命令行。$ZB$KEY特殊变量记录此命令行终止符。因此,当使用$ZB$KEY返回读取操作的终止状态时,必须将变量设置为同一命令行的一部分。

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

DHC-APP>READ x:10

从命令行检查$ZB,它将不包含读取操作的结果;它将包含执行命令行的<return>字符。要返回读取操作的结果,请在同一命令行中使用$ZB设置一个局部变量,如下所示:

DHC-APP>READ x:10 SET rzb=$ZB

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

WRITE $ASCII(rzb); 空字符串(超时)返回-1,; 返回终止符字符的ASCII十进制值
ZZDUMP rkey; 为空字符串返回空行(超时); 返回终止符的十六进制值

$ZB,带磁带I/O

$ZB包含有关驱动程序缓冲区的状态信息。具体地说,它包含磁带驱动器内部缓冲区中剩余的字节数。

读完一个区块后,Caché会立即将$ZB设置为该区块的大小。当将逻辑记录从缓冲区转移到变量(使用READ命令)时,Caché将$ZB值递减,直到其达到0,然后发生下一个块读取。

写入磁带时,$ZB显示驱动程序内部缓冲区中剩余的可用空间(以字节为单位)。写入块后,Caché立即将$ZB设置为OPEN命令指定的缓冲区大小。当将逻辑记录从Caché变量传输到缓冲区(使用WRITE命令)时,Caché递减$ZB号,直到其达到0并发生块写入。

大多数磁带程序不必关心$ZB,除非它们必须处理异常的格式和可变长度的块。

为了监视磁带操作,程序可以在每次读写后测试$ZA的相应位。

以下代码在每次读取磁带后都检查$ZA$ZB,并在这些变量中的任何一个指示错误时设置MTERR。发生磁带错误时,它还会设置$ZTRAP

   ; $$MTIN(mtdev)=磁带设备mtdev的下一个逻辑记录。还返回za = $ZA和zb = $ZB在出现磁带错误时,mterr = 1和$$MTIN(mtdev)=“”期望调用者设置$ZT来捕获其他错误。
MTIN(io)NEW rec,curdevSET mterr=0,curdev=$IO,$ZT="MTIERR"USE io READ rec
MTIEXITSET za=$ZA,zb=$ZBUSE curdevQUIT rec
MTIERRIF $ZERROR["MAGTAPE" {USE curdev ZQUIT 1 GOTO @$ZTRAP }; Use caller's error trap.ELSE {SET $ZTRAP="",mterr=1,rec=""GOTO MTIEXIT }

如果终止符完成READ,则Caché 模式将终止符作为$ZB中的字符串返回。

如果转义序列终止读取,则Caché模式将ASCII转义序列作为$ZB中的字符串返回。

第二十五章 Caché 变量大全 $ZB 变量相关推荐

  1. 第二十五章补充内容 5 不能为0的变量

    // 第二十五章补充内容 5 不能为0的变量 /*#define DEBUG #include <iostream> #include <string> using names ...

  2. 第二十四章 Caché 变量大全 $ZA 变量

    文章目录 第二十四章 Caché 变量大全 $ZA 变量 大纲 描述 注意 `$ZA`,带终端I / O 带磁带I / O的$ZA 第二十四章 Caché 变量大全 $ZA 变量 包含当前设备上最后一 ...

  3. 25 linux ndk 头文件_正点原子Linux第二十五章RTC实时时钟实验

    1)资料下载:点击资料即可下载 2)对正点原子Linux感兴趣的同学可以加群讨论:935446741 3)关注正点原子公众号,获取最新资料更新 第二十五章RTC实时时钟实验 实时时钟是很常用的一个外设 ...

  4. 第十五章 Caché WebSocket

    文章目录 第十五章 Caché WebSocket 使用WebSockets (RFC 6455) Short Polling 短轮询 Long Polling 长轮询 HTTP Streaming ...

  5. 第七十五章 Caché 函数大全 $XECUTE 函数

    文章目录 第七十五章 Caché 函数大全 $XECUTE 函数 大纲 参数 描述 参数 code paramlist 示例 第七十五章 Caché 函数大全 $XECUTE 函数 执行指定的命令行. ...

  6. 【正点原子STM32连载】 第二十五章 TFTLCD(MCU屏)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  7. 【正点原子MP157连载】第二十五章 pinctrl和gpio子系统实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  8. 【正点原子STM32连载】 第二十五章 TFT-LCD(MCU屏)实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视 ...

  9. 第二十五章补充内容 3 assert()宏

    //第二十五章补充内容 3 assert()宏 //有的编译器还提供了assert()宏,这个宏在许多书中被翻译为断言,它的作用是当assert()的参数为真时,返回真,假如参数值为假,那么它将执行某 ...

最新文章

  1. 计算机房做法图集,万科建筑标准工程做法通用图集(全套)
  2. 伯克利人工智能研究院最新研究:协作型工业机器人如何更智能?
  3. 【Paper】2014_多智能体系统一致性问题研究_唐骥宇
  4. C++ Primer 5th笔记(chap 17 标准库特殊设施)IO库 之操纵符
  5. python里orient_OrientDB Python连接操作
  6. 如何修改7 服务器配置,centos7修改服务器配置
  7. python运行cmd命令和opencv搭建_Python环境搭建之OpenCV
  8. #include <iostream> C++ Hello World!
  9. Python知识点(史上最全)
  10. HSPICE与非门仿真
  11. DNS解析、智能DNS原理及CDN应用和原理
  12. python图片后缀转换---统一转换成.jpg
  13. Linux性能优化之 CPU 篇
  14. Qt::QLocale
  15. word2016论文不同章节设置页眉页码方法
  16. java的接口常用命名_Java命名和目录接口,Java Naming and Directory Interface,音标,读音,翻译,英文例句,英语词典...
  17. APIO2014 连珠线
  18. 渗透测试的灵魂:信息收集
  19. python---flask
  20. python画五环图_对Python安装及绘制五环图的初步认识,初识,pythonpython,与

热门文章

  1. AppleWatch开发初探
  2. LeetCode 2106. 摘水果
  3. 排队论MM1与MMN的java仿真(含源代码)(美赛17年D题所用到)
  4. 西南交大计算机学校地址,西南交通大学
  5. Python-String模块
  6. 计算机毕业设计Javaweb家教信息服务平台设计与实现(源码+系统+mysql数据库+lw文档)
  7. java生成的验证码乱码
  8. SEO 如何提升网站权重?
  9. 【数据链路层】基础知识
  10. 英国南安普顿大学医院博士后职位—儿科重症监护