Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Arithmetic Operations
Arithmetic Operations | Intermediate | COBOL

ROUNDED and ON SIZE ERROR

Problem Description

Handle decimal precision with ROUNDED and overflow with ON SIZE ERROR.

Expected Output

Proper handling of rounding and overflow

Hints

ROUNDED rounds result, ON SIZE ERROR handles overflow.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. RNDSIZE. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NUM1 PIC 9(3)V99 VALUE 100.00. 01 WS-NUM2 PIC 9(1)V99 VALUE 3.00. 01 WS-RESULT PIC 9(3)V99. 01 WS-SMALL PIC 9(2). 01 WS-BIG PIC 9(5) VALUE 99999. 01 WS-ERROR-FLG PIC 9 VALUE 0. PROCEDURE DIVISION. * Without ROUNDED - truncates DIVIDE WS-NUM1 BY WS-NUM2 GIVING WS-RESULT. DISPLAY "WITHOUT ROUNDED: " WS-RESULT. * With ROUNDED - rounds to nearest DIVIDE WS-NUM1 BY WS-NUM2 GIVING WS-RESULT ROUNDED. DISPLAY "WITH ROUNDED: " WS-RESULT. * ON SIZE ERROR - handles overflow MOVE 0 TO WS-ERROR-FLG. ADD 1 TO WS-BIG ON SIZE ERROR MOVE 1 TO WS-ERROR-FLG DISPLAY "OVERFLOW DETECTED!" NOT ON SIZE ERROR DISPLAY "RESULT: " WS-BIG END-ADD. * Attempting overflow MOVE 99 TO WS-SMALL. ADD 5 TO WS-SMALL ON SIZE ERROR DISPLAY "SIZE ERROR: RESULT > 99" NOT ON SIZE ERROR DISPLAY "SMALL = " WS-SMALL END-ADD. STOP RUN.

Explanation:

ROUNDED prevents truncation. ON SIZE ERROR catches overflow/underflow.