MainframeMaster

COBOL Conditional Processing

Conditional processing implements business rules and decision logic that determines how data is processed. Learn to build decision trees, implement complex business rules, and create maintainable conditional logic.

Business Rule Implementation

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
*> Credit approval business rules IF CUSTOMER-INCOME >= 50000 AND CREDIT-SCORE >= 700 MOVE 'APPROVED' TO LOAN-STATUS MOVE 100000 TO MAX-LOAN-AMOUNT DISPLAY 'Loan approved - High income, good credit' ELSE IF CUSTOMER-INCOME >= 30000 AND CREDIT-SCORE >= 650 MOVE 'APPROVED' TO LOAN-STATUS MOVE 50000 TO MAX-LOAN-AMOUNT DISPLAY 'Loan approved - Medium income, fair credit' ELSE IF CUSTOMER-INCOME >= 20000 AND CREDIT-SCORE >= 600 MOVE 'CONDITIONAL' TO LOAN-STATUS MOVE 25000 TO MAX-LOAN-AMOUNT DISPLAY 'Conditional approval - Low income, poor credit' ELSE MOVE 'DENIED' TO LOAN-STATUS MOVE 0 TO MAX-LOAN-AMOUNT DISPLAY 'Loan denied - Insufficient income or credit' END-IF.

Implement business rules as clear, hierarchical conditions. Start with the most favorable conditions and work down to less favorable ones. Each condition should result in a specific business outcome with appropriate actions.

Decision Tree Processing

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
*> Customer classification decision tree EVALUATE TRUE WHEN CUSTOMER-TYPE = 'INDIVIDUAL' EVALUATE TRUE WHEN CUSTOMER-AGE >= 65 PERFORM PROCESS-SENIOR-INDIVIDUAL WHEN CUSTOMER-AGE >= 18 PERFORM PROCESS-ADULT-INDIVIDUAL WHEN OTHER PERFORM PROCESS-MINOR-INDIVIDUAL END-EVALUATE WHEN CUSTOMER-TYPE = 'CORPORATE' EVALUATE TRUE WHEN COMPANY-SIZE = 'LARGE' PERFORM PROCESS-LARGE-CORPORATE WHEN COMPANY-SIZE = 'MEDIUM' PERFORM PROCESS-MEDIUM-CORPORATE WHEN COMPANY-SIZE = 'SMALL' PERFORM PROCESS-SMALL-CORPORATE WHEN OTHER PERFORM PROCESS-UNKNOWN-CORPORATE END-EVALUATE WHEN OTHER PERFORM PROCESS-UNKNOWN-CUSTOMER-TYPE END-EVALUATE.

Build decision trees using nested EVALUATE statements. Each level of the tree represents a different decision point. This structure makes complex business logic clear and maintainable.

Rule-Based Processing

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
*> Pricing rules based on multiple factors MOVE 0 TO DISCOUNT-PERCENTAGE *> Volume discount rule IF ORDER-QUANTITY >= 1000 ADD 10 TO DISCOUNT-PERCENTAGE ELSE IF ORDER-QUANTITY >= 500 ADD 5 TO DISCOUNT-PERCENTAGE END-IF. *> Customer type discount rule IF CUSTOMER-TYPE = 'PREMIUM' ADD 5 TO DISCOUNT-PERCENTAGE ELSE IF CUSTOMER-TYPE = 'GOLD' ADD 3 TO DISCOUNT-PERCENTAGE END-IF. *> Payment terms discount rule IF PAYMENT-TERMS = 'CASH' ADD 2 TO DISCOUNT-PERCENTAGE END-IF. *> Apply maximum discount limit IF DISCOUNT-PERCENTAGE > 15 MOVE 15 TO DISCOUNT-PERCENTAGE END-IF.

Implement rule-based processing by applying multiple independent rules that accumulate results. Each rule contributes to the final outcome. Use clear variable names and comments to document each rule's purpose.

Conditional Data Transformation

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
*> Transform data based on business rules IF TRANSACTION-TYPE = 'DEPOSIT' ADD TRANSACTION-AMOUNT TO ACCOUNT-BALANCE MOVE 'CREDIT' TO TRANSACTION-CLASSIFICATION ELSE IF TRANSACTION-TYPE = 'WITHDRAWAL' IF ACCOUNT-BALANCE >= TRANSACTION-AMOUNT SUBTRACT TRANSACTION-AMOUNT FROM ACCOUNT-BALANCE MOVE 'DEBIT' TO TRANSACTION-CLASSIFICATION ELSE MOVE 'INSUFFICIENT-FUNDS' TO TRANSACTION-CLASSIFICATION PERFORM HANDLE-INSUFFICIENT-FUNDS END-IF ELSE IF TRANSACTION-TYPE = 'TRANSFER' PERFORM PROCESS-TRANSFER-TRANSACTION ELSE MOVE 'INVALID-TYPE' TO TRANSACTION-CLASSIFICATION PERFORM HANDLE-INVALID-TRANSACTION END-IF.

Use conditional processing to transform data based on business rules. Each condition results in different data transformations and classifications. Include error handling for invalid conditions.

Dynamic Processing Rules

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
*> Processing rules that change based on context IF CURRENT-DATE > CUTOFF-DATE MOVE 'NEW-RULES' TO RULE-VERSION PERFORM APPLY-NEW-PROCESSING-RULES ELSE MOVE 'OLD-RULES' TO RULE-VERSION PERFORM APPLY-LEGACY-PROCESSING-RULES END-IF. *> Apply rules based on version EVALUATE RULE-VERSION WHEN 'NEW-RULES' PERFORM PROCESS-WITH-NEW-RULES WHEN 'OLD-RULES' PERFORM PROCESS-WITH-OLD-RULES WHEN OTHER PERFORM PROCESS-WITH-DEFAULT-RULES END-EVALUATE.

Implement dynamic processing rules that change based on context, dates, or other factors. Use rule versioning to handle different processing requirements. This allows for flexible business rule implementation.

Error Handling in Conditional Processing

cobol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
*> Comprehensive error handling IF INPUT-DATA IS NOT NUMERIC MOVE 'INVALID-NUMERIC' TO ERROR-CODE PERFORM LOG-ERROR PERFORM ERROR-HANDLING ELSE IF INPUT-DATA < 0 MOVE 'NEGATIVE-VALUE' TO ERROR-CODE PERFORM LOG-ERROR PERFORM ERROR-HANDLING ELSE IF INPUT-DATA > MAX-VALUE MOVE 'VALUE-TOO-LARGE' TO ERROR-CODE PERFORM LOG-ERROR PERFORM ERROR-HANDLING ELSE MOVE 'VALID' TO ERROR-CODE PERFORM PROCESS-VALID-DATA END-IF.

Include comprehensive error handling in conditional processing. Check for invalid data types, ranges, and business rule violations. Log errors for analysis and provide meaningful error codes for troubleshooting.