Noticias

Como enviar un reporte al AS/400 y hacer que quede "HOLD"

Existen dos posibilidades cuando se envía un reporte o procedimiento al AS/400: 1. Por pantalla, en cuyo caso se tiene el atributo HOLD = Yes, y es eliminado de la cola una vez que se ejecuta, 2. Directo a la impresora (atributo HOLD en NO).

Existen dos posibilidades cuando se envía un reporte o procedimiento al AS/400:

  • Por pantalla, en cuyo caso se tiene el atributo HOLD = Yes, y es eliminado de la cola una vez que se ejecuta
  • Directo a la impresora (atributo HOLD en NO)

Hay casos en los que puede interesar dejarlo 'holdeado'. Esto no se soluciona definiendo un nuevo PRINTER FILE o modificando el existente, ya que el atributo HOLD es sobrescrito por los valores que van en el programa generado.

La herencia de OVRPRTF (al igual que OVRDBF) implica que el primer OVR de la cadena es el que tiene preferencia. Es decir, si se hace un OVRTPRTF con una valor X en una opción y luego un OVRPRTF con el valor Z, el que "ganará" es el X. Esto es válido en la cadena de programas, es decir, una vez que finaliza la ejecución del programa que creó el OVRPRTF ese OVR desaparece.

La solución entonces es crear un programa CL que haga un OVRPRT del PRINTER FILE con el valor de HOLD = YES (solo ese atributo) y luego en ese mismo programa CL realizar la llamada al reporte o procedimiento.

Ejemplo:

OVRPRTF FILE(QPRINT) HOLD(*YES)
<Llamada al Reporte o Procedimiento>