MainframeMaster

COBOL Data Integrity

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.

Data Validation Rules

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
WORKING-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.

Referential Integrity

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
WORKING-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.

Data Consistency Checks

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
WORKING-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.

Domain Integrity

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
WORKING-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.

Data Quality Monitoring

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
WORKING-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.

Integrity Constraint Enforcement

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
WORKING-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.

Data Integrity Recovery

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
WORKING-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.

Integrity Audit Trail

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
WORKING-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.