COBOL 中的小数

Mas*_*ite 3 cobol microfocus

我对 COBOL 很陌生。我正在学习 Micro Focus 附带的教程,但似乎无法让示例正常工作。我正在尝试打印 -123.45 并且我不断收到以下信息,

在此处输入图片说明

我在这里查了很多帖子,都没有解决我的问题。我在Eclipse 中使用 Micro Focus 的 Visual COBOL 。这是我的代码,

   program-id. tictac as "tictac".

   environment division.
   configuration section.

   data division.
   working-storage section.

    01 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45.


   procedure division.
       Display WS-NUM3.
       goback.

   end program tictac.
Run Code Online (Sandbox Code Playgroud)

csc*_*eid 9

V您的图片子句是一个隐含的小数点。我想你想要一个带有 的字段PIC -999.99,其中.是一个明确的小数点,用于它的图片子句。

您可能认为这是 COBOL 区分变量的定义方式和显示方式。有点像格式字符串 inprintf只是指定如何显示变量,而不是如何定义它。尽管在这两种情况下,定义及其显示方式必须在一定程度上匹配。

为数字字段选择正确的图片子句很重要;如果您正在进行计算,它可能会对性能产生重大影响。

因此,通常有一个具有定义的字段,例如...

PIC 9(4)V99 COMP-3
Run Code Online (Sandbox Code Playgroud)

...以及用于输出目的的相应字段,例如...

PIC ZZZ9.99
Run Code Online (Sandbox Code Playgroud)

...以便计算可以在第一个上完成,并且当需要显示该字段时,可以使用MOVE语句将第一个的内容复制到第二个。