2

我在 COBOL 中的 DIVIDE 动词的其余部分有这个奇怪的输出。目标只是将 213.20 除以 10,然后将商保存到另一个变量以及余数。我期望其余部分的值是 3.2,但它只给了我 0。请赐教。

请参阅下面的代码片段:

WORKING-STORAGE SECTION.
    01 VAR-A  PIC S9(09)V99 COMP-3 VALUE 213.20
    01 VAR-B  PIC S9(09)V99 COMP-3 VALUE 10.00
    01 VAR-C  PIC S9(09)V99 COMP-3 VALUE 0.
    01 VAR-D  PIC S9V99     COMP-3 VALUE 0.  

PROCEDURE DIVISION.
MAIN-PARAGRAPH.
    DIVIDE VAR-A
      BY VAR-B
      GIVING VAR-C
      REMAINDER VAR-D.

    DISPLAY 'VAR-A: 'VAR-A.
    DISPLAY 'VAR-B: 'VAR-B.
    DISPLAY 'VAR-C: 'VAR-C.
    DISPLAY 'VAR-D: 'VAR-D.
********************************************
RESULTS:

VAR-A: 00000021320
VAR-B: 00000001000
VAR-C: 00000002132
VAR-D: 000
4

3 回答 3

4

问题是您已经VAR-C用小数点后 2 位定义了接收变量。我认为您想要整数除法,因此请尝试将其定义如下:

01 VAR-C    PIC S9(09) COMP-3.

现在VAR-C只能保存整数(例如 21),余数 ( VAR-D) 将包含残差(例如 3.20)

于 2012-11-06T16:50:00.623 回答
1

这可能会有所帮助,有人遇到了类似的问题:

http://www.ibmmainframes.com/about44677.html

于 2012-11-05T12:48:40.073 回答
1

如果您的余数 PIC 与除数 PIC 不匹配,我过去曾看到过奇怪的结果。将剩余部分更改为 PIC S9(9)V99 并发布结果。

于 2012-11-07T03:53:19.600 回答