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

COBOL Conditional Statements

Beginner 🕑 20 min read 👁 2 views

IF Statement

The IF statement is used for conditional execution in COBOL. It supports nested conditions and multiple branches.

Basic IF Syntax

IF condition
   statement(s)
END-IF.

IF-ELSE Syntax

IF condition
   statement(s)
ELSE
   statement(s)
END-IF.

Relational Operators

OperatorMeaning
= or EQUAL TOEqual
> or GREATER THANGreater than
< or LESS THANLess than
>= or GREATER THAN OR EQUALGreater or equal
<= or LESS THAN OR EQUALLess or equal
NOT =Not equal

Logical Operators

  • AND - Both conditions must be true
  • OR - Either condition must be true
  • NOT - Negates the condition

Class Conditions

  • NUMERIC - Check if data is numeric
  • ALPHABETIC - Check if data is alphabetic
  • ALPHABETIC-LOWER - Check for lowercase
  • ALPHABETIC-UPPER - Check for uppercase

EVALUATE Statement

EVALUATE is COBOL's equivalent of switch/case statement. It provides a cleaner way to handle multiple conditions.

Code Example

       PROCEDURE DIVISION.
       CONDITIONAL-EXAMPLES.

       * Simple IF
           IF WS-AGE >= 18
               DISPLAY "ADULT"
           END-IF.

       * IF-ELSE
           IF WS-BALANCE > 0
               DISPLAY "POSITIVE BALANCE"
           ELSE
               DISPLAY "NEGATIVE OR ZERO BALANCE"
           END-IF.

       * Nested IF
           IF WS-SCORE >= 90
               MOVE "A" TO WS-GRADE
           ELSE IF WS-SCORE >= 80
               MOVE "B" TO WS-GRADE
           ELSE IF WS-SCORE >= 70
               MOVE "C" TO WS-GRADE
           ELSE
               MOVE "F" TO WS-GRADE
           END-IF.

       * Using AND/OR
           IF WS-AGE >= 18 AND WS-STATUS = "ACTIVE"
               PERFORM PROCESS-APPLICATION
           END-IF.

       * Class condition
           IF WS-INPUT IS NUMERIC
               COMPUTE WS-RESULT = WS-INPUT * 2
           ELSE
               DISPLAY "INVALID INPUT"
           END-IF.

       * EVALUATE statement
           EVALUATE WS-TRANS-CODE
               WHEN "A"
                   PERFORM ADD-RECORD
               WHEN "U"
                   PERFORM UPDATE-RECORD
               WHEN "D"
                   PERFORM DELETE-RECORD
               WHEN OTHER
                   DISPLAY "INVALID CODE"
           END-EVALUATE.

       * EVALUATE TRUE
           EVALUATE TRUE
               WHEN WS-AMOUNT > 10000
                   MOVE "HIGH" TO WS-CATEGORY
               WHEN WS-AMOUNT > 5000
                   MOVE "MEDIUM" TO WS-CATEGORY
               WHEN OTHER
                   MOVE "LOW" TO WS-CATEGORY
           END-EVALUATE.

           STOP RUN.