Lea en AS/400 System i . . .

Aprovechando las posibilidades del WRKACTJOB a través de sus parámetros

Obtenga una salida diferente de la habitual al ejecutar el comando WRKACTJOB, aprovechando lo ofrecido por algunos parámetros interesantes que posibilitan entre otras acciones la de renovar automáticamente la pantalla resultante.

FaceBookTwitterGoogle+

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.

IMPORTANTE:
“Notas técnicas de AS/400" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes AS/400. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos.
Si desea suscribir otra dirección de e-mail para que comience a recibir las Notas Técnicas AS400, envíe un mensaje desde esa direcciónletter400@teknoda.com, aclarando nombre, empresa, cargo y país del suscriptor.

AS400 , iSeries y System i son marcas registradas de IBM. IBM no es el editor de esta publicación y no es responsable de la misma en ningún aspecto. La información contenida en esta publicación ha sido generada por nuestros especialistas a partir de fuentes consideradas confiables y del ejercicio profesional cotidiano. No obstante, por la posibilidad de error humano, mecánico, cambio de versión u otro, Teknoda no garantiza la exactitud o completud de la misma.
COPYRIGHT TEKNODA S.A. PROHIBIDA SU REPRODUCCION TOTAL O PARCIAL SIN CONSENTIMIENTO DE TEKNODA


 

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.

Lea en AS/400 Tips . . .

Infografía comparativa Comandos de SAVE RESTORE del AS400

save_restore_thumbnail

Conozca y diferencie visualmente qué partes del almacenamiento resguarda y restaura cada comando y cada opción del Menú Salvar y Restaurar. PUEDE DESCARGAR UN FORMATO POSTER PARA IMPRESION.

Para lograr un entendimiento conceptual es de suma utilidad contar con una ayuda gráfica, que  permita diferenciarlos a primera vista. Nuestro equipo de especialistas ha desarrollado el "Infographics" que presentamos con este tip. Por supuesto, el mismo debe complementarse con la información detallada de los innumerables parámetros de cada comando, pero es un útil marco de referencia  para recordar el área de injerencia de cada comando.

LEER ESTE ARTICULO >>>>>

 

 

 

Copyright © 2017 Teknoda tips - Tecnologia SAP Netweaver - IBM AS400 - System i - iSeries. Todos los derechos reservados.
Joomla! es software libre, liberado bajo la GNU General Public License.