Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to Conditional Logic
Conditional Logic | Intermediate | COBOL

EVALUATE Statement

Problem Description

Use EVALUATE for multiple condition checking (like switch-case).

Expected Output

Menu-driven program using EVALUATE

Hints

EVALUATE is cleaner than nested IF for multiple conditions.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. EVALTEST. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-CHOICE PIC 9. 01 WS-GRADE PIC 9(3). 01 WS-RESULT PIC X(15). 01 WS-DAY PIC 9. 01 WS-DAY-NAME PIC X(10). PROCEDURE DIVISION. * EVALUATE with single value DISPLAY "ENTER DAY (1-7): ". ACCEPT WS-DAY. EVALUATE WS-DAY WHEN 1 MOVE "MONDAY" TO WS-DAY-NAME WHEN 2 MOVE "TUESDAY" TO WS-DAY-NAME WHEN 3 MOVE "WEDNESDAY" TO WS-DAY-NAME WHEN 4 MOVE "THURSDAY" TO WS-DAY-NAME WHEN 5 MOVE "FRIDAY" TO WS-DAY-NAME WHEN 6 MOVE "SATURDAY" TO WS-DAY-NAME WHEN 7 MOVE "SUNDAY" TO WS-DAY-NAME WHEN OTHER MOVE "INVALID" TO WS-DAY-NAME END-EVALUATE. DISPLAY "DAY: " WS-DAY-NAME. * EVALUATE TRUE for ranges DISPLAY "ENTER MARKS (0-100): ". ACCEPT WS-GRADE. EVALUATE TRUE WHEN WS-GRADE >= 90 MOVE "EXCELLENT" TO WS-RESULT WHEN WS-GRADE >= 80 MOVE "VERY GOOD" TO WS-RESULT WHEN WS-GRADE >= 70 MOVE "GOOD" TO WS-RESULT WHEN WS-GRADE >= 60 MOVE "AVERAGE" TO WS-RESULT WHEN WS-GRADE >= 50 MOVE "PASS" TO WS-RESULT WHEN OTHER MOVE "FAIL" TO WS-RESULT END-EVALUATE. DISPLAY "RESULT: " WS-RESULT. STOP RUN.

Explanation:

EVALUATE with literal values or TRUE for condition ranges. WHEN OTHER is default.