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

COBOL Data Validation Techniques

Intermediate 🕑 15 min read 👁 0 views

COBOL Data Validation Techniques

Validate input data to prevent runtime errors and ensure data quality.

Numeric Validation

```cobol IF WS-INPUT IS NUMERIC MOVE WS-INPUT TO WS-NUMBER ELSE SET INVALID-DATA TO TRUE END-IF. ```

Class Tests

```cobol IF data-item IS ALPHABETIC IF data-item IS ALPHABETIC-LOWER IF data-item IS ALPHABETIC-UPPER IF data-item IS NUMERIC ```

INSPECT for Characters

```cobol INSPECT WS-DATA TALLYING WS-COUNT FOR ALL ' ' BEFORE INITIAL '.'. ```

Range Validation

```cobol IF WS-MONTH >= 1 AND WS-MONTH <= 12 SET VALID-MONTH TO TRUE END-IF. ```

Pattern Validation

```cobol IF WS-SSN(1:3) IS NUMERIC AND WS-SSN(4:1) = '-' AND WS-SSN(5:2) IS NUMERIC... ```

Best Practices

  • Validate at system boundaries
  • Use meaningful error messages
  • Log invalid data
  • Provide default handling

Code Example

       IDENTIFICATION DIVISION.
       PROGRAM-ID. VALIDATE-DEMO.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-INPUT PIC X(20).
       01 WS-NUMBER PIC 9(10).
       01 WS-DATE PIC X(10).
       01 WS-COUNT PIC 99.
       01 WS-VALID PIC X VALUE 'N'.
           88 IS-VALID VALUE 'Y'.
       PROCEDURE DIVISION.
      * Numeric validation
           MOVE '12345' TO WS-INPUT
           IF WS-INPUT IS NUMERIC
               MOVE WS-INPUT TO WS-NUMBER
               SET IS-VALID TO TRUE
           ELSE
               DISPLAY 'Invalid numeric'
           END-IF
           
      * Character count
           MOVE 0 TO WS-COUNT
           INSPECT WS-INPUT TALLYING WS-COUNT FOR ALL ' '
           
      * Date format check
           MOVE '12/25/2024' TO WS-DATE
           IF WS-DATE(3:1) = '/' AND WS-DATE(6:1) = '/'
               IF WS-DATE(1:2) IS NUMERIC
               AND WS-DATE(4:2) IS NUMERIC
               AND WS-DATE(7:4) IS NUMERIC
                   DISPLAY 'Valid date format'
               END-IF
           END-IF
           STOP RUN.