Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL ERROR Handling Patterns

Intermediate 🕑 15 min read 👁 1 views

COBOL ERROR Handling Patterns

Effective error handling is crucial for robust COBOL programs.

File Status Checking

```cobol READ INPUT-FILE AT END SET WS-EOF TO TRUE END-READ. IF NOT FS-SUCCESS PERFORM ERROR-HANDLER END-IF. ```

Declaratives for Errors

```cobol DECLARATIVES. FILE-ERROR SECTION. USE AFTER ERROR PROCEDURE ON INPUT-FILE. DISPLAY 'File Error: ' WS-FILE-STATUS. END DECLARATIVES. ```

Common Error Patterns

  1. Check after every I/O
  2. Use 88-levels for status
  3. Centralize error handling
  4. Log errors with context

Exception Handling

```cobol COMPUTE result = a / b ON SIZE ERROR MOVE 0 TO result SET CALC-ERROR TO TRUE END-COMPUTE. ```

RETURN-CODE Convention

  • 0: Success
  • 4: Warning
  • 8: Error
  • 12: Severe
  • 16: Critical

Code Example

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ERROR-DEMO.
       DATA DIVISION.
       FILE SECTION.
       FD INPUT-FILE.
       01 INPUT-REC PIC X(80).
       WORKING-STORAGE SECTION.
       01 WS-FS PIC XX.
           88 FS-OK VALUE '00'.
           88 FS-EOF VALUE '10'.
           88 FS-ERROR VALUE '30' THRU '99'.
       01 WS-DIV PIC 9(3).
       01 WS-RESULT PIC 9(5).
       PROCEDURE DIVISION.
       DECLARATIVES.
       FILE-ERR SECTION.
           USE AFTER ERROR ON INPUT-FILE.
           DISPLAY 'File error: ' WS-FS
           MOVE 16 TO RETURN-CODE.
       END DECLARATIVES.
       MAIN-SECTION SECTION.
           OPEN INPUT INPUT-FILE
           IF NOT FS-OK
               PERFORM ERROR-HANDLER
           END-IF
           
           MOVE 0 TO WS-DIV
           DIVIDE 100 BY WS-DIV GIVING WS-RESULT
               ON SIZE ERROR
                   DISPLAY 'Division by zero'
                   MOVE 0 TO WS-RESULT
           END-DIVIDE
           STOP RUN.
       ERROR-HANDLER.
           DISPLAY 'Error occurred: ' WS-FS
           MOVE 8 TO RETURN-CODE.