MainframeMaster

COBOL Tutorial

COBOL EVALUATE Statement

The EVALUATE statement represents a fundamental component of multi-way selection and case logic in COBOL, serving as a sophisticated alternative to nested IF statements for complex conditional processing. This statement embodies structured programming principles by providing clear, readable case-based logic, enabling efficient multi-condition evaluation, and supporting the development of maintainable decision-making structures that can handle complex business logic with precision and clarity.

Basic EVALUATE Usage

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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
IDENTIFICATION DIVISION. PROGRAM-ID. EVALUATE-DEMO. DATA DIVISION. WORKING-STORAGE SECTION. 01 SELECTION-VARIABLES. 05 GRADE-LETTER PIC X. 05 NUMERIC-SCORE PIC 9(3). 05 STUDENT-STATUS PIC X(10). 05 DEPARTMENT-CODE PIC X(3). 05 EMPLOYEE-LEVEL PIC 9(2). 01 PROCESSING-RESULTS. 05 GRADE-DESCRIPTION PIC X(20). 05 SALARY-RANGE PIC X(15). 05 PROCESSING-MESSAGE PIC X(50). PROCEDURE DIVISION. MAIN-PROCESSING. PERFORM DEMONSTRATE-SIMPLE-EVALUATE PERFORM DEMONSTRATE-RANGE-EVALUATE PERFORM DEMONSTRATE-MULTIPLE-SUBJECT-EVALUATE PERFORM DEMONSTRATE-COMPLEX-EVALUATE STOP RUN. DEMONSTRATE-SIMPLE-EVALUATE. DISPLAY 'Demonstrating simple EVALUATE...' MOVE 'A' TO GRADE-LETTER EVALUATE GRADE-LETTER WHEN 'A' MOVE 'Excellent' TO GRADE-DESCRIPTION DISPLAY 'Grade A: Excellent performance' WHEN 'B' MOVE 'Good' TO GRADE-DESCRIPTION DISPLAY 'Grade B: Good performance' WHEN 'C' MOVE 'Average' TO GRADE-DESCRIPTION DISPLAY 'Grade C: Average performance' WHEN 'D' MOVE 'Below Average' TO GRADE-DESCRIPTION DISPLAY 'Grade D: Below average performance' WHEN 'F' MOVE 'Failing' TO GRADE-DESCRIPTION DISPLAY 'Grade F: Failing performance' WHEN OTHER MOVE 'Invalid Grade' TO GRADE-DESCRIPTION DISPLAY 'Invalid grade entered' END-EVALUATE. DEMONSTRATE-RANGE-EVALUATE. DISPLAY 'Demonstrating range EVALUATE...' MOVE 95 TO NUMERIC-SCORE EVALUATE NUMERIC-SCORE WHEN 90 THRU 100 MOVE 'A' TO GRADE-LETTER MOVE 'Outstanding' TO GRADE-DESCRIPTION DISPLAY 'Score ' NUMERIC-SCORE ': Grade A' WHEN 80 THRU 89 MOVE 'B' TO GRADE-LETTER MOVE 'Good' TO GRADE-DESCRIPTION DISPLAY 'Score ' NUMERIC-SCORE ': Grade B' WHEN 70 THRU 79 MOVE 'C' TO GRADE-LETTER MOVE 'Satisfactory' TO GRADE-DESCRIPTION DISPLAY 'Score ' NUMERIC-SCORE ': Grade C' WHEN 60 THRU 69 MOVE 'D' TO GRADE-LETTER MOVE 'Needs Improvement' TO GRADE-DESCRIPTION DISPLAY 'Score ' NUMERIC-SCORE ': Grade D' WHEN 0 THRU 59 MOVE 'F' TO GRADE-LETTER MOVE 'Failing' TO GRADE-DESCRIPTION DISPLAY 'Score ' NUMERIC-SCORE ': Grade F' WHEN OTHER MOVE 'Invalid Score' TO GRADE-DESCRIPTION DISPLAY 'Invalid score: ' NUMERIC-SCORE END-EVALUATE. DEMONSTRATE-MULTIPLE-SUBJECT-EVALUATE. DISPLAY 'Demonstrating multiple subject EVALUATE...' MOVE 'IT' TO DEPARTMENT-CODE MOVE 5 TO EMPLOYEE-LEVEL EVALUATE DEPARTMENT-CODE ALSO EMPLOYEE-LEVEL WHEN 'IT' ALSO 1 THRU 3 MOVE 'Junior IT' TO SALARY-RANGE DISPLAY 'Junior IT Staff: Entry level salary' WHEN 'IT' ALSO 4 THRU 6 MOVE 'Senior IT' TO SALARY-RANGE DISPLAY 'Senior IT Staff: Mid-level salary' WHEN 'IT' ALSO 7 THRU 10 MOVE 'IT Manager' TO SALARY-RANGE DISPLAY 'IT Management: Senior level salary' WHEN 'HR' ALSO 1 THRU 3 MOVE 'Junior HR' TO SALARY-RANGE DISPLAY 'Junior HR Staff: Entry level salary' WHEN 'HR' ALSO 4 THRU 6 MOVE 'Senior HR' TO SALARY-RANGE DISPLAY 'Senior HR Staff: Mid-level salary' WHEN 'FIN' ALSO 1 THRU 3 MOVE 'Junior Finance' TO SALARY-RANGE DISPLAY 'Junior Finance Staff: Entry level salary' WHEN OTHER MOVE 'Unclassified' TO SALARY-RANGE DISPLAY 'Unclassified position' END-EVALUATE. DEMONSTRATE-COMPLEX-EVALUATE. DISPLAY 'Demonstrating complex EVALUATE...' MOVE 'ACTIVE' TO STUDENT-STATUS MOVE 85 TO NUMERIC-SCORE EVALUATE TRUE WHEN STUDENT-STATUS = 'ACTIVE' AND NUMERIC-SCORE >= 90 MOVE 'Dean''s List Candidate' TO PROCESSING-MESSAGE DISPLAY 'Eligible for Dean''s List' WHEN STUDENT-STATUS = 'ACTIVE' AND NUMERIC-SCORE >= 80 MOVE 'Honor Roll Candidate' TO PROCESSING-MESSAGE DISPLAY 'Eligible for Honor Roll' WHEN STUDENT-STATUS = 'ACTIVE' AND NUMERIC-SCORE >= 70 MOVE 'Good Standing' TO PROCESSING-MESSAGE DISPLAY 'Student in good standing' WHEN STUDENT-STATUS = 'ACTIVE' AND NUMERIC-SCORE >= 60 MOVE 'Academic Warning' TO PROCESSING-MESSAGE DISPLAY 'Student on academic warning' WHEN STUDENT-STATUS = 'ACTIVE' AND NUMERIC-SCORE < 60 MOVE 'Academic Probation' TO PROCESSING-MESSAGE DISPLAY 'Student on academic probation' WHEN STUDENT-STATUS = 'INACTIVE' MOVE 'Not Enrolled' TO PROCESSING-MESSAGE DISPLAY 'Student not currently enrolled' WHEN OTHER MOVE 'Status Unknown' TO PROCESSING-MESSAGE DISPLAY 'Unable to determine student status' END-EVALUATE.

Best Practices and FAQ