jueves, 13 de junio de 2013

Recuperar atributos de otro trabajo

Muchos conocemos, y usamos, el mandato RTVJOBA que recupera los atributos de nuestro trabajo, y según los valores recuperados ejecutar unas u otras sentencias; unos ejemplos:

  • RTVJOBA USER(&USRPRF) : Si el valor &USRPRF devuelto pertenece al grupo de los usuarios operadores, le muestro, por ejemplo, un menú de backup, en caso contrario salgo sin dejarle hacer nada.
  • RTVJOBA TYPE(&TYPE):  Si el valor recuperado &TYPE devuelve '1' es un trabajo interactivo y puedo mostrar por ejemplo una pantalla, y si tiene el valor '0' generar un listado de spool.

¿Pero que pasa cuando necesitamos recuperar los atributos de otro trabajo? 
Para ello cree la utilidad RTVJOBATR "Retrieve another Job Attributes" que devuelve varios atributos de un trabajo, que aun exista en el sistema, indiferentemente del estado de dicho trabajo.


Los atributos que recupera el mandato RTVJOBATR, siempre en formato carácter y de la longitud que se expresa entre paréntesis, son:


  • Job Status: Estado del trabado.
  • Job Type: Tipo del trabajo.
  • Job Subtype: Subtipo del trabajo.
  • Subsystem Name: Subsistema donde se ejecuta el trabajo.
  • Current user: Usuario actualmente conectado al trabajo.
  • IP Address: Dirección IP, si la tiene, desde donde se ha lanzado la petición, esto es útil para conocer quien ha lanzado una petición ODBC.
  • End job code: Código de finalización del trabajo.


Los valores de los parámetros JOBSTS, JOBTYP, JOBSBT, SBSNAM, USRCUR y IPADRS son recuperados con la API QUSRJOBI (formato JOBI0600). Buscar, en el enlace de la API, para conocer el significado de los valores devueltos.

Si el mandato detecta que el trabajo aun se esta ejecutando, o esta en cola de trabajos, devolverá el valor '0' en el parámetro ENDCOD. Si ha finalizado recupera con la misma API  QUSRJOBI (formato JOBI0400) el código de finalización; devolverá un '1' si lo hizo sin errores, y si los tuvo devolverá otro valor, en el fuente del programa hay una tabla con los valores posibles, o podemos encontrarlos en este enlace, buscando "Job end reason".

Podéis bajar el código de esta utilidad desde este enlace.

1 comentario:

mrierab dijo...

He publicado el nuevo enlace y con un codigo actualizado.