文章
· 十二月 4 阅读大约需 5 分钟

第四十章 终端输入 输出 - 用于OPEN和USE的字母代码协议

第四十章 终端输入 输出 - 用于OPEN和USE的字母代码协议

用于OPEN和USE的字母代码协议

特殊情况或终端可能需要不同的协议。使用协议字母代码参数(或相应的关键字参数),可以更改 IRIS 与终端通信的规则。协议对正常读取和单字符读取的影响是一样的。

禁用所有特殊协议的正常模式足以满足大多数终端 I/O 的需要。在正常模式下,IRIS 会回显每个传入的 ASCII 字符,并将其发送回以显示在终端上。 Return或有效的转义序列结束READ命令。

对终端发出OPEN会关闭所有先前的协议,除非您使用 +- 选项。

下表描述了有效的协议字符及其效果。

用于开放和使用的字母代码协议

协议字符 姓名 定义
B BREAK 如果启用了中断 (+B),则Ctrl-C将中断正在运行的例程并使用错误。如果禁用中断 (-B),则Ctrl-C不会引起中断,并且不会显示“^C”。该协议的使用取决于登录模式默认建立的BREAK命令,如下:
如果以程序员模式登录,则始终启用中断 ( BREAK 1 )。 OPENUSE命令中指定的 B(或 /BREAK)协议无效。
如果以应用程序模式登录,则默认为BREAK 0 ,并且可以通过OPENUSE命令中指定的 B(或 /BREAK)协议来启用或禁用中断。
C CRT terminal C 模式接受所有八位字符作为数据,但以下六位字符除外:ASCII 3、8、10、13、21 和 127ASCII 127 删除字符回显为破坏性退格,即退格并擦除前面的字符特点。 ASCII 21 ( Ctrl-U ) 回显足够的破坏性退格键,将光标移至READ的开头。如果右边距的设置或终端的性质强制回显字符开始新行,则Ctrl-U只能删除最后一个物理行上的字符。在任何情况下, Ctrl-U都会取消自READ开始以来的所有输入。 CP 协议互斥。
F Flush 在每次READ之前刷新(清空)输入缓冲区。可以刷新输入缓冲区以禁止用户在终端上的READ操作之前键入,因为 IRIS 会丢弃READ操作之间键入的任何内容。请注意,无论F 协议如何,命令WRITE *–1都会随时刷新输入缓冲区。
I Image mode I 模式接受所有 256 个八位字符作为数据,不将任何字符视为 READ 终止符,除了在终止符参数中明确指定的终止符(如果有)之外。如果没有显式指定终止字符,则应仅使用单个字符和固定长度的READ操作。如果没有定义终止字符,普通的READ将导致 <TERMINATOR> 错误。
图像模式(I)协议可以与其他协议字符组合。在图像模式下,IRIS 忽略协议字符 PCB。在图像模式下,协议字符 F、N、R、S 和 T 仍然有效。当不处于图像模式时,设备处于 N(正常)模式。
K\name\ I/O Translation Mode 当对设备使用 K 协议时,如果已在系统范围内启用转换,则该设备将发生 I/O 转换。您可以通过指定表的名称来标识转换所基于的先前定义的表。 (较旧的形式 Knum,其中“num”表示加载表的槽号,已被淘汰,但仍受支持。)
N Normal mode N 模式接受所有八位字符作为数据,但以下六位字符除外:ASCII 3、8、10、13、21127。这些隐式终止符和命令行编辑控制字符将在本页后面介绍。如果启用 R(读行重调用)协议,则 N 禁用 R 协议。如果未指定协议值,则此模式为默认模式。
P Print device 打印装置 ASCII 删除字符回显为反斜杠 (\), Ctrl-U回显为“^U”,后跟回车符和换行符。当您对终端发出OPEN命令时,IRIS 自动调用协议 C 或 P,具体取决于操作系统终端设置。这些协议将一直有效,直到您明确更改设备的协议为止。既不包含 C 也不包含 P 的协议字符串不会取消该协议。
R 启用读取行调用模式 R 协议启用该设备的读取行调用模式。要激活当前进程的读取行调用,请使用 LineRecall() 。 R 协议会覆盖指定设备的这些默认设置。要更改已打开设备的读取行调用,必须向该设备显式指定另一个OPEN命令。通过指定 N 协议禁用读取行调用。
S Secret input READ上没有任何回声。 READ命令不会更改$X$Y 。读取行调用被禁用。
T Terminator T 模式不将任何控制字符视为数据。以下是控制字符:十进制值从 031127159ASCII 字符。这些控制字符中的大多数被视为 READ 终止符。以下控制字符除外,它们执行其他控制操作:ASCII 3 ( Ctrl-C )、ASCII 8 (退格键)、ASCII 17 ( Ctrl-Q )、ASCII 19 ( Ctrl-S )、ASCII 21 ( Ctrl-U ) )、ASCII 24 ( Ctrl-X )、ASCII 27 (ESC) 和 ASCII 127 (DEL)
T 模式与 I 模式(IT 协议)组合时,所有控制字符(ASCII 031127159)均被视为 READ 终止符,但输出控制字符Ctrl-Q (XOFF)Ctrl- S (XON),以及输入控制字符Ctrl-HCtrl-Y 。输出控制字符Ctrl-QCtrl-S会被大多数终端拦截,即使在 IT 模式下也不会终止READ
U Upcase mode U 模式将所有输入字母转换为大写。
Y\name\ $X/$Y Action Mode $X/$Y 当对设备使用 Y 协议时,系统使用名为 $X/$Y 操作表。可以通过指定表名称来识别先前定义的用于转换的 $X/$Y 操作表。 $X/$Y 操作始终启用。如果未指定 Y 并且未定义系统默认值 $X/$Y,则使用内置的 $X/$Y 操作表。 + 选项适用于打开 Y 协议,但 - 选项则无效。为了禁用 $X/$Y 关联,可以发出命令: USE 0:(:"Y0") (旧形式 Ynum,其中`num``表示表加载到的槽号,正在分阶段进行已退出,但仍受支持。)

协议字符串示例

以下一系列示例展示了协议字符串的功能。以下每个 USE 命令都建立在前面的USE 命令建立的协议之上:

   USE 0:(80:"BP" )

字母代码 BP 打开 BP 协议。此示例启用中断 (B) 并告诉 InterSystems IRIS 将终端视为打印设备 (P)。

   USE 0:(80:"P")

当它跟在上例中的USE命令之后时,该命令使 P 协议保持有效,但关闭 B 协议。

   USE 0:(80:"+R" )

+R 打开读行调用,不影响其他协议设置。

   USE 0:(80:"")

空字符串关闭所有协议。然而,PC 协议仍然有效。

   USE 0:(80)

省略协议参数会使协议和显式终止符保持不变。

讨论 (0)1
登录或注册以继续