【发布时间】:2020-07-16 02:23:26
【问题描述】:
我正在尝试显示 add、sub、mul 和 div 等计算结果。
我的问题是我设置了计算结果,但它没有削减。假设我说数字1 x 1 是99999x99999,它将产生10 位数字,所以我必须在数据划分工作存储部分使用PIC 9(10)。但是如果11111x22222 它将产生 9 位数字,所以结果将是0246908402。应该有一个0,因为我设置了PIC 9(10),但它只产生了9位数字……如果我设置了PIC 9(6),它将被切割成908402。
我想在不设置PIC的长度的情况下显示结果,因此如果它产生9位数字,它将显示所有9位数字,如果它产生7位数字,它将显示所有7位数字而不被剪切,并且没有 0 来填充所有空格。是否可以?这是代码
********************************************************
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INBOUND-MESSAGE PIC X(14).
01 OUTBOUND-MESSAGE PIC X(80).
01 WS-VARIABLE.
05 DETAIL1 PIC X(14)
VALUE 'HASIL TAMBAH: '.
05 DETAIL2 PIC X(14)
VALUE 'HASIL KURANG: '.
05 DETAIL3 PIC X(14)
VALUE 'HASIL KALI : '.
05 DETAIL4 PIC X(14)
VALUE 'HASIL BAGI : '.
05 WS-NUM1 PIC 9(5).
05 WS-NUM2 PIC 9(5).
05 WS-ADD PIC 9(6).
05 WS-SUB PIC 9(6).
05 WS-MUL PIC 9(6). -> lets say i set this become 6 so if 11111x22222 it will produced 9 digits and will be cutted into 6 digits
05 WS-DIV PIC 9(6).
01 WS-STRING.
05 WS-CONCAT PIC X(80).
05 WS-CONCAT2 PIC X(80).
05 WS-CONCAT3 PIC X(80).
05 WS-CONCAT4 PIC X(80).
********************************************************
PROCEDURE DIVISION.
EXEC CICS RECEIVE
INTO (INBOUND-MESSAGE)
END-EXEC.
MOVE INBOUND-MESSAGE(5:5) TO WS-NUM1.
MOVE INBOUND-MESSAGE(10:5) TO WS-NUM2.
ADD WS-NUM1 TO WS-NUM2 GIVING WS-ADD.
SUBTRACT WS-NUM1 FROM WS-NUM2 GIVING WS-SUB.
MULTIPLY WS-NUM1 BY WS-NUM2 GIVING WS-MUL.
DIVIDE WS-NUM1 BY WS-NUM2 GIVING WS-DIV.
STRING DETAIL1
WS-ADD
DELIMITED BY ':'
INTO WS-CONCAT.
STRING DETAIL2
WS-SUB
DELIMITED BY ':'
INTO WS-CONCAT2.
STRING DETAIL3
WS-MUL
DELIMITED BY ':'
INTO WS-CONCAT3.
STRING DETAIL4
WS-DIV
DELIMITED BY ':'
INTO WS-CONCAT4.
EXEC CICS SEND
FROM (WS-STRING)
ERASE
NOHANDLE
END-EXEC.
EXEC CICS RETURN
END-EXEC.
任何帮助将不胜感激
【问题讨论】:
-
1 x 1不会产生十位数字。99999x99999会。不清楚你在问什么。 -
@MarquisofLorne,输入将是 5 位 x 5 位,没有 1-4 位