首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在COBOL中显示已签名的Comp-3数据显示意外输出。

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

Stack Overflow用户
提问于 2022-01-17 12:29:35
回答 2查看 841关注 0票数 2

从理论上讲,我研究的是comp-3中的字符结尾,它说明它是正值还是负值。

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

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

代码语言:javascript
复制
01 WS-COMP3   PIC S9(5)   COMP-3   VALUES  -12.


DISPLAY WS-COMP3 

OUTPUT: 0001K

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-17 13:35:07

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

COMP-3的一个典型转换是将数据项移动到等效的可显示格式。在这种情况下,PIC S9(5) COMP-3经常被转换为PIC S9(5) SIGN TRAILING来显示。

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

对于IBM大型机,-12的内部COMP-3格式为00 01 2D,并将转换为以0001K形式显示的F0 F0 F0 F1 D2

许多ASCII系统将提供一个稍微不同的结果。相同的内部格式将转换为30 30 30 31 x2,其中x取决于实现的需求。它可以显示为0001B0001r或其他一些东西,例如SIGN SEPARATEgiving -00012

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

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

  1. 显示语句(数据转换)。这个项目是必需的。此项目应记录在实现者的用户文档中。(14.8.10,显示语句,一般规则1)

显示说明,14.8.10.3一般规则,

  1. 显示语句将每个操作数的内容按所列顺序传送到硬件设备。如果操作数是零长度数据项,则不为该操作数传输任何数据.在文字-1或标识符-1引用的数据项和硬件设备之间所需的任何数据转换都由implementor.

定义。

票数 7
EN

Stack Overflow用户

发布于 2022-01-18 06:53:01

除了Rick出色的回答之外,我还想补充一下IBM的Enterprise /OS,因为版本5提供了一个编译器选项来处理这个问题。

在用DISPSIGN(SEP)编译有符号数字项(二进制、填充、小数点或分区)的DISPLAY时,总是会产生一个单独的前导符号。

默认值是DISPSIGN(COMPAT),它的行为将与问题中所示的行为类似。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70741374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档