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 隐含?好吧,他们没有。故事结束。