Validar Correo Electrónico

Necesidad

Validar correo electrónico en COBOL.

Contexto

A continuación se describe las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación en COBOL.

  2. Debe validarse que el correo electrónico se encuentra asociado a un solo usuario a pesar del componente entre el + y la @[1].

Solución

  1. Se define la división IDENTIFICATION DIVISION[2] para la solución:

    cobolemail.cbl
           IDENTIFICATION DIVISION.
          ******************
          * Identification *
          ******************
           PROGRAM-ID. COBOLEMAIL.
  2. En la división DATA DIVISION[3] se definen las variables que serán usadas por el programa:

    • W01-EMAIL: contiene el email ingresado por entrada estándar.

    • W02-VALIDEMAIL: al final del proceso contendrá el correo electrónico final que se debe usar en producción (Correo sin el componente entre + y @).

    • W03-COUNT: variable temporal usada para contar diferentes caracteres.

    • W04-EMAIL: variable temporal para almacenar el nombre de usuario y el dominio del correo electrónico proporcionado.

            ********
            * Data *
            ********
             DATA DIVISION.
      
             WORKING-STORAGE SECTION.
             01 W01-EMAIL      PIC X(256) VALUE "".
             01 W02-VALIDEMAIL PIC X(256) VALUE "".
             01 W03-COUNT      PIC 9(002) VALUE 0.
             01 W04-EMAIL
                 02 W04-USERNAME PIC X(64).
                 02 W04-DOMAIN   PIC X(255).
  3. Iniciamos nuestro programa dentro de la división PROCEDURE DIVISION[4] aceptando por entrada estándar un correo electrónico:

          ********
          * Main *
          ********
           PROCEDURE DIVISION.
           MAIN.
               ACCEPT W01-EMAIL.
  4. Contamos todos los arrobas que se encuentran en el correo proporcionado:

           INSPECT W01-EMAIL
           TALLYING W03-COUNT
           FOR ALL "@".
  5. El número de arrobas debe ser mayor a cero:

           IF W03-COUNT > 0 THEN
  6. Reinicializamos la variable de contador:

           MOVE 0 TO W03-COUNT
  7. Separamos el correo electrónico a través del arroba, en la primera parte debe quedar el nombre de usuario y en la segunda parte el dominio:

           UNSTRING W01-EMAIL
           DELIMITED BY "@"
           INTO W04-USERNAME W04-DOMAIN
  8. Contamos todos los caracteres en el nombre del usuario:

           INSPECT W04-USERNAME
           TALLYING W03-COUNT
           FOR CHARACTERS
           BEFORE INITIAL SPACE
  9. Si es mayor a cero, reinicializamos el contador y continuamos con el proceso:

           IF W03-COUNT > 0 THEN
               MOVE 0 TO W03-COUNT
  10. Se cuenta todos los caracteres en la parte del dominio (sin incluir espacios):

           INSPECT W04-DOMAIN
           TALLYING W03-COUNT
           FOR CHARACTERS
           BEFORE INITIAL SPACE
  11. Si contiene un nombre de dominio, procedemos a realizar la última parte del proceso:

           IF W03-COUNT > 0 THEN
  12. Enviamos el componente antes del carácter + a la variable W02-VALIDEMAIL:

           UNSTRING W04-USERNAME
           DELIMITED BY "+"
           INTO W02-VALIDEMAIL
  13. Por último unimos el usuario con el nombre del dominio, de esta forma separamos el componente entre el + y el @, evitando que un usuario pueda registrar múltiples cuentas con un único correo válido:

           STRING W02-VALIDEMAIL "@" W04-DOMAIN
           DELIMITED BY SPACE
           INTO W02-VALIDEMAIL
  14. Mostramos el correo electrónico válido:

           DISPLAY W02-VALIDEMAIL
  15. Cualquier otra situación puede ser considerada como un error de correo electrónico:

                   ELSE
                       PERFORM EMAIL-ERROR
                   END-IF
               ELSE
                   PERFORM EMAIL-ERROR
               END-IF
           ELSE
               PERFORM EMAIL-ERROR
           END-IF.
    
           STOP RUN.
  16. Para el ejemplo ilustrativo, se muestra un mensaje de error. En esta sección debe ser tratado el error:

           EMAIL-ERROR.
               DISPLAY "Email error".
               STOP RUN.
  17. Estas son algunas de las pruebas realizadas con el programa:

    Table 1. Salida obtenida luego de ejecutar el programa para diferentes datos de entrada.
    Correo electrónico Correo electrónico válido

    admin

    Error

    admin@

    Error

    @domain.com

    Error

    admin@domain.com

    admin@domain.com

    admin+1234@domain.com

    admin@domain.com

Descargas

Puedes descargar el código fuente pulsando en el siguiente enlace:

  1. cobolemail.cbl contiene las validaciones de correo electrónico explicadas anteriormente.

Copyright © 2020 Fluid Attacks, We hack your software. All rights reserved.

Service status - Terms of Use - Privacy Policy - Cookie Policy