MainframeMaster

COBOL Tutorial

COBOL GREATER Condition

The GREATER condition represents a fundamental relational comparison operator within COBOL conditional expression systems, serving as the primary specification for testing whether one value exceeds another in magnitude, sequence, or logical ordering within program control structures. This condition embodies the principles of comparative analysis by providing precise value relationship evaluation capabilities, enabling sophisticated decision-making patterns, and supporting comprehensive data validation architectures while maintaining compatibility with diverse data types and ensuring predictable comparison behavior in enterprise applications that require robust conditional logic, range validation, and business rule implementation with reliable relational testing and accurate value assessment mechanisms across numeric, alphanumeric, and specialized data formats.

Syntax and Usage

GREATER Condition Syntax
cobol
1
2
3
4
5
6
7
8
9
IF operand1 GREATER THAN operand2 IF operand1 GREATER operand2 IF operand1 > operand2 *> Examples: IF SALES-AMOUNT GREATER THAN 10000 IF AGE > 18 IF BALANCE GREATER MINIMUM-BALANCE IF CURRENT-DATE GREATER THAN DUE-DATE
Comparison
Conditional
Relational

Basic GREATER Examples

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
IDENTIFICATION DIVISION. PROGRAM-ID. GREATER-CONDITION-EXAMPLES. DATA DIVISION. WORKING-STORAGE SECTION. 01 NUMERIC-COMPARISONS. 05 SALES-AMOUNT PIC 9(7)V99 VALUE 15000.50. 05 QUOTA-TARGET PIC 9(7)V99 VALUE 12000.00. 05 EMPLOYEE-AGE PIC 9(3) VALUE 25. 05 RETIREMENT-AGE PIC 9(3) VALUE 65. 05 ACCOUNT-BALANCE PIC S9(8)V99 VALUE 2500.75. 05 MINIMUM-BALANCE PIC 9(6)V99 VALUE 100.00. 01 ALPHANUMERIC-COMPARISONS. 05 CUSTOMER-NAME PIC X(30) VALUE 'JOHNSON, ROBERT'. 05 REFERENCE-NAME PIC X(30) VALUE 'ADAMS, MARY'. 05 PRODUCT-CODE PIC X(10) VALUE 'PRD-12345'. 05 MINIMUM-CODE PIC X(10) VALUE 'PRD-10000'. 01 DATE-COMPARISONS. 05 ORDER-DATE PIC 9(8) VALUE 20240315. 05 SHIP-DATE PIC 9(8) VALUE 20240320. 05 CURRENT-DATE-WORK PIC 9(8). 01 VALIDATION-FLAGS. 05 SALES-EXCEEDED PIC X VALUE 'N'. 05 ELIGIBLE-RETIREMENT PIC X VALUE 'N'. 05 ACCOUNT-VALID PIC X VALUE 'N'. 01 WS-WORK-VARIABLES. 05 WS-YEARS-TO-RETIREMENT PIC 9(2). 05 WS-DEFICIT PIC 9(6)V99. 05 WS-DAYS-DIFF PIC 9(3). 05 WS-EXCESS PIC 9(6). 05 WS-DAYS-SUPPLY PIC 9(3). 05 WS-EXCESS-TIME PIC 9(3). 05 WS-ERROR-PERCENT PIC 9(2)V99. 05 WS-SHORTFALL PIC 9(5). 05 WS-MARGIN-GAP PIC 9(2)V99. PROCEDURE DIVISION. MAIN-PROCESSING. MOVE FUNCTION CURRENT-DATE(1:8) TO CURRENT-DATE-WORK *> Numeric comparisons IF SALES-AMOUNT GREATER THAN QUOTA-TARGET MOVE 'Y' TO SALES-EXCEEDED DISPLAY 'Sales quota exceeded!' DISPLAY 'Sales: $' SALES-AMOUNT ' Quota: $' QUOTA-TARGET ELSE DISPLAY 'Sales quota not met' END-IF *> Age comparison for retirement eligibility IF EMPLOYEE-AGE GREATER THAN RETIREMENT-AGE MOVE 'Y' TO ELIGIBLE-RETIREMENT DISPLAY 'Employee eligible for retirement' ELSE COMPUTE WS-YEARS-TO-RETIREMENT = RETIREMENT-AGE - EMPLOYEE-AGE DISPLAY 'Years to retirement: ' WS-YEARS-TO-RETIREMENT END-IF *> Account balance validation IF ACCOUNT-BALANCE > MINIMUM-BALANCE MOVE 'Y' TO ACCOUNT-VALID DISPLAY 'Account balance is sufficient' ELSE DISPLAY 'Warning: Account balance below minimum' COMPUTE WS-DEFICIT = MINIMUM-BALANCE - ACCOUNT-BALANCE DISPLAY 'Deficit: $' WS-DEFICIT END-IF *> Alphanumeric comparison (collating sequence) IF CUSTOMER-NAME GREATER THAN REFERENCE-NAME DISPLAY 'Customer name comes after reference alphabetically' ELSE DISPLAY 'Customer name comes before or equals reference' END-IF *> Product code range validation IF PRODUCT-CODE GREATER MINIMUM-CODE DISPLAY 'Product code is in valid range' ELSE DISPLAY 'Product code below minimum range' END-IF *> Date comparison IF SHIP-DATE GREATER THAN ORDER-DATE COMPUTE WS-DAYS-DIFF = SHIP-DATE - ORDER-DATE DISPLAY 'Ship date is ' WS-DAYS-DIFF ' days after order' END-IF IF CURRENT-DATE-WORK GREATER THAN SHIP-DATE DISPLAY 'Order has already shipped' ELSE DISPLAY 'Order has not shipped yet' END-IF STOP RUN.

Key Features and Applications

Data Type Support
  • • Numeric value comparison
  • • Alphanumeric collating sequence
  • • Date and time comparisons
  • • Mixed data type handling
Business Applications
  • • Range validation
  • • Threshold checking
  • • Performance analysis
  • • Eligibility determination

Interactive Tutorial

Hands-On Exercise: Business Rule Implementation
Practice using GREATER for business logic and validation rules

Exercise 1: Sales Commission Tiers

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
01 COMMISSION-STRUCTURE. 05 SALES-AMOUNT PIC 9(7)V99. 05 COMMISSION-RATE PIC 9V9999. 05 COMMISSION-AMOUNT PIC 9(6)V99. 01 TIER-THRESHOLDS. 05 BRONZE-THRESHOLD PIC 9(6) VALUE 10000. 05 SILVER-THRESHOLD PIC 9(6) VALUE 25000. 05 GOLD-THRESHOLD PIC 9(6) VALUE 50000. 05 PLATINUM-THRESHOLD PIC 9(6) VALUE 100000. PROCEDURE DIVISION. CALCULATE-COMMISSION. IF SALES-AMOUNT GREATER THAN PLATINUM-THRESHOLD MOVE 0.15 TO COMMISSION-RATE DISPLAY 'Platinum tier: 15% commission' ELSE IF SALES-AMOUNT GREATER THAN GOLD-THRESHOLD MOVE 0.12 TO COMMISSION-RATE DISPLAY 'Gold tier: 12% commission' ELSE IF SALES-AMOUNT GREATER THAN SILVER-THRESHOLD MOVE 0.08 TO COMMISSION-RATE DISPLAY 'Silver tier: 8% commission' ELSE IF SALES-AMOUNT GREATER THAN BRONZE-THRESHOLD MOVE 0.05 TO COMMISSION-RATE DISPLAY 'Bronze tier: 5% commission' ELSE MOVE 0.02 TO COMMISSION-RATE DISPLAY 'Base tier: 2% commission' END-IF END-IF END-IF END-IF MULTIPLY SALES-AMOUNT BY COMMISSION-RATE GIVING COMMISSION-AMOUNT.

Exercise 2: Credit Score Evaluation

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
01 CREDIT-EVALUATION. 05 CREDIT-SCORE PIC 9(3). 05 ANNUAL-INCOME PIC 9(8)V99. 05 DEBT-TO-INCOME PIC 9V99. 05 APPROVAL-STATUS PIC X(20). 01 CREDIT-CRITERIA. 05 EXCELLENT-SCORE PIC 9(3) VALUE 750. 05 GOOD-SCORE PIC 9(3) VALUE 700. 05 FAIR-SCORE PIC 9(3) VALUE 650. 05 MIN-INCOME PIC 9(6) VALUE 30000. 05 MAX-DEBT-RATIO PIC 9V99 VALUE 0.40. PROCEDURE DIVISION. EVALUATE-CREDIT. IF CREDIT-SCORE GREATER THAN EXCELLENT-SCORE AND ANNUAL-INCOME GREATER THAN MIN-INCOME AND DEBT-TO-INCOME NOT GREATER THAN MAX-DEBT-RATIO MOVE 'APPROVED - PREMIUM' TO APPROVAL-STATUS ELSE IF CREDIT-SCORE GREATER THAN GOOD-SCORE AND ANNUAL-INCOME GREATER THAN MIN-INCOME MOVE 'APPROVED - STANDARD' TO APPROVAL-STATUS ELSE IF CREDIT-SCORE GREATER THAN FAIR-SCORE MOVE 'CONDITIONAL APPROVAL' TO APPROVAL-STATUS ELSE MOVE 'DECLINED' TO APPROVAL-STATUS END-IF END-IF END-IF.

Advanced GREATER Patterns

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
IDENTIFICATION DIVISION. PROGRAM-ID. ADVANCED-GREATER-PATTERNS. DATA DIVISION. WORKING-STORAGE SECTION. 01 INVENTORY-MANAGEMENT. 05 CURRENT-STOCK PIC 9(6). 05 REORDER-POINT PIC 9(6). 05 MAXIMUM-STOCK PIC 9(6). 05 SAFETY-STOCK PIC 9(6). 05 LEAD-TIME-DAYS PIC 9(3). 01 PERFORMANCE-METRICS. 05 RESPONSE-TIME PIC 9(3)V99. 05 ERROR-RATE PIC 9V9999. 05 THROUGHPUT PIC 9(5). 05 CPU-UTILIZATION PIC 9(3)V99. 01 FINANCIAL-ANALYSIS. 05 REVENUE PIC 9(8)V99. 05 EXPENSES PIC 9(8)V99. 05 PROFIT-MARGIN PIC 9(3)V99. 05 ROI-PERCENTAGE PIC 9(3)V99. 01 THRESHOLDS. 05 MAX-RESPONSE-TIME PIC 9(3)V99 VALUE 2.50. 05 MAX-ERROR-RATE PIC 9V9999 VALUE 0.0100. 05 MIN-THROUGHPUT PIC 9(5) VALUE 1000. 05 MAX-CPU-UTIL PIC 9(3)V99 VALUE 80.00. 05 MIN-PROFIT-MARGIN PIC 9(3)V99 VALUE 15.00. 05 MIN-ROI PIC 9(3)V99 VALUE 12.00. 01 ALERT-LEVELS. 05 CRITICAL-ALERT PIC X(20) VALUE 'CRITICAL'. 05 WARNING-ALERT PIC X(20) VALUE 'WARNING'. 05 INFO-ALERT PIC X(20) VALUE 'INFORMATION'. PROCEDURE DIVISION. ADVANCED-MONITORING. PERFORM INVENTORY-ANALYSIS PERFORM PERFORMANCE-ANALYSIS PERFORM FINANCIAL-ANALYSIS STOP RUN. INVENTORY-ANALYSIS. *> Multi-level inventory checking IF CURRENT-STOCK GREATER THAN MAXIMUM-STOCK DISPLAY CRITICAL-ALERT ': Overstock condition detected' COMPUTE WS-EXCESS = CURRENT-STOCK - MAXIMUM-STOCK DISPLAY 'Excess inventory: ' WS-EXCESS ' units' ELSE IF CURRENT-STOCK GREATER THAN REORDER-POINT DISPLAY INFO-ALERT ': Inventory levels normal' ELSE IF CURRENT-STOCK GREATER THAN SAFETY-STOCK DISPLAY WARNING-ALERT ': Approaching reorder point' COMPUTE WS-DAYS-SUPPLY = CURRENT-STOCK / 100 *> Assuming daily usage DISPLAY 'Days of supply remaining: ' WS-DAYS-SUPPLY ELSE DISPLAY CRITICAL-ALERT ': Stock below safety level' DISPLAY 'Immediate reorder required' END-IF END-IF END-IF. PERFORMANCE-ANALYSIS. *> System performance monitoring IF RESPONSE-TIME GREATER THAN MAX-RESPONSE-TIME DISPLAY CRITICAL-ALERT ': Response time exceeded' COMPUTE WS-EXCESS-TIME = RESPONSE-TIME - MAX-RESPONSE-TIME DISPLAY 'Excess response time: ' WS-EXCESS-TIME ' seconds' END-IF IF ERROR-RATE GREATER THAN MAX-ERROR-RATE DISPLAY CRITICAL-ALERT ': Error rate too high' MULTIPLY ERROR-RATE BY 100 GIVING WS-ERROR-PERCENT DISPLAY 'Current error rate: ' WS-ERROR-PERCENT '%' END-IF IF THROUGHPUT NOT GREATER THAN MIN-THROUGHPUT DISPLAY WARNING-ALERT ': Throughput below minimum' COMPUTE WS-SHORTFALL = MIN-THROUGHPUT - THROUGHPUT DISPLAY 'Throughput shortfall: ' WS-SHORTFALL ' transactions' END-IF IF CPU-UTILIZATION GREATER THAN MAX-CPU-UTIL DISPLAY WARNING-ALERT ': High CPU utilization' DISPLAY 'CPU utilization: ' CPU-UTILIZATION '%' END-IF. FINANCIAL-ANALYSIS. *> Financial performance evaluation COMPUTE PROFIT-MARGIN = ((REVENUE - EXPENSES) / REVENUE) * 100 IF PROFIT-MARGIN GREATER THAN MIN-PROFIT-MARGIN DISPLAY INFO-ALERT ': Profit margin healthy' DISPLAY 'Profit margin: ' PROFIT-MARGIN '%' ELSE DISPLAY WARNING-ALERT ': Profit margin below target' COMPUTE WS-MARGIN-GAP = MIN-PROFIT-MARGIN - PROFIT-MARGIN DISPLAY 'Margin gap: ' WS-MARGIN-GAP '%' END-IF *> ROI analysis with multiple thresholds IF ROI-PERCENTAGE GREATER THAN 25 DISPLAY INFO-ALERT ': Excellent ROI performance' ELSE IF ROI-PERCENTAGE GREATER THAN 18 DISPLAY INFO-ALERT ': Good ROI performance' ELSE IF ROI-PERCENTAGE GREATER THAN MIN-ROI DISPLAY WARNING-ALERT ': Acceptable ROI' ELSE DISPLAY CRITICAL-ALERT ': ROI below minimum' DISPLAY 'Investment review required' END-IF END-IF END-IF.

Best Practices

Knowledge Check

Test Your Understanding

Question 1: Basic Syntax

What are the different ways to write a GREATER comparison?

Answer: GREATER THAN, GREATER, and > symbol. For example: IF A GREATER THAN B, IF A GREATER B, or IF A > B.

Question 2: Data Types

How does GREATER work with alphanumeric data?

Answer: GREATER compares alphanumeric data using the collating sequence (ASCII or EBCDIC), comparing character by character from left to right to determine alphabetical ordering.

Question 3: Business Logic

When would you use GREATER in business applications?

Answer: For range validation, threshold checking, performance analysis, eligibility determination, commission calculations, and any scenario requiring value comparison for decision making.

Common Patterns

Range Validation
cobol
1
2
3
4
5
6
IF INPUT-VALUE GREATER THAN MIN-VALUE AND INPUT-VALUE NOT GREATER THAN MAX-VALUE MOVE 'VALID' TO STATUS-FLAG ELSE MOVE 'INVALID' TO STATUS-FLAG END-IF.
Threshold Checking
cobol
1
2
3
4
5
6
IF PERFORMANCE-METRIC GREATER THAN THRESHOLD PERFORM ALERT-MANAGEMENT MOVE 'EXCEEDED' TO ALERT-STATUS ELSE MOVE 'NORMAL' TO ALERT-STATUS END-IF.

Frequently Asked Questions