COBOL Class Condition
CLASS condition tests whether the data in a variable belongs to a specific category of characters such as ALPHABETIC, ALPHABETIC-LOWER, ALPHABETIC-UPPER, NUMERIC, etc. It also verifies the data that belongs to a user-defined category coded by CLASS in SPECIAL-NAMES.
Syntax -
 
 
Parameters -
- identifier-1 - Specifies the variable to validate.
- NOT - used to validate the negate condition.
- NUMERIC - Used to validate whether the data is numeric or not.
- ALPHABETIC - Used to validate the data contains only A to Z (lowercase or uppercase) characters and a space.
- ALPHABETIC-UPPER - Used to validate the data contains only uppercase A to Z characters and a space.
- ALPHABETIC-LOWER - Used to validate the data contains only lowercase a to z characters and a space.
- class-name - Used to validate the data contains characters listed in the CLASS definition of the SPECIAL-NAMES paragraph.
Valid class condition combinations for different data types -
| Data Type in Declaration | Valid class condition | 
|---|---|
| Alphabetic | ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER class-name NOT ALPHABETIC NOT ALPHABETIC-LOWER NOT ALPHABETIC-UPPER NOT class-name | 
| Alphanumeric, alphanumeric-edited, numeric-edited | ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER NUMERIC class-name NOT ALPHABETIC NOT ALPHABETIC-LOWER NOT ALPHABETIC-UPPER NOT NUMERIC NOT class-name | 
| Decimal | NUMERIC NOT NUMERIC | 
| Numeric | NUMERIC class-name NOT NUMERIC NOT class-name | 
Practical Example -
Scenario1 - Validating Alphabetic
05 WS-VAR1          PIC A(10) VALUE "MAINFRAME ".   
...
IF WS-VAR1 IS ALPHABETIC
    DISPLAY "Data is alphabetic"
ELSE
    DISPLAY "Data is not alphabetic"
END-IFResult - Data is alphabetic
Scenario2 - Validating Numeric value
05 WS-VAR2    PIC 9(02) VALUE 25.  
...
IF WS-VAR2 IS NUMERIC
    DISPLAY "Data is numeric"
ELSE
    DISPLAY "Data is not numeric"
END-IFResult - Data is numeric
Scenario3 - Validating custom class
SPECIAL-NAMES.
    CLASS ALPHA-NUMERIC IS 'A' THROUGH 'Z' '0' THROUGH '9'.
...
05 WS-VAR1          PIC X(10) VALUE "MAINFRAME1".
...
IF WS-VAR1 IS ALPHA-NUMERIC
    DISPLAY "Data is Alpha-numeric"
ELSE
    DISPLAY "Data is not Alpha-numeric"
END-IFResult - Data is Alpha-numeric
