Cómo validar fechas en programas CL
Conozca en AS400 cómo utilizar el comando CVTDAT para validar una fecha en un programa CL
En AS400, el comando CL CVTDAT permite convertir una fecha de un formato a otro especificado, y el entorno de ejecución de este comando es sólo dentro de un programa CL.
Además de este propósito, el comando CVTDAT puede usarse para verificar si una fecha es válida o no, antes de ser convertida, usando sentencias que "monitoreen" los mensajes de escape asociados con el comando CVTDAT.
En el siguiente programa CL de ejemplo, se muestra el uso del comando CVTDAT y la sentencia MONMSG para "capturar" los mensajes de escape relacionados con la validación de fecha del comando CVTDAT y determinar de esa manera, antes de producirse la conversión, si esa fecha es válida o no.
1 | PGM PARM(&FECHA) |
DCL VAR(&FECHA) TYPE(*CHAR) LEN(6) | |
DCL VAR(&VALIDO) TYPE(*CHAR) LEN(15) | |
DCL VAR(&NOIMPORTA) TYPE(*CHAR) LEN(8) | |
CHGVAR VAR(&VALIDO) VALUE('Fecha válida') | |
2 | CVTDAT DATE(&FECHA) TOVAR(&NOIMPORTA) FROMFMT(*DMY) + |
TOFMT(*JUL) TOSEP('/') | |
3 | MONMSG MSGID(CPF0550 CPF0551 CPF0552 CPF0553 + |
CPF0555 CPF0556 CPF0557) EXEC(DO) | |
4 | CHGVAR VAR(&VALIDO) VALUE('Fecha inválida') |
ENDDO | |
5 | CHGDTAARA DTAARA(*LDA (10 34)) VALUE('Fecha convertida + |
es' *BCAT &NOIMPORTA) | |
6 | DSPDTAARA DTAARA(*LDA) |
7 | SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&VALIDO) + |
MSGTYPE(*COMP) | |
8 | DSPDTAARA DTAARA(*LDA) |
9 | CHGDTAARA DTAARA(*LDA) VALUE(' ') |
ENDPGM |
Donde:
1 - Se recibe la fecha (&FECHA) como parámetro al ejecutar el programa.
2 - El comando CVTDAT convierte la fecha ingresada en formato *DMY, al formato *JUL, dejando el resultado en la variable &NOIMPORTA.
3 - La sentencia MONMSG "monitorea" de manera local, los mensajes de escape asociados al comando CVTDAT (indicados más abajo) relacionados con la validación de fecha.
CPF0550 Fecha demasiado corta para el formato especificado.
CPF0551 Los separadores de la fecha no son válidos.
CPF0552 La fecha contiene separadores mal colocados o adicionales
CPF0553 La fecha contiene demasiados o pocos caracteres numéricos
CPF0555 Fecha no en formato especificado o fecha no válida.
CPF0556 La fecha contiene dos o más tipos de separadores.
CPF0557 Fecha fuera del rango permitido.
4 - Si ocurre algún mensaje de escape indicado previamente en la sentencia MONMSG al ejecutar el comando CVTDAT, la fecha ingresada No es válida y se asigna ese texto a la variable &VALIDO.
5 - 6 Opcionalmente, se puede almacenar la fecha convertida (si no dio error la validación) en el área de datos local ( *LDA) y visualizarla por pantalla (DSPDTAARA *LDA).
7 - A través del comando SNDPGMMSG se envía un mensaje (que aparecerá en la parte inferior de la pantalla) indicando Fecha válida o Fecha inválida, según el resultado de la ejecución del comando CVTDAT, dando el programa como finalizado de manera satisfactoria.
8 -9 - También, de manera opcional, se puede mostrar el contenido de la *LDA (DSPDTAARA *LDA) para conocer si la fecha ingresada fue válida o no; y si fue válida, poder visualizar en *LDA el resultado de la conversión a formato Juliano (*JUL, especificado así en el ejemplo). Finalmente en el punto 9, opcionalmente, se puede "blanquear" el área de datos *LDA, para futuras ejecuciones del programa.
- El mensaje de escape "CPF0554" - La variable especificada es demasiado pequeña para el formato de fecha convertido, es también un mensaje de escape del comando CVTDAT. No está incluido en el programa ejemplo en el monitoreo para la validación de la fecha, porque está relacionado específicamente con errores de la conversión.
- Para conocer todos los formatos de fecha que se pueden especificar en el comando CVTDAT, referirse a la ayuda del comando.
Copyright 2011 - Teknoda S.A.
IMPORTANTE: “Notas técnicas de AS/400 - IBM i" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes IBM i - AS/400. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. NS iTech - Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos. |
Ficha técnica: Notas técnicas – Tips de AS400 - iSeries ”Cómo validar fechas en programas CL”
Tema: Programación CL. Descripción: Conozca en AS400 cómo utilizar el comando CVTDAT para validar una fecha en un programa CL.