I'm trying to display a result of computation like add, sub, mul, and div.
My problem is that I set the compute result but it didn't cut. Let's say if I say the number 1 x 1
is 99999x99999
, it will produce 10 digits so I must use PIC 9(10)
in data division working-storage section. But if 11111x22222
it will produced 9 digits so the result will be 0246908402
. There should be a 0 because I set PIC 9(10)
, but it only produced 9 digits ... if I set PIC 9(6)
it will be cut into 908402
.
I want to show the result without setting the length of PIC
so it will be flexible if it produces 9 digits it will show all 9 digits, if it produces 7 digits it will show all 7 digits without being cut, and without 0 to fill all the spaces. Is it possible? Here's the code
********************************************************
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.
any help will be appreciated
You can use COBOL edited numerics i.e
will suppress leading zero's but this would be better.
As Simon pointed out, you can use the
FUNCTION TRIM(ws-output-number)
to remove leading spacesas it includes the sign + adds comma's to the output to improve readability