如何在COBOL中将DIVIDE与浓缩的NUMIBIC Varibale一起使用

时间:2019-02-13 13:09:10

标签: cobol

我的问题是:我在数据库表中有数据。该列为:Z-ZYTL-RTPDHR定义为NOT NULL NUMBER(5,2)

所以我有一个程序,需要将数据移动到一个变量“ H-ZYTL-RTPDHR”中,然后在编译时将这个值除以100后在Z8列中移动,得到的Excel数据具有不同的值列。

我的数据:

Z8
------
34,28
70
97
8,57
21,43
94,28
94,28
100
40
40

我应该得到什么:

Z8
-------
0,3428
0,7
0,97
0,0857
0,2143
0,9428
0,9428
0,100
0,40
0,40

我的问题是如何声明变量以获得良好的结果?

我声明的变量:

        01  FILLER.
         05  H-ZYTL-RTPDHR.
          10 PIC S9(5)V9(2) comp-3 VALUE.
         05  FILLER REDEFINES  H-ZYTL-RTPDHR.
          10      H-ZYTL-RTPDHR        comp-3 pic s9(5)v99.

等效温度普林斯

        05  W-Z8                   PIC -(5),99.
        05  FILLER                 PIC X(001) VALUE ';'.

   ALIM-WZ8 SECTION.

          IF Z-ZYTL-NOMBRE > ZERO
              IF TLCODTRA(Z-ZYTL-NOMBRE) NOT = SPACES
                 MOVE Z-ZYTL-RTPDHR(Z-ZYTL-NOMBRE) TO
                     H-ZYTL-RTPDHR
                DISPLAY 'H-ZYTL-RTPDHR:'  H-ZYTL-RTPDHR
                  DIVIDE H-ZYTL-RTPDHR  BY 100   GIVING W-Z8
               DISPLAY 'W-Z8 : ' W-Z8
              END-IF
           END-IF.

1 个答案:

答案 0 :(得分:0)

您已经两次定义了名称H-ZYTL-RTPDHR:这将使您以及编译器感到困惑。

您对H-ZYTL-RTPDHR的第二个定义非常适合进行算术运算。您只需要

01  FILLER.
    10      H-ZYTL-RTPDHR        comp-3 pic s9(5)v99.

您对H-ZYTL-RTPDHR的第一个定义定义了group level item,因此您无法对其进行算术运算。

但是,您的问题没有显示Z-ZYTL-RTPDHR的定义。如果不是数字,那么您将无法获得预期的结果。