Как использовать DIVIDE с КОНДЕНСИРОВАННЫМ ЧИСЛОВЫМ Varibale в COBOL - PullRequest
0 голосов
/ 13 февраля 2019

Моя проблема: у меня есть данные в таблице базы данных.Столбец: 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.

Эквивалентные Temp Plein

        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 голосов
/ 13 февраля 2019

Вы определили имя H-ZYTL-RTPDHR дважды: это смущает вас и ваш компилятор.

Ваше второе определение H-ZYTL-RTPDHR хорошо для арифметики.Все, что вам нужно, это

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

Ваше первое определение H-ZYTL-RTPDHR определяет элемент уровня группы , и вы не можете выполнять арифметику с ним.

Однако,Ваш вопрос не показывает определение Z-ZYTL-RTPDHR.Если он не числовой, вы не получите ожидаемых результатов.

...