Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to String Handling
String Handling | Intermediate | COBOL

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 .