MainframeMaster

COBOL Business Rules

Business rules in COBOL define the specific constraints, calculations, and decision criteria that govern how applications process data and make decisions. These rules implement business requirements, enforce data integrity, and ensure compliance with organizational policies.

Understanding Business Rules

Business rules are specific statements that define or constrain some aspect of the business. In COBOL, these rules are implemented as program logic that enforces business constraints, performs calculations, and makes decisions based on business requirements.

Types of Business Rules

1. Validation Rules

Validation rules ensure data integrity and enforce business constraints on input data and business operations.

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 VALIDATION-RULES. 05 MIN-ACCOUNT-BALANCE PIC 9(8)V99 VALUE 1000. 05 MAX-TRANSACTION-AMT PIC 9(8)V99 VALUE 50000. 05 VALID-CUSTOMER-TYPES PIC X(3) VALUE 'PSB'. 05 MIN-CREDIT-SCORE PIC 9(3) VALUE 300. 05 MAX-CREDIT-SCORE PIC 9(3) VALUE 850. 01 VALIDATION-RESULTS. 05 VALIDATION-ERRORS PIC 9(2) VALUE 0. 05 ERROR-FLAG PIC X(1). 88 VALIDATION-PASSED VALUE 'Y'. 88 VALIDATION-FAILED VALUE 'N'. PROCEDURE DIVISION. VALIDATE-BUSINESS-RULES. MOVE 'Y' TO VALIDATION-FLAG MOVE 0 TO VALIDATION-ERRORS PERFORM VALIDATE-ACCOUNT-BALANCE PERFORM VALIDATE-TRANSACTION-AMOUNT PERFORM VALIDATE-CUSTOMER-TYPE PERFORM VALIDATE-CREDIT-SCORE IF VALIDATION-ERRORS > 0 MOVE 'N' TO VALIDATION-FLAG END-IF. VALIDATE-ACCOUNT-BALANCE. IF ACCOUNT-BALANCE < MIN-ACCOUNT-BALANCE ADD 1 TO VALIDATION-ERRORS DISPLAY 'ERROR: Account below minimum balance' END-IF. VALIDATE-TRANSACTION-AMOUNT. IF TRANSACTION-AMOUNT > MAX-TRANSACTION-AMT ADD 1 TO VALIDATION-ERRORS DISPLAY 'ERROR: Transaction exceeds maximum amount' END-IF.

2. Calculation Rules

Calculation rules implement business formulas and mathematical operations required by business processes.

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
WORKING-STORAGE SECTION. 01 CALCULATION-RULES. 05 INTEREST-RATE PIC 9(3)V9999 VALUE 0.0525. 05 SERVICE-FEE-RATE PIC 9(3)V9999 VALUE 0.0025. 05 OVERDRAFT-FEE PIC 9(4)V99 VALUE 25.00. 05 MINIMUM-PAYMENT PIC 9(3)V9999 VALUE 0.02. 01 CALCULATION-RESULTS. 05 MONTHLY-INTEREST PIC 9(8)V99. 05 SERVICE-FEE PIC 9(8)V99. 05 TOTAL-FEES PIC 9(8)V99. 05 MINIMUM-PAYMENT-AMT PIC 9(8)V99. PROCEDURE DIVISION. CALCULATE-BUSINESS-RULES. PERFORM CALCULATE-MONTHLY-INTEREST PERFORM CALCULATE-SERVICE-FEE PERFORM CALCULATE-MINIMUM-PAYMENT PERFORM CALCULATE-TOTAL-FEES. CALCULATE-MONTHLY-INTEREST. COMPUTE MONTHLY-INTEREST = ACCOUNT-BALANCE * INTEREST-RATE / 12. CALCULATE-SERVICE-FEE. COMPUTE SERVICE-FEE = ACCOUNT-BALANCE * SERVICE-FEE-RATE. CALCULATE-MINIMUM-PAYMENT. COMPUTE MINIMUM-PAYMENT-AMT = ACCOUNT-BALANCE * MINIMUM-PAYMENT. CALCULATE-TOTAL-FEES. ADD MONTHLY-INTEREST SERVICE-FEE TO TOTAL-FEES.

3. Decision Rules

Decision rules implement business logic for making decisions based on specific criteria and conditions.

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
41
42
43
44
45
46
47
WORKING-STORAGE SECTION. 01 DECISION-CRITERIA. 05 CUSTOMER-TYPE PIC X(1). 88 PREMIUM-CUSTOMER VALUE 'P'. 88 STANDARD-CUSTOMER VALUE 'S'. 88 BASIC-CUSTOMER VALUE 'B'. 05 ACCOUNT-BALANCE PIC 9(8)V99. 05 CREDIT-SCORE PIC 9(3). 05 TRANSACTION-HISTORY PIC 9(3). 01 DECISION-RESULTS. 05 APPROVAL-STATUS PIC X(1). 88 APPROVED VALUE 'Y'. 88 DENIED VALUE 'N'. 88 PENDING VALUE 'P'. 05 APPROVAL-LIMIT PIC 9(8)V99. 05 APPROVAL-REASON PIC X(50). PROCEDURE DIVISION. APPLY-DECISION-RULES. PERFORM EVALUATE-CUSTOMER-TYPE PERFORM CHECK-CREDIT-CRITERIA PERFORM DETERMINE-APPROVAL-LIMIT PERFORM FINALIZE-DECISION. EVALUATE-CUSTOMER-TYPE. EVALUATE CUSTOMER-TYPE WHEN 'P' PERFORM PREMIUM-CUSTOMER-RULES WHEN 'S' PERFORM STANDARD-CUSTOMER-RULES WHEN 'B' PERFORM BASIC-CUSTOMER-RULES WHEN OTHER MOVE 'N' TO APPROVAL-STATUS MOVE 'INVALID CUSTOMER TYPE' TO APPROVAL-REASON END-EVALUATE. PREMIUM-CUSTOMER-RULES. IF CREDIT-SCORE >= 700 AND ACCOUNT-BALANCE >= 10000 MOVE 'Y' TO APPROVAL-STATUS MOVE 100000 TO APPROVAL-LIMIT MOVE 'PREMIUM CUSTOMER APPROVED' TO APPROVAL-REASON ELSE MOVE 'P' TO APPROVAL-STATUS MOVE 'MANUAL REVIEW REQUIRED' TO APPROVAL-REASON END-IF.

Rule Implementation Patterns

1. Rule Tables

Use rule tables to implement complex business rules with multiple conditions and outcomes.

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
WORKING-STORAGE SECTION. 01 RULE-TABLE. 05 RULE-ENTRIES OCCURS 10 TIMES. 10 RULE-ID PIC 9(2). 10 RULE-CONDITION PIC X(20). 10 RULE-ACTION PIC X(30). 10 RULE-PRIORITY PIC 9(1). 01 RULE-PROCESSING. 05 CURRENT-RULE PIC 9(2). 05 RULE-MATCHED PIC X(1). 88 RULE-FOUND VALUE 'Y'. 88 RULE-NOT-FOUND VALUE 'N'. PROCEDURE DIVISION. PROCESS-RULE-TABLE. MOVE 1 TO CURRENT-RULE MOVE 'N' TO RULE-MATCHED PERFORM UNTIL CURRENT-RULE > 10 OR RULE-MATCHED = 'Y' PERFORM EVALUATE-RULE-CONDITION IF RULE-CONDITION(CURRENT-RULE) = 'MATCHED' MOVE 'Y' TO RULE-MATCHED PERFORM EXECUTE-RULE-ACTION ELSE ADD 1 TO CURRENT-RULE END-IF END-PERFORM.

2. Configuration-Driven Rules

Implement rules using configuration parameters that can be modified without changing the program code.

Best Practices