miércoles, 15 de mayo de 2013

Componente. Validación



Objetivo


Crear componentes  que sean capaces de validar determinada información. 
En este ejemplo, se realizará un componente para validar varios campos.

Referencias: ILE estrategiaBD Pruebas

Estos componentes complementan al componente acceso de datos y de actualización de base de datos presentado en entradas anteriores.

Configuración

Se utiliza SQL para el desarrollo del código. El componente  formará parte de un programa de servicio y será exportable por lo que podrá ser llamado por el programa que enlace este programa de servicio.
  • Los nombres de los componentes (Val_Nombre, Val_IdPais). Utilizo siempre Val_xxxxxx donde xxxxx es el nombre del campo a validar.
  • El nombre del módulo donde estarán los componentes BAN01M1
  • El miembro (/Copy) con la definición del prototipo con los componentes y con la definición de estructuras será BAN01M1CP
  • El programa de servicio donde estarán los módulos BAN01SRV. Tendrá un miembro asociado con el mismo nombre con la definición (binder) de los componentes a exportar.

Miembro /Copy. BAN01M1CP

Se describen las estructuras de datos que dan servicio al componente de acceso a base de datos y el prototipo de llamada. Estarán en un miembro fuente independiente para que sea utilizado como /Copy tanto por el fuente del componente como los fuentes de los posibles programas que lo utilicen.


 *==========================================================
 *    Validar Campo de Nombre de cliente
 *       E01 - No permite blancos
 *==========================================================
DVal_Nombre       PR              n
D P_Nombre                      50    Const
D P_IdError                      3

 *==========================================================
 *    Validar Campo de Pais
 *       E01 - No permite blancos
 *       E02 - Pais no existe
 *==========================================================
DVal_IdPais       PR              n
D P_IdPais                       3    Const
D P_IdError                      3          



Está compuesto por:
  • (Val_Nombre) Definición de prototipo (interfaz) para validar el campo de nombre del fichero de clientes.
  • (Val_IdPais) Definición de prototipo (interfaz) para validar el campo de Id de Pais del fichero de clientes.

Al principio del fuente del componente se utiliza el /COPY para “cargar” las estructuras de datos y los prototipos de los componentes. 

/COPY *LIBL/QRPGLESRC,BAN01M1CP

Fuente del componente. Val_Nombre en BAN01M1

Este componente valida que sea correcto el contenido del campo nombre que pertenece al fichero de clientes

El componente tiene el siguiente código:



PVal_Nombre       B                   EXPORT
DVal_Nombre       PI              n
D P_Nombre                      50    Const
D P_IdError                      3
 /Free
    If P_Nombre = *Blanks;
       P_IdError ='E01';
       Return *Off;
    EndIf;

    P_IdError = *Blanks;
    Return *On;
 /End-Free
P                 E


Parámetros de salida

  • Como función, devuelve True o False. El primero si la validación es correcta y el segundo si es errónea
  • (P_IdError) Identificativo del error que detecta o en caso de que sea correcto, devuelve blancos. 

Parámetros de entrada 

  • (P_Nombre) El contenido del campo Nombre a validar.

Código

En este ejemplo se valida que el campo Nombre esté informado. Si es blancos, devuelve que no es válido y el identificativo de error ('E01'). En caso contrario, devuelve que es correcto y el identificativo estará a blancos.


Fuente del componente. Val_IdPais en BAN01M1

Este componente valida que sea correcto el contenido del campo IdPais que pertenece al fichero de clientes


El componente tiene el siguiente código:


PVal_IdPais       B                   EXPORT
DVal_IdPais       PI              n
D P_IdPais                       3    Const
D P_IdError                      3

D wTotReg         S             10  0
 /Free
    If P_IdPais = *Blanks;
       P_IdError ='E01';
       Return *Off;
    EndIf;

    wTotReg = *Zeros;
    Exec Sql SELECT count(*) into :wTotReg
                FROM Pais
                WHERE IdPais = :P_IdPais;
    If wTotReg = *Zeros;
       P_IdError ='E02';
       Return *Off;
    EndIf;

    P_IdError = *Blanks;
    Return *On;
 /End-Free
P                 E

Parámetros de salida

  • Como función, devuelve True o False. El primero si la validación es correcta y el segundo si es errónea
  • (P_IdError) Identificativo del error que detecta o en caso de que sea correcto, devuelve blancos.

Parámetros de entrada 

  • (P_IdPais) El contenido del campo IdPais a validar. 

Código

En este ejemplo se valida que el campo IdPais esté informado. Si es blancos, devuelve que no es válido y el identificativo de error ('E01'). Después verifica que el país exista en la tabla de países. Si no existe, devuelve que no es válido y el identificativo de error ('E02'). 
En caso contrario, devuelve que es correcto y el identificativo estará a blancos.

No hay comentarios:

Publicar un comentario