minicabe
Teknoda publica en este sitio todos sus BLOGS, notas técnicas, tips y artículos tutoriales, etc. en castellano con acceso libre, para las tecnologías SAP, y AS400 System i. Este material es fruto del trabajo de investigación  y redacción de nuestro equipo de R&D,  desarrollados en forma totalmente objetiva e independiente.

 

Notas técnicas - Tips - Tutorials                              En ESPAÑOL

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.

Para tener en cuenta...
  • 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.


 

Ficha técnicaNotas 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.

Copyright © 2025 Teknoda Tech Portal & Training. Todos los derechos reservados.
Joomla! es software libre, liberado bajo la GNU General Public License.