VALIDATE is a modern COBOL statement that provides declarative data validation. It allows you to validate data against defined rules and constraints at the data definition level, making validation more efficient and less error-prone than manual procedural validation.
VALIDATE statement syntax and usage patterns for different validation scenarios.
12345678910111213IDENTIFICATION DIVISION. PROGRAM-ID. VALIDATE-EXAMPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-AGE PIC 9(3) VALUE 25. 01 CUSTOMER-NAME PIC X(30) VALUE "JOHN DOE". 01 CUSTOMER-EMAIL PIC X(50) VALUE "john@example.com". PROCEDURE DIVISION. VALIDATE CUSTOMER-AGE VALIDATE CUSTOMER-NAME VALIDATE CUSTOMER-EMAIL STOP RUN.
Basic validation of data items. Validation rules are defined in the data description.
1234567891011121314151617181920IDENTIFICATION DIVISION. PROGRAM-ID. VALIDATE-EXCEPTION. DATA DIVISION. WORKING-STORAGE SECTION. 01 INVALID-AGE PIC 9(3) VALUE 999. PROCEDURE DIVISION. MAIN-LOGIC. VALIDATE INVALID-AGE ON EXCEPTION DISPLAY "Age validation failed" PERFORM ERROR-HANDLING NOT ON EXCEPTION DISPLAY "Age is valid" END-VALIDATE STOP RUN. ERROR-HANDLING. DISPLAY "Handling validation error" EXIT.
Using exception handling to catch and process validation failures.
1234567891011121314151617IDENTIFICATION DIVISION. PROGRAM-ID. VALIDATE-CUSTOM. DATA DIVISION. WORKING-STORAGE SECTION. 01 CUSTOMER-RECORD. 05 CUSTOMER-ID PIC 9(6) VALUE 123456. 05 CUSTOMER-STATUS PIC X(1) VALUE "A". 05 CUSTOMER-BALANCE PIC 9(8)V99 VALUE 1000.50. PROCEDURE DIVISION. VALIDATE CUSTOMER-RECORD ON EXCEPTION DISPLAY "Customer record validation failed" NOT ON EXCEPTION DISPLAY "Customer record is valid" END-VALIDATE STOP RUN.
Validating entire record structures with custom validation rules.
Validates data against PICTURE clause specifications.
1201 NUMERIC-FIELD PIC 9(3) VALUE 123. VALIDATE NUMERIC-FIELD
Validates data within specified ranges.
1201 AGE-FIELD PIC 9(3) VALUE 25. VALIDATE AGE-FIELD RANGE 0 THRU 120
Validates data format and structure.
1201 EMAIL-FIELD PIC X(50) VALUE "test@email.com". VALIDATE EMAIL-FIELD FORMAT EMAIL
User-defined validation rules.
1201 CUSTOM-FIELD PIC X(10) VALUE "ABC123". VALIDATE CUSTOM-FIELD USING CUSTOM-RULE
Validation Type | Syntax | Use Case |
---|---|---|
Basic | VALIDATE data-item | Simple data validation |
With Exception | VALIDATE data-item ON EXCEPTION | Error handling |
Range | VALIDATE data-item RANGE min THRU max | Numeric range validation |
Format | VALIDATE data-item FORMAT format-type | Format validation |
1. What is the primary purpose of VALIDATE in COBOL?
2. Which COBOL standard introduced the VALIDATE statement?
3. What happens when VALIDATE fails?
4. Which validation rule can VALIDATE NOT check?
5. How do you handle validation errors in COBOL?