在Cobol中划分动词

时间:2012-11-05 06:49:42

标签: cobol

我在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

2 个答案:

答案 0 :(得分:4)

问题是你已经在小数点后用2位数定义了接收变量VAR-C。我想你想要整数除法,所以尝试按如下方式定义:

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

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

答案 1 :(得分:1)

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

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