如何在COBOL中使用带有CONDENSED NUMERIC变量的DIVIDE

问题描述 投票:0回答:1

我的问题是:我在数据库表中有数据。该列是: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.
cobol
1个回答
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的定义。如果它不是数字,那么你将无法获得预期的结果。

© www.soinside.com 2019 - 2024. All rights reserved.