第四十四章 终端输入 输出 - 特殊协议字符影响终端 I O
特殊协议字符影响终端 I O
每个操作系统都会拦截某些协议字符 (UNIX
) 或组合键(例如 Windows
平台上的CTR-ALT-DEL
),以防止这些字符影响 IRIS
。 Windows
控制台不会尝试覆盖这些操作系统特征。
其他特殊字符可以改变例程的执行方式,但不会出现在READ
命令变量中。在图像模式下操作终端会取消这些效果,并使 IRIS
像对待任何其他字符一样对待这些字符。
READ
受输出和输入控制字符的影响。 READ
只是读取除终止字符之外的所有其他控制字符。它不回应他们。
输出控制字符影响例程的流程和输出。下表对此进行了描述:
输出控制字符
输出控制字符 | 十进制值 | 定义 |
---|---|---|
Ctrl-C | 3 | 如果启用了中断,则Ctrl-C 会中断例程的执行。该例程的行为就像发生错误。如果禁用中断,则Ctrl-C 会导致 IRIS 丢弃当前READ 中迄今为止输入的任何内容。可以使用Ctrl-C 中断需要网络操作的全局模块请求。要捕获Ctrl-C ,请设置特殊变量$ZTRAP 。有关其他信息,请参阅有关启用中断的部分。 |
Ctrl-S | 19 | Ctrl-S 暂停到终端的输出。当 IRIS 遇到Ctrl-Q 时,终端输出将恢复。 |
Ctrl-Q | 17 | Ctrl-Q 恢复由Ctrl-S 暂停的输出。 |
输入控制字符影响输入。图像模式(I
协议)将这些字符视为数据,但在正常模式下它们会影响当前READ命令的输入。这些字符的描述如下表所示:
输入控制字符
输入控制字符 | 小数值 | 定义 |
---|---|---|
Delete | 127 | 删除字符删除最后输入的字符。如果重复按 Delete 键,则会从右向左删除字符,但不会超出当前READ 的开头。删除使用退格键删除 CRT 屏幕上的最后一个字符。在打印终端(例如电传打字机)上以反斜杠字符(“\” )形式删除回显。 |
Ctrl-U | 21 | 删除自当前READ 开始以来输入的所有字符或 UNIX 预输入缓冲区中直到最后一个回车符的内容。 Ctrl-U 擦除 CRT 上删除的字符;在打印机上,它会回显 ^U 并发送 Return 和 LineFeed 要完全刷新预输入缓冲区,请使用Ctrl-X 。 |
Ctrl-H | 8 | 在某些系统上执行与删除相同的功能。 |
Return | 13 | 在除“I ”(图像模式)之外的所有协议中,回车都会结束READ 。 |
Escape | 27 | 开始转义序列。序列本身结束READ ,并且$ZB 包含完整序列,包括前导 Escape 。IRIS 不会回显序列中的字符,但它会更改$X 和$Y ,除非在WRITE * 命令中包含转义序列。请参阅本页前面的$X 和 $Y 以及光标位置。无效的转义序列设置$ZA 的位 8 。考虑这个例子, READ X 。输入字符“AB” 、 Escape 和“E” 后, X 将包含两个字符“AB” ,而$ZB 包含两个字符 Escape E 。 $X 对于AB 会增加 2 ,但对于 $ZB 则不会增加E。 |
LineFeed | 10 | IRIS 将 LineFeed 解释为所有终端 I/O 的终止符。 |
Tab | 9 | Tab 是一个数据值,它显示为空格,将$X 加一,并作为 Tab 字符存储在READ 返回的字符串中。对于除“T” (终止符)之外的所有协议都是如此。在“T” 协议中,制表符是终止符控制字符。 |
禁用 UNIX®
作业控制
在 IRIS 中使用 UNIX®
作业控制字符Ctrl-Z
可能会导致严重问题。因此,当在 UNIX® shell
支持作业控制的平台上进入 IRIS
时, IRIS
会自动禁用Ctrl-Z
。当退出 以及发出$ZF(-1)
调用来执行 UNIX® shell
命令时, IRIS
会重新启用Ctrl-Z
。
READ 命令如何处理输入
READ
命令处理从输入缓冲区到达的每个字符。下表显示了正常模式下如何进行此处理。下图显示了READ
命令如何处理图像模式数据。