在Cobol中声明外部十进制

在Cobol中声明外部十进制,cobol,Cobol,寻找解决我问题的方法。我需要转换的值是字母数字 05 WS-NUM-TX. 05 WS-NUM PIC P9(04). 05 WS-NUM1 PIC P9(03). 05 WS-NUM2 PIC P9(03). MOVE '0001 222217' TO WS-NUM-TX. MOVE WS-NUM-TX(1:4) TO WS-NUM. MOVE WS-NUM-TX(6:3) TO WS-NUM1. MOVE WS-NUM-TX(9:3) TO WS-NUM2. 我计算了WS-NUM=FU

寻找解决我问题的方法。我需要转换的值是字母数字

05 WS-NUM-TX.
05 WS-NUM  PIC P9(04).
05 WS-NUM1 PIC P9(03).
05 WS-NUM2 PIC P9(03).

MOVE '0001 222217' TO WS-NUM-TX.
MOVE WS-NUM-TX(1:4) TO WS-NUM.
MOVE WS-NUM-TX(6:3) TO WS-NUM1.
MOVE WS-NUM-TX(9:3) TO WS-NUM2.
我计算了WS-NUM=FUNCTION NUMVAL(WS-NUM-TX)使其成为数值

现在,问题是,我需要这个值作为十进制数进行计算。需要帮助才能将此值转换为
0.0001、.222和.217

我对显示的没有小数点的外部小数点进行了修改。请帮忙。谢谢。
PICTURE
子句中的
p
是一个错误,
WS-NUM-TX
缺少
PICTURE
子句也是一个错误。(自第四版起)

可能,

05 WS-NUM-TX PIC X(11).
05 WS-NUM  PIC .9(04).
05 WS-NUM1 PIC .9(03).
05 WS-NUM2 PIC .9(03).

MOVE '0001 222217' TO WS-NUM-TX.
COMPUTE WS-NUM = FUNCTION NUMVAL (WS-NUM-TX(1:4)) / 10000.
COMPUTE WS-NUM1 = FUNCTION NUMVAL (WS-NUM-TX(6:3)) / 1000.
COMPUTE WS-NUM2 = FUNCTION NUMVAL (WS-NUM-TX(9:3)) / 1000.

基于原始帖子(第1版和第2版),进行额外编辑

   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 FILLER.
       05 WS-NUM-TX.
           07 WS-NUM-TX1 PIC 9(4).
           07 FILLER     PIC X.
           07 WS-NUM-TX2 PIC 9(3).
           07 WS-NUM-TX3 PIC 9(3).
       05 WS-NUM  PIC .9(04).
       05 WS-NUM1 PIC .9(03).
       05 WS-NUM2 PIC .9(03).
   PROCEDURE DIVISION.
   BEGIN.
       MOVE '0001 222217' TO WS-NUM-TX.
       DIVIDE WS-NUM-TX1 BY 10000 GIVING WS-NUM.
       DIVIDE WS-NUM-TX2 BY 1000 GIVING WS-NUM1.
       DIVIDE WS-NUM-TX3 BY 1000 GIVING WS-NUM2.
       DISPLAY WS-NUM
       DISPLAY WS-NUM1
       DISPLAY WS-NUM2
       STOP RUN
       .
输出:

.0001
.222
.217

在picture子句中使用
V
。这决定了逗号的位置。 例如:
pic9(05)V9(03)
将导致00000000

资料来源: