Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL EVALUATE Statement

Beginner 🕑 10 min read 👁 0 views

COBOL EVALUATE Statement

The EVALUATE statement is COBOL's case/switch structure for multi-way branching.

Syntax

EVALUATE identifier/expression/TRUE/FALSE
    WHEN value-1 [THRU value-2]
        statement-1
    WHEN value-3
        statement-2
    WHEN OTHER
        statement-3
END-EVALUATE

Example Program

       IDENTIFICATION DIVISION.
       PROGRAM-ID. EVAL-DEMO.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-SCORE       PIC 9(3) VALUE 85.
       01 WS-GRADE       PIC X(1).
       01 WS-DAY         PIC 9 VALUE 3.
       01 WS-DAY-NAME    PIC X(10).

       PROCEDURE DIVISION.
      * EVALUATE with ranges (THRU)
           EVALUATE TRUE
               WHEN WS-SCORE >= 90
                   MOVE 'A' TO WS-GRADE
               WHEN WS-SCORE >= 80
                   MOVE 'B' TO WS-GRADE
               WHEN WS-SCORE >= 70
                   MOVE 'C' TO WS-GRADE
               WHEN OTHER
                   MOVE 'F' TO WS-GRADE
           END-EVALUATE
           DISPLAY 'Grade: ' WS-GRADE

      * EVALUATE with specific values
           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 THRU 5
                   MOVE 'Thu/Fri' TO WS-DAY-NAME
               WHEN 6 THRU 7
                   MOVE 'Weekend' TO WS-DAY-NAME
               WHEN OTHER
                   MOVE 'Invalid' TO WS-DAY-NAME
           END-EVALUATE
           DISPLAY 'Day: ' WS-DAY-NAME

           STOP RUN.

Expected Output

Grade: B
Day: Wednesday

Key Points

  • EVALUATE TRUE tests conditions
  • EVALUATE identifier tests specific values
  • THRU specifies ranges
  • WHEN OTHER handles default case
  • Cleaner than nested IF statements