签名 Comp-3 数据的 COBOL 中的显示显示意外输出

Lak*_*h C 2 cobol mainframe comp-3

理论上,我研究了 comp-3 中的字符结尾告诉它是正值还是负值

  • C——表示正值
  • D——表示负值

这不适用于大型机中的新版本 COBOL 吗?

01 WS-COMP3   PIC S9(5)   COMP-3   VALUES  -12.


DISPLAY WS-COMP3 

OUTPUT: 0001K
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,我得到的字符结尾为 K 而不是 D 值 K 是 -2 0 ==> } -1 ==> J, -2 ==> K ....

Ric*_*ith 7

使用DISPLAY ...数字数据类型需要转换为可显示类型。COBOL 标准需要它。

典型的转换COMP-3是将数据项移动到等效的可显示格式。对于这种情况,PIC S9(5) COMP-3通常会转换为PIC S9(5) SIGN TRAILING用于显示。

此转换意味着内部存储的值将被转换,以便将除最后一个数字之外的各个数字转换为可显示的数字。最后一个将更改符号指示符以反映特定实现的格式。

对于 IBM 大型机,内部 COMP-3 格式现在-1200 01 2D将来都会转换为F0 F0 F0 F1 D2显示为 的格式0001K

许多 ASCII 系统将提供略有不同的结果。相同的内部格式将被转换为取决于实现要求的30 30 30 31 x2位置。x它可能显示为0001B0001r或其他一些,例如SIGN SEPARATEGive -00012

任何 COBOL 实现完成的任何数据类型的实际转换都将记录在语言参考中。


从2002年标准,B.1实现者定义的语言元素列表,

  1. DISPLAY语句(数据转换)。此项目为必填项。该项目应记录在实施者的用户文档中。(14.8.10,DISPLAY 语句,一般规则 1)

DISPLAY 语句,14.8.10.3 一般规则,

  1. DISPLAY 语句使每个操作数的内容按列出的顺序传输到硬件设备。如果操作数是零长度数据项,则不会传输该操作数的数据。文字 1 或标识符 1 引用的数据项与硬件设备之间所需的任何数据转换均由实现者定义。