SI/SO 双字节字符的用法
SI/SO usage in double byte character
IBM Enterprise COBOL Language Reference:
中有一个有关如何使用 SHIFT-OUT 和 SHIFT-IN 的示例
DATA DIVISION.
WORKING-STORAGE.
01 DBCSGRP.
05 SO PIC X.
05 DBCSITEM PIC G(3) USAGE DISPLAY-1.
05 SI PIC X.
.
.
.
PROCEDURE DIVISION.
MOVE SHIFT-OUT TO SO
MOVE G"<D1D2D3>" TO DBCSITEM
MOVE SHIFT-IN TO SI
DISPLAY DBCSGRP
<
Represents the shift-out control character (X'0E')
>
Represents the shift-in control character (X'0F')
我不明白为什么我们必须在 SO/SI 中已经有 SHIFT-OUT/SHIFT-IN 的 G 文字内容中插入 < 和 >。
它是 G-literal(或带有编译器选项 NSYMBOL(DBCS) 的 N-literal)的格式。它是规则。
shift-out/-in 不是文字本身的 部分,因此组项需要包含它自己的 shift-out/-in 以便 DBCS 字符表示任何东西(在引用组项目的情况下)。
前导和尾随移位字节是必需的,因为每个 DBCS 字符都由任意一对字节组成,具有从 X'00' 到 X'FF' 的任何值,因此可以(并且确实)包含十六进制值换档字符数。
由于 DBCS 文字可以在可以使用 DBCS 项的相同位置使用,例如 NATIONAL-OF 函数,因此 DBCS 文字必须遵守正确解释其值的规则。
在编译器中编写代码时,他们是否可以使 shift-out/-in 隐含?好吧,他们没有。故事结束。
IBM Enterprise COBOL Language Reference:
中有一个有关如何使用 SHIFT-OUT 和 SHIFT-IN 的示例DATA DIVISION.
WORKING-STORAGE.
01 DBCSGRP.
05 SO PIC X.
05 DBCSITEM PIC G(3) USAGE DISPLAY-1.
05 SI PIC X.
.
.
.
PROCEDURE DIVISION.
MOVE SHIFT-OUT TO SO
MOVE G"<D1D2D3>" TO DBCSITEM
MOVE SHIFT-IN TO SI
DISPLAY DBCSGRP
<
Represents the shift-out control character (X'0E')
>
Represents the shift-in control character (X'0F')
我不明白为什么我们必须在 SO/SI 中已经有 SHIFT-OUT/SHIFT-IN 的 G 文字内容中插入 < 和 >。
它是 G-literal(或带有编译器选项 NSYMBOL(DBCS) 的 N-literal)的格式。它是规则。
shift-out/-in 不是文字本身的 部分,因此组项需要包含它自己的 shift-out/-in 以便 DBCS 字符表示任何东西(在引用组项目的情况下)。
前导和尾随移位字节是必需的,因为每个 DBCS 字符都由任意一对字节组成,具有从 X'00' 到 X'FF' 的任何值,因此可以(并且确实)包含十六进制值换档字符数。
由于 DBCS 文字可以在可以使用 DBCS 项的相同位置使用,例如 NATIONAL-OF 函数,因此 DBCS 文字必须遵守正确解释其值的规则。
在编译器中编写代码时,他们是否可以使 shift-out/-in 隐含?好吧,他们没有。故事结束。