88 VOWEL VALUE 'A', 'E', 'I', 'O', 'U'.
88 CONSONANT 'B' THRU 'D', 'F' THRU 'H', 'J' THRU 'N',
'P' THRU 'T', 'V' THRU 'Z'.
88 DIGIT VALUE '0' THRU '9'.
88 VALID-CHAR VALUE 'A' THRU 'B', '0' THRU '9'.
PROCEDURE DIVISION.
PARA-1.
DISPLAY 'ENTER ANY CHARACTER'.
ACCEPT CHAR.
EVALUATE VALID-CHAR
WHEN VOWEL DISPLAY ' IT IS A VOWEL'
WHEN CONSONANT DISPLAY ' IT IS A CONSONANT'
WHEN DIGIT DISPLAY ' IT IS A DIGIT'
WHEN OTHER DISPLAY ' SPECIAL CHARACTER'
END-EVALUATE.
STOP RUN.
I had used this program to identify vowels,consonants and digits when input is given. But when I entered any space or * or ? it is displaying IT IS A VOWEL as if it is a default. please clarify me on this.
01 WS-CHAR PIC X(01).
01 WS-VALID-CHAR PIC X(01) VALUE ' '.
88 WS-VOWEL VALUE 'A','E','I','O','U'.
88 WS-CONSONANT VALUE 'B' THRU 'D','F' THRU 'H',
'J' THRU 'N','P' THRU 'T','V' THRU 'Z'.
88 WS-DIGIT VALUE '0' THRU '9'.
88 WS-VC VALUE 'A' THRU 'Z','0' THRU '9'.
****************************************************************
P R O C E D U R E D I V I S I O N *
****************************************************************
PROCEDURE DIVISION.
ACCEPT WS-CHAR.
DISPLAY 'ENTERED CHARACTER:' WS-CHAR.
MOVE WS-CHAR TO WS-VALID-CHAR.
EVALUATE TRUE
WHEN WS-VOWEL DISPLAY ' ITS VOWEL'
WHEN WS-CONSONANT DISPLAY ' CONSONANT '
WHEN WS-DIGIT DISPLAY ' DIGIT '
WHEN WS-VC DISPLAY ' VALID CHAR'
WHEN OTHER DISPLAY ' SPECIAL CHARACTER'
END-EVALUATE.
01 WS-CHAR PIC X(01).
01 WS-VALID-CHAR PIC X(01) VALUE ' '.
88 WS-VOWEL VALUE 'A','E','I','O','U'.
88 WS-CONSONANT VALUE 'B' THRU 'D','F' THRU 'H',
'J' THRU 'N','P' THRU 'T','V' THRU 'Z'.
88 WS-DIGIT VALUE '0' THRU '9'.
88 WS-VC VALUE 'A' THRU 'Z','0' THRU '9'.
****************************************************************
P R O C E D U R E D I V I S I O N *
****************************************************************
PROCEDURE DIVISION.
ACCEPT WS-CHAR.
DISPLAY 'ENTERED CHARACTER:' WS-CHAR.
MOVE WS-CHAR TO WS-VALID-CHAR.
EVALUATE TRUE
WHEN WS-VOWEL DISPLAY ' ITS VOWEL'
WHEN WS-CONSONANT DISPLAY ' CONSONANT '
WHEN WS-DIGIT DISPLAY ' DIGIT '
WHEN WS-VC DISPLAY ' VALID CHAR'
WHEN OTHER DISPLAY ' SPECIAL CHARACTER'
END-EVALUATE.
STOP RUN.
Thanks
-Narisimha
I got new ideas. One is using perform only and another is IF Else.
WORKING-STORAGE SECTION.
01 N PIC 9.
01 CHAR.
88 VOWEL VALUE 'A', 'E', 'I', 'O', 'U'.
88 CONSONANT 'B' THRU 'D', 'F' THRU 'H', 'J' THRU 'N',
'P' THRU 'T', 'V' THRU 'Z'.
88 DIGIT VALUE '0' THRU '9'.
88 VALID-CHAR VALUE 'A' THRU 'B', '0' THRU '9'.
PROCEDURE DIVISION.
PARA-1.
DISPLAY 'ENTER ANY CHARACTER'.
ACCEPT CHAR.
PERFORM UNTIL NOT VALID-CHAR AND N>1
EVALUATE TRUE
WHEN VOWEL DISPLAY ' IT IS A VOWEL'
WHEN CONSONANT DISPLAY ' IT IS A CONSONANT'
WHEN DIGIT DISPLAY ' IT IS A DIGIT'
WHEN OTHER DISPLAY ' SPECIAL CHARACTER'
END-EVALUATE
COMPUTE N=N+1
END-PERFORM.
STOP RUN.
other one is.
WORKING-STORAGE SECTION.
01 CHAR.
88 VOWEL VALUE 'A', 'E', 'I', 'O', 'U'.
88 CONSONANT 'B' THRU 'D', 'F' THRU 'H', 'J' THRU 'N',
'P' THRU 'T', 'V' THRU 'Z'.
88 DIGIT VALUE '0' THRU '9'.
88 VALID-CHAR VALUE 'A' THRU 'B', '0' THRU '9'.
PROCEDURE DIVISION.
PARA-1.
DISPLAY 'ENTER ANY CHARACTER'.
ACCEPT CHAR.
IF NOT VALID-CHAR
DISPLAY ' SPECIAL CHARACTER'
ELSE
EVALUATE VALID-CHAR
WHEN VOWEL DISPLAY ' IT IS A VOWEL'
WHEN CONSONANT DISPLAY ' IT IS A CONSONANT'
WHEN DIGIT DISPLAY ' IT IS A DIGIT'
WHEN OTHER DISPLAY 'UNKNOWN'
END-EVALUATE
END-IF
STOP RUN.