双字节字符的SI / SO用法

时间:2016-03-16 09:45:45

标签: cobol mainframe

有一个例子说明如何在IBM 企业COBOL语言参考中使用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')

我不明白为什么要插入&lt;和&gt;在我们已经在SO / SI中进行SHIFT-OUT / SHIFT-IN时,进入G-literal内容。

1 个答案:

答案 0 :(得分:0)

它是G-literal的格式(或带有编译器选项NSYMBOL(DBCS)的N-literal。这是规则。

shift-out / -in不是文字本身的部分,因此group-item需要包含自己的shift-out / -in,以便DBCS字符表示任何内容(in引用组项的情况。)

需要前导和尾随移位字节,因为每个DBCS字符由任何一对字节组成,其中任何值都来自X&#39; 00&#39;通过X&#39; FF&#39;因此可以(并且确实)包含移位字符的十六进制值。

由于DBCS文字可以在可以使用DBCS项的相同位置使用,例如NATIONAL-OF函数,因此DBCS文字必须遵守正确解释其值的规则。

在编译器中编写代码时,他们是否已将shift-out / -in隐式?嗯,他们没有。故事结束。

相关问题