martes, 28 de abril de 2009

Someter trabajos batch

Para entender como el sistema somete un trabajo, explicaré cual es el procedimiento básico que utiliza el OS400.Para someter un trabajo utilizamos el mandato SBMJOB, indicando en el parámetro CMD el programa, o mandato, que queremos ejecutar, grabando una entrada en la cola de trabajo:
  • Es conveniente indicar un nombre de trabajo (JOB) que nos ayude a controlarlo, ya que por omisión utilizara el valor *JOBD, o sea utilizara el nombre de la descripción de trabajo para todos los trabajos que sometamos sin nombre.
  • El trabajo ira a la cola de trabajo (JOBQ) que este especificada en el SBMJOB, por omisión tiene *JOBD que nos indica que cogerá el valor de la cola de trabajo especificada en la descripción de trabajo, indicada en el parámetro JOBD.
  • El parámetro JOBD nos indica la descripción de trabajo que utilizará, por omisión tiene el valor *USRPRF, este nos indica que cogerá el valor de la descripción de trabajo del usuario que esta sometiendo el trabajo. Esto se define en el perfil del usuario (DSPUSRPRF parámetro JOBD).
  • El valor del parámetro JOBD(*USRPRF) puede forzarse para tener otro valor, al usar el parámetro USER del SBMJOB (por omisión *CURRENT), que indica que usara otro usuario para ejecutar el trabajo, evidentemente hemos de estar autorizados al perfil de usuario a utilizar ya que puede suponer un agujero de seguridad.
  • Podemos definir la prioridad que tendrá nuestro trabajo en la cola de trabajos (JOBPTY) y/o en la cola de salida (OUTPTY). Por omisión utiliza el valor *JOBD recuperando este valor de la descripción de trabajo que habitualmente es 5. Podemos indicarle otro valor que puede ir de 1 (alta prioridad) a 9 (baja prioridad), de todas formas tenemos un limite que esta indicado en el parámetro PTYLMT de nuestro perfil de usuario y que por omisión es 3.
  • Con el parámetro OUTQ definimos a que cola de salida irán los listados que genere nuestro trabajo, por omisión es *CURRENT con lo que utiliza la cola de salida que tienen asignada el trabajo desde donde se ejecuta el SBMJOB.
  • Otro parámetro muy importante es INLLIBL (Initial library list) donde indicaremos en que bibliotecas y en que orden el sistema operativo debe buscar los objetos (programas, archivos, áreas de datos, etc..) que se utilicen en el trabajo. Por omisión tiene el valor *CURRENT y por tanto la lista de bibliotecas sera la misma que la del trabajo desde donde se ejecuta el SBMJOB. Otro valor que puede tener el parámetro INLLIBL, y muy recomendable utilizar, es *JOBD que utilizara la lista de bibliotecas definida en la descripción de trabajo que utilicemos para someter el trabajo.
  • El parámetro RTGDTA (Routing data) es importante para asignar los atributos de ejecución del trabajo, esta relacionado con las entradas de direccionamiento que explicaré en un próximo articulo.
  • Después vendrían los parámetros relacionados con el log del trabajo: LOG, LOGCLPGM, LOGOUTPUT, JOBMSGQMX. Todos ellos tienen por omisión *JOBD. Habitualmente para que un trabajo deje rastro para que podamos ver los que se ha ejecutado es utilizando los valores LOG(4 00 *SECLVL) LOGCLPGM(*YES).
Para el resto de parámetros y valores os recomiendo leer con más calma la ayuda del propio mandato SBMJOB (SBMJOB + F4+F1+F2, F14 para imprimirla) para entrar en más detalle.

Para mucha más información:
Gestión de Trabajos en el IBM iSeries InformationCenter
Manual de IBM iSeries Systems management and Work management

No hay comentarios: