Estoy tratando de convertir, en un programa RPG, una fecha de un archivo (es del comando DSPJRN, por lo que el campo es 6 numérico, en formato JOB). Quiero usarlo como una fecha en mi programa, pero no puedo lograrlo correctamente.

Intenté describir un campo con el tipo "D": fecha, palabra clave datfmt (* trabajo) para convertir el valor del archivo, pero datfmt (* trabajo) es incorrecto (error RNF0612)

Intenté recuperar el formato de fecha de trabajo de un programa CLP con RTVJOBA DATFMT (& FMT), y usar la variable en RPG para convertir la fecha de esta manera

eval ztJODATE = %date(JODATE:FMT)

Pero no se compila: error RNF0606. Creo que no puedo usar una variable para el formato en la función incorporada% date.

¿Es esta una forma de hacer lo que quiero, o me veo obligado a transformar el valor de la fecha en SQL antes de usar su valor en RPG? PD: ¡No quiero codificar el formato en mi programa RPG!

0
FredericP 23 abr. 2020 a las 14:06

2 respuestas

La mejor respuesta

Puede especificar * JOBRUN para% DATE.

eval      ztJODATE = %date(JODATE:*JOBRUN)

Tenga en cuenta que RPG recupera el formato de fecha de trabajo durante la inicialización del módulo, por lo que si cambia el formato de fecha de trabajo mientras el programa se está ejecutando, RPG no entenderá la fecha.

3
Barbara Morris 24 abr. 2020 a las 12:02

En lugar de utilizar DSPJRN en un archivo externo, la forma recomendada de recuperar y procesar entradas de diario sería utilizar una de las interfaces programáticas proporcionadas por IBM i.

También puede usar un formato * TYPE3 o superior para el archivo de salida. En lugar de los campos de datos y hora con formato de trabajo por separado, hay un solo campo de marca de tiempo del sistema char (26).

Dicho esto, hay un API de formato de fecha y hora de conversión (QWCCVTDT) que acepta '*JOB' como un especificador de formato de entrada.

2
Charles 23 abr. 2020 a las 14:08