Email Validator
Problem Description
Validate if email has proper format: contains @ and . after @.
Expected Output
VALID or INVALID email
Hints
Check for @ symbol and domain with dot.
Solution
IDENTIFICATION DIVISION.
PROGRAM-ID. EMAILVAL.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-EMAIL PIC X(50).
01 WS-LEN PIC 9(2).
01 WS-I PIC 9(2).
01 WS-AT-POS PIC 9(2) VALUE 0.
01 WS-DOT-POS PIC 9(2) VALUE 0.
01 WS-CHAR PIC X(1).
01 WS-VALID PIC 9 VALUE 1.
PROCEDURE DIVISION.
DISPLAY "ENTER EMAIL: ".
ACCEPT WS-EMAIL.
MOVE FUNCTION LENGTH(FUNCTION TRIM(WS-EMAIL)) TO WS-LEN.
* Find @ position
PERFORM VARYING WS-I FROM 1 BY 1 UNTIL WS-I > WS-LEN
MOVE WS-EMAIL(WS-I:1) TO WS-CHAR
IF WS-CHAR = "@"
IF WS-AT-POS = 0
MOVE WS-I TO WS-AT-POS
ELSE
MOVE 0 TO WS-VALID
END-IF
END-IF
IF WS-CHAR = "." AND WS-AT-POS > 0
MOVE WS-I TO WS-DOT-POS
END-IF
END-PERFORM.
* Validate
IF WS-AT-POS < 2
MOVE 0 TO WS-VALID
END-IF.
IF WS-DOT-POS <= WS-AT-POS
MOVE 0 TO WS-VALID
END-IF.
IF WS-DOT-POS >= WS-LEN
MOVE 0 TO WS-VALID
END-IF.
IF WS-VALID = 1
DISPLAY "VALID EMAIL"
ELSE
DISPLAY "INVALID EMAIL"
END-IF.
STOP RUN.
Explanation:
Check: @ exists, @ not at start, . exists after @, something after .