tinycobol/test.code/t01/test01d.cob

123 lines
3.9 KiB
COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. TEST01D.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
* INPUT-OUTPUT SECTION.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 W01-DIVIDES.
05 W01-DIV PIC S9(8).
05 W01-DIV1 PIC S9(8).
05 W01-DIV2 PIC S9(2).
05 W01-DIVIDE OCCURS 4 TIMES PIC S9(2)V99.
PROCEDURE DIVISION.
A-000.
PERFORM A-100.
STOP RUN.
A-100.
DISPLAY "* ------ divide statements tests begin ------ *".
MOVE 19 TO W01-DIV W01-DIV1 W01-DIV2.
MOVE 29 TO W01-DIVIDE (1) W01-DIVIDE (2) W01-DIVIDE (3) W01-DIVIDE (4).
DISPLAY "* ------ test 1 begin ------ *".
DISPLAY "W01-DIV =" W01-DIV " W01-DIV1 =" W01-DIV1 " W01-DIV2 =" W01-DIV2.
DIVIDE 100 BY 0.35 GIVING W01-DIV ROUNDED W01-DIV1 W01-DIV2 ROUNDED
ON SIZE ERROR PERFORM E-100
NOT ON SIZE ERROR PERFORM D-100
END-DIVIDE.
DISPLAY "divide 100 by 0.35 giving W01-DIV=" W01-DIV
" rounded W01-DIV1=" W01-DIV1 " W01-DIV2=" W01-DIV2 " rounded".
DISPLAY "* ------ test 2 begin ------ *".
DISPLAY "W01-DIVIDE (1)=" W01-DIVIDE (1) " W01-DIVIDE (2)=" W01-DIVIDE (2).
DIVIDE 100 BY 10.4 GIVING W01-DIVIDE (1) ROUNDED W01-DIVIDE (2)
NOT ON SIZE ERROR PERFORM D-100
END-DIVIDE.
DISPLAY "divide 100 by 10.4 giving W01-DIVIDE (1)=" W01-DIVIDE (1)
" rounded W01-DIVIDE (2)=" W01-DIVIDE (2).
DISPLAY "* ------ test 3 begin ------ *".
DISPLAY "W01-DIVIDE (3)=" W01-DIVIDE (3) " W01-DIVIDE (4)=" W01-DIVIDE (4).
DIVIDE 142 BY 7 GIVING W01-DIVIDE (3) ROUNDED REMAINDER W01-DIVIDE (4)
ON SIZE ERROR PERFORM E-100.
DISPLAY "divide 142 by 7 giving W01-DIVIDE (3)=" W01-DIVIDE (3)
" rounded remainder W01-DIVIDE (4)=" W01-DIVIDE (4).
DISPLAY "* ------ test 4 begin ------ *".
MOVE 105 TO W01-DIV.
MOVE 75 TO W01-DIV1.
MOVE 55 TO W01-DIV2.
DISPLAY "W01-DIV =" W01-DIV " W01-DIV1 =" W01-DIV1 " W01-DIV2 =" W01-DIV2.
DIVIDE 0.25 INTO W01-DIV W01-DIV1 W01-DIV2
NOT ON SIZE ERROR PERFORM D-100.
DISPLAY "divide 0.25 into W01-DIV =" W01-DIV " W01-DIV1 ="
W01-DIV1 " W01-DIV2 =" W01-DIV2.
DISPLAY "* ------ test 5 begin ------ *".
DISPLAY "W01-DIV =" W01-DIV " W01-DIV1 =" W01-DIV1 " W01-DIV2 =" W01-DIV2.
DIVIDE 10.2 INTO 98 GIVING W01-DIV ROUNDED W01-DIV1 W01-DIV2
ON SIZE ERROR PERFORM E-100.
DISPLAY "divide 10.2 into 98 giving W01-DIV =" W01-DIV
" rounded W01-DIV1 =" W01-DIV1 " W01-DIV2 =" W01-DIV2.
DISPLAY "* ------ test 6 begin ------ *".
MOVE 105 TO W01-DIV.
DISPLAY "W01-DIVIDE (1)=" W01-DIVIDE (1) " W01-DIV=" W01-DIV.
DIVIDE 5 INTO W01-DIV GIVING W01-DIVIDE (1) ROUNDED
ON SIZE ERROR PERFORM E-100.
DISPLAY "divide 5 into W01-DIV =" W01-DIV
" giving W01-DIVIDE (1) =" W01-DIVIDE (1) " rounded".
DISPLAY "* ------ test 7 begin ------ *".
MOVE 0 TO W01-DIVIDE (1).
MOVE 5 TO W01-DIVIDE (2).
MOVE 110 TO W01-DIV.
DISPLAY "W01-DIVIDE (1)=" W01-DIVIDE (1)
" W01-DIVIDE (2)=" W01-DIVIDE (2)
" W01-DIV=" W01-DIV.
DIVIDE 16.5 INTO W01-DIV GIVING W01-DIVIDE (1) ROUNDED REMAINDER W01-DIVIDE (2)
NOT ON SIZE ERROR PERFORM D-100.
DISPLAY "divide 16.5 into W01-DIV =" W01-DIV
" giving W01-DIVIDE (1) =" W01-DIVIDE (1)
" rounded remainder W01-DIVIDE (2)=" W01-DIVIDE (2).
DISPLAY "* ------ test 8 begin ------ *".
MOVE 0 TO W01-DIVIDE (3).
MOVE 5 TO W01-DIVIDE (4).
* MOVE 110 TO W01-DIV.
MOVE 0 TO W01-DIV.
SUBTRACT 110 FROM W01-DIV.
DISPLAY "W01-DIVIDE (3)=" W01-DIVIDE (3)
" W01-DIVIDE (4)=" W01-DIVIDE (4)
" W01-DIV=" W01-DIV.
DIVIDE 16.5 INTO W01-DIV GIVING W01-DIVIDE (3) REMAINDER W01-DIVIDE (4)
ON SIZE ERROR PERFORM E-100.
DISPLAY "divide 16.5 into W01-DIV =" W01-DIV
" giving W01-DIVIDE (3) =" W01-DIVIDE (3)
" remainder W01-DIVIDE (4)=" W01-DIVIDE (4).
DISPLAY "* ------ divide statements tests end ------ *".
D-100.
DISPLAY "D-100: An divide exception erorr has NOT occured" .
E-100.
DISPLAY "E-100: An divide exception erorr has occured" .