在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
资料来源: