Data integrity ensures accuracy, consistency, and reliability of data throughout its lifecycle. Learn to implement validation rules, consistency checks, and data quality assurance techniques for reliable data processing.
12345678910111213141516171819202122232425262728293031323334353637383940WORKING-STORAGE SECTION. 01 VALIDATION-RULES. 05 CUSTOMER-VALIDATION. 10 CUSTOMER-ID PIC 9(6). 10 CUSTOMER-ID-VALID PIC X VALUE 'N'. 88 VALID-CUSTOMER-ID VALUE 'Y'. 10 CUSTOMER-NAME PIC X(30). 10 CUSTOMER-NAME-VALID PIC X VALUE 'N'. 88 VALID-CUSTOMER-NAME VALUE 'Y'. 10 CUSTOMER-BALANCE PIC 9(9)V99. 10 CUSTOMER-BALANCE-VALID PIC X VALUE 'N'. 88 VALID-CUSTOMER-BALANCE VALUE 'Y'. PROCEDURE DIVISION. PERFORM VALIDATE-CUSTOMER-DATA VALIDATE-CUSTOMER-DATA. *> Validate customer ID IF CUSTOMER-ID > 0 AND CUSTOMER-ID <= 999999 MOVE 'Y' TO CUSTOMER-ID-VALID ELSE DISPLAY 'Error: Invalid customer ID: ' CUSTOMER-ID MOVE 'N' TO CUSTOMER-ID-VALID END-IF. *> Validate customer name IF CUSTOMER-NAME NOT = SPACES AND CUSTOMER-NAME IS ALPHABETIC MOVE 'Y' TO CUSTOMER-NAME-VALID ELSE DISPLAY 'Error: Invalid customer name: ' CUSTOMER-NAME MOVE 'N' TO CUSTOMER-NAME-VALID END-IF. *> Validate customer balance IF CUSTOMER-BALANCE >= 0 AND CUSTOMER-BALANCE <= 999999.99 MOVE 'Y' TO CUSTOMER-BALANCE-VALID ELSE DISPLAY 'Error: Invalid customer balance: ' CUSTOMER-BALANCE MOVE 'N' TO CUSTOMER-BALANCE-VALID END-IF.
Implement comprehensive data validation rules to ensure data accuracy and consistency. Validate data types, ranges, formats, and business rules for all critical data fields.
123456789101112131415161718192021222324252627282930313233343536373839WORKING-STORAGE SECTION. 01 REFERENTIAL-INTEGRITY. 05 CUSTOMER-MASTER. 10 CUSTOMER-ID PIC 9(6). 10 CUSTOMER-EXISTS PIC X VALUE 'N'. 88 CUSTOMER-FOUND VALUE 'Y'. 05 ACCOUNT-RECORD. 10 ACCOUNT-CUSTOMER-ID PIC 9(6). 10 ACCOUNT-NUMBER PIC 9(8). 10 ACCOUNT-BALANCE PIC 9(9)V99. PROCEDURE DIVISION. PERFORM VALIDATE-REFERENTIAL-INTEGRITY VALIDATE-REFERENTIAL-INTEGRITY. *> Check if customer exists in master file MOVE ACCOUNT-CUSTOMER-ID TO CUSTOMER-ID PERFORM LOOKUP-CUSTOMER-IN-MASTER IF CUSTOMER-FOUND DISPLAY 'Referential integrity check passed' PERFORM PROCESS-VALID-ACCOUNT ELSE DISPLAY 'Error: Customer not found for account: ' ACCOUNT-NUMBER PERFORM HANDLE-REFERENTIAL-ERROR END-IF. LOOKUP-CUSTOMER-IN-MASTER. MOVE 'N' TO CUSTOMER-EXISTS OPEN INPUT CUSTOMER-MASTER-FILE PERFORM UNTIL EOF OR CUSTOMER-FOUND READ CUSTOMER-MASTER-FILE AT END SET EOF TO TRUE NOT AT END IF CUSTOMER-ID = ACCOUNT-CUSTOMER-ID MOVE 'Y' TO CUSTOMER-EXISTS END-IF END-READ END-PERFORM CLOSE CUSTOMER-MASTER-FILE.
Maintain referential integrity by ensuring that foreign key relationships are valid. Check that referenced records exist in master files before processing dependent records.
12345678910111213141516171819202122232425262728293031323334353637383940WORKING-STORAGE SECTION. 01 CONSISTENCY-CHECKS. 05 ACCOUNT-BALANCE PIC 9(9)V99. 05 TRANSACTION-TOTAL PIC 9(9)V99. 05 CALCULATED-BALANCE PIC 9(9)V99. 05 BALANCE-CONSISTENT PIC X VALUE 'N'. 88 BALANCE-MATCHES VALUE 'Y'. PROCEDURE DIVISION. PERFORM CHECK-DATA-CONSISTENCY CHECK-DATA-CONSISTENCY. *> Calculate expected balance from transactions MOVE 0 TO CALCULATED-BALANCE PERFORM CALCULATE-BALANCE-FROM-TRANSACTIONS *> Compare with stored balance IF CALCULATED-BALANCE = ACCOUNT-BALANCE MOVE 'Y' TO BALANCE-CONSISTENT DISPLAY 'Balance consistency check passed' ELSE DISPLAY 'Error: Balance inconsistency detected' DISPLAY 'Stored balance: ' ACCOUNT-BALANCE DISPLAY 'Calculated balance: ' CALCULATED-BALANCE PERFORM HANDLE-CONSISTENCY-ERROR END-IF. CALCULATE-BALANCE-FROM-TRANSACTIONS. OPEN INPUT TRANSACTION-FILE PERFORM UNTIL EOF READ TRANSACTION-FILE AT END SET EOF TO TRUE NOT AT END IF TRANSACTION-TYPE = 'CREDIT' ADD TRANSACTION-AMOUNT TO CALCULATED-BALANCE ELSE IF TRANSACTION-TYPE = 'DEBIT' SUBTRACT TRANSACTION-AMOUNT FROM CALCULATED-BALANCE END-IF END-READ END-PERFORM CLOSE TRANSACTION-FILE.
Implement data consistency checks to ensure that related data remains synchronized. Verify that calculated values match stored values and that data relationships are maintained.
123456789101112131415161718192021222324252627282930313233343536373839WORKING-STORAGE SECTION. 01 DOMAIN-INTEGRITY. 05 VALID-VALUES. 10 VALID-STATUS-CODES PIC X(10) VALUE 'A,I,S,C'. 10 VALID-ACCOUNT-TYPES PIC X(10) VALUE 'C,S,M'. 10 VALID-CURRENCY-CODES PIC X(10) VALUE 'USD,EUR,GBP'. 05 INPUT-DATA. 10 STATUS-CODE PIC X. 10 ACCOUNT-TYPE PIC X. 10 CURRENCY-CODE PIC X(3). PROCEDURE DIVISION. PERFORM VALIDATE-DOMAIN-INTEGRITY VALIDATE-DOMAIN-INTEGRITY. *> Validate status code IF STATUS-CODE = 'A' OR STATUS-CODE = 'I' OR STATUS-CODE = 'S' OR STATUS-CODE = 'C' DISPLAY 'Status code valid: ' STATUS-CODE ELSE DISPLAY 'Error: Invalid status code: ' STATUS-CODE PERFORM HANDLE-DOMAIN-ERROR END-IF. *> Validate account type IF ACCOUNT-TYPE = 'C' OR ACCOUNT-TYPE = 'S' OR ACCOUNT-TYPE = 'M' DISPLAY 'Account type valid: ' ACCOUNT-TYPE ELSE DISPLAY 'Error: Invalid account type: ' ACCOUNT-TYPE PERFORM HANDLE-DOMAIN-ERROR END-IF. *> Validate currency code IF CURRENCY-CODE = 'USD' OR CURRENCY-CODE = 'EUR' OR CURRENCY-CODE = 'GBP' DISPLAY 'Currency code valid: ' CURRENCY-CODE ELSE DISPLAY 'Error: Invalid currency code: ' CURRENCY-CODE PERFORM HANDLE-DOMAIN-ERROR END-IF.
Enforce domain integrity by validating that data values fall within acceptable ranges or belong to predefined sets of valid values. Use lookup tables and validation procedures.
12345678910111213141516171819202122232425262728293031323334353637383940WORKING-STORAGE SECTION. 01 DATA-QUALITY-MONITORING. 05 QUALITY-METRICS. 10 TOTAL-RECORDS PIC 9(8) VALUE 0. 10 VALID-RECORDS PIC 9(8) VALUE 0. 10 INVALID-RECORDS PIC 9(8) VALUE 0. 10 QUALITY-SCORE PIC 9(3)V99. 05 QUALITY-THRESHOLD PIC 9(3)V99 VALUE 95.00. PROCEDURE DIVISION. PERFORM MONITOR-DATA-QUALITY MONITOR-DATA-QUALITY. *> Process records and track quality metrics PERFORM UNTIL EOF READ INPUT-FILE AT END SET EOF TO TRUE NOT AT END ADD 1 TO TOTAL-RECORDS PERFORM VALIDATE-RECORD-QUALITY IF RECORD-VALID ADD 1 TO VALID-RECORDS ELSE ADD 1 TO INVALID-RECORDS END-IF END-READ END-PERFORM *> Calculate quality score IF TOTAL-RECORDS > 0 COMPUTE QUALITY-SCORE = (VALID-RECORDS / TOTAL-RECORDS) * 100 ELSE MOVE 0 TO QUALITY-SCORE END-IF *> Check against threshold IF QUALITY-SCORE < QUALITY-THRESHOLD DISPLAY 'Warning: Data quality below threshold' DISPLAY 'Quality score: ' QUALITY-SCORE '%' PERFORM GENERATE-QUALITY-REPORT END-IF.
Implement data quality monitoring to track data integrity metrics over time. Calculate quality scores, compare against thresholds, and generate quality reports for continuous improvement.
12345678910111213141516171819202122232425262728293031323334353637WORKING-STORAGE SECTION. 01 INTEGRITY-CONSTRAINTS. 05 CONSTRAINT-TYPES. 10 UNIQUE-CONSTRAINT PIC X VALUE 'U'. 10 NOT-NULL-CONSTRAINT PIC X VALUE 'N'. 10 CHECK-CONSTRAINT PIC X VALUE 'C'. 10 FOREIGN-KEY-CONSTRAINT PIC X VALUE 'F'. 05 CONSTRAINT-VIOLATIONS PIC 9(6) VALUE 0. PROCEDURE DIVISION. PERFORM ENFORCE-INTEGRITY-CONSTRAINTS ENFORCE-INTEGRITY-CONSTRAINTS. *> Check unique constraint PERFORM CHECK-UNIQUE-CONSTRAINT *> Check not null constraint PERFORM CHECK-NOT-NULL-CONSTRAINT *> Check check constraint PERFORM CHECK-CHECK-CONSTRAINT *> Check foreign key constraint PERFORM CHECK-FOREIGN-KEY-CONSTRAINT IF CONSTRAINT-VIOLATIONS > 0 DISPLAY 'Integrity constraint violations: ' CONSTRAINT-VIOLATIONS PERFORM HANDLE-CONSTRAINT-VIOLATIONS END-IF. CHECK-UNIQUE-CONSTRAINT. *> Check for duplicate customer IDs PERFORM SEARCH-FOR-DUPLICATE-ID IF DUPLICATE-FOUND ADD 1 TO CONSTRAINT-VIOLATIONS DISPLAY 'Error: Duplicate customer ID found' END-IF.
Enforce integrity constraints including unique constraints, not-null constraints, check constraints, and foreign key constraints. Monitor constraint violations and handle them appropriately.
123456789101112131415161718192021222324252627282930313233WORKING-STORAGE SECTION. 01 INTEGRITY-RECOVERY. 05 RECOVERY-TYPE PIC X. 88 ROLLBACK-RECOVERY VALUE 'R'. 88 CORRECTIVE-RECOVERY VALUE 'C'. 88 PREVENTIVE-RECOVERY VALUE 'P'. 05 RECOVERY-STATUS PIC X. 88 RECOVERY-SUCCESSFUL VALUE 'Y'. 88 RECOVERY-FAILED VALUE 'N'. PROCEDURE DIVISION. PERFORM HANDLE-INTEGRITY-RECOVERY HANDLE-INTEGRITY-RECOVERY. EVALUATE RECOVERY-TYPE WHEN ROLLBACK-RECOVERY PERFORM ROLLBACK-TRANSACTION WHEN CORRECTIVE-RECOVERY PERFORM CORRECT-DATA-ERRORS WHEN PREVENTIVE-RECOVERY PERFORM PREVENT-FUTURE-ERRORS END-EVALUATE. ROLLBACK-TRANSACTION. *> Restore data to previous valid state PERFORM RESTORE-FROM-BACKUP IF RESTORE-SUCCESSFUL MOVE 'Y' TO RECOVERY-STATUS DISPLAY 'Transaction rolled back successfully' ELSE MOVE 'N' TO RECOVERY-STATUS DISPLAY 'Error: Rollback failed' END-IF.
Implement data integrity recovery procedures including rollback, corrective actions, and preventive measures. Restore data to valid states when integrity violations are detected.
1234567891011121314151617181920212223242526272829WORKING-STORAGE SECTION. 01 INTEGRITY-AUDIT. 05 AUDIT-RECORD. 10 AUDIT-TIMESTAMP PIC 9(14). 10 AUDIT-TYPE PIC X(20). 10 AUDIT-DESCRIPTION PIC X(100). 10 AUDIT-SEVERITY PIC X. 88 CRITICAL-AUDIT VALUE 'C'. 88 WARNING-AUDIT VALUE 'W'. 88 INFO-AUDIT VALUE 'I'. PROCEDURE DIVISION. PERFORM LOG-INTEGRITY-AUDIT LOG-INTEGRITY-AUDIT. MOVE FUNCTION CURRENT-DATE TO AUDIT-TIMESTAMP MOVE 'DATA_INTEGRITY_CHECK' TO AUDIT-TYPE MOVE 'Customer data integrity validation completed' TO AUDIT-DESCRIPTION IF INTEGRITY-VIOLATIONS > 0 MOVE 'C' TO AUDIT-SEVERITY STRING 'Critical: ' INTEGRITY-VIOLATIONS ' violations found' INTO AUDIT-DESCRIPTION ELSE MOVE 'I' TO AUDIT-SEVERITY END-IF WRITE AUDIT-LOG-RECORD DISPLAY 'Integrity audit logged: ' AUDIT-DESCRIPTION.
Maintain comprehensive audit trails for data integrity activities. Log all integrity checks, violations, and recovery actions with timestamps and severity levels for compliance and monitoring.