Hace tiempo escribí cómo implementar Tivoli Workload Scheduler 8.6, en esta ocasión será la versión 9.3. Desde hace un tiempo le cambiaron el nombre al producto y le empezaron a llamar IBM Z Workload Scheduler (IWS). Antes de llamarse Tivoli Workload Scheduler (TWS), se llamaba Operations Planning and Control/ESA (OPC/ESA) o, simplemente, OPC.
Es un proceso muy parecido, aunque he cambiado el orden de los pasos para adaptarme al manual de IBM. La configuración será un Controller y un Tracker en el mismo sistema.
Como en otras ocasiones, os dejo el enlace al manual de IBM:
IBM Workload Scheduler for z/OS 9.3 - Planning and Installation
En el caso del sistema que utilizo, el nombre de las librerías de TWS empieza por TWS930.
Vamos a crear dos librerías que usaremos más adelante.
Librería que contendrá los jobs de ejemplo para crear todas las librerías que usaremos. En mi caso la llamaré OPC.S0W1.SAMPJCL. Debe tener las características de la imagen:
Debemos crear otra librería para los esqueletos de los jobs. La llamaré OPC.S0W1.SKELS. Debe tener las características mostradas en la imagen:
Para generar las librerías de instalación, utilizaremos la CLIST llamada EQQJOBS. Para poder utilizarla, antes deberemos alocar las siguientes librerías a nuestra sesión de TSO:
SEQQCLIB a la DD SYSPROC
SEQQPNL0 a la DD ISPPLIB
SEQQSKL0, SEQQSAMP y la librería de esqueletos que acabamos de crear (OPC.S0W1.SKELS) a la DD ISPSLIB.
El procedimiento de logon de TSO que utilizamos lo podemos ver cuando los logamos. En mi caso, ISPFPROC.
Estos procedimientos de logon estarán dentro de una de las librerías PROCLIB que usemos en nuestro sistema. En mi caso, ADCD.Z23B.PROCLIB.
Añado la librería TWS930.SEQQCLIB a la DD SYSPROC.
Añado la librería TWS930.SEQQPNL0 a la DD ISPPLIB.
Añado las librerías TWS930.SEQQSKL0, TWS930.SEQQSAMP y OPC.S0W1.SKELS a la DD ISPSLIB.
Salimos y nos logamos de nuevo a TSO para refrescar las librerías. Usaremos el comando .
Salimos y nos logamos de nuevo a TSO para refrescar las librerías. Usaremos el comando TSO EQQJOBS.
Aparecerá el siguiente menú. Debemos empezar entrando en la opción 2 – Generate batch-job skeletons. Una vez hecha esta opción, ya podremos realizar los pasos de la opción 1.
Tendremos que rellenar los siguientes campos:
Batch-job skeletons. Librería de esqueletos que creamos anteriormente. OPC.S0W1.SKELS.
Message library name. Librería existente de mensajes de TWS. En mi caso, TWS930.SEQQMSG0
Parameter library. Librería que se creará y contendrá los parámetros. OPC.S0W1.PARM.
Member in parameter library. Miembro que contendrá los parámetros de BATCHOPT. Le llamaré igual, para evitar confusiones.
Checkpoint dataset. Librería que se creará para el checkpoint. OPC.S0W1.CKPT.
Pulsamos intro y rellenamos los siguientes datos en el nuevo panel.
Non-VSAM dsn prefix. Prefijo para los ficheros que no son VSAM. Usaré: OPC.S0W1
VSAM dsn prefix. Prefijo para los ficheros que son VSAM. Usaré: OPC.S0W1
Unit name. Nombre esotérico de la unidad para crear ficheros o, simplemente, 3390.
Unit name (temp ds). Nombre esotérico de la unidad para crear ficheros o 3390.
Unit name (sort ds). Nombre esotérico de la unidad para crear ficheros o 3390.
SYSOUT class. Clase para la SYSOUT, en mi caso *.
Pulsamos intro. El siguiente panel lo dejaré por defecto ya que no usaré ni FTAs, ni Restart and Clean Up ni Java, menos la opción “FORMATTED REPORT OF TRACKLOG EVENTS”, que lo pondré a Y.
Al pulsar intro, se crearán los ficheros correspondientes y luego aparecerá un mensaje indicando “PROCESS COMPLETED”. Ahora entramos en la opción 1 – Create simple job JCL.
Debemos rellenar los siguientes datos:
Sample job JCL. Librería que creamos al principio. En mi caso, OPC.S0W1.SAMPJCL.
Job statement information. Cabecera que tendrán los jobs.
Message library name. Librería **. SEQQMSG0 de TWS. En mi caso, TWS930.SEQQMSG0.
Data library name. Librería **. SEQQDATA de TWS. En mi caso, TWS930. SEQQDATA
Parameter library. Librería de parámetros que usamos en el pasos anteriores. En mi caso, OPC.S0W1.PARM
Checkpoint dataset. Librería de checkpoint que usamos en el pasos anteriores. En mi caso, OPC.S0W1.CKPT
Pulsamos intro y rellenaremos lo siguiente en el panel.
Non-VSAM dsn prefix. El mismo que usamos en pasos anteriores. En mi caso, OPC.S0W1.
VSAM dsn prefix. El mismo que usamos en pasos anteriores. En mi caso, OPC.S0W1.
Unit name. Nombre de la unidad, en mi caso, 3390.
Primary volume serial. Volumen del sistema para crear los ficheros VSAM. En mi caso, USER10.
Backup volume serial. Volumen del sistema para crear los ficheros VSAM. En mi caso, USER10.
SYSOUT class. Clase de salida. En mi caso, *.
El resto de parámetros los dejaré como vienen.
El siguiente panel, dejo ambas opciones a No.
En las utilidades Java también pondré N ya que no las voy a usar.
De las funciones del panel siguiente, sólo activaré la opción MLOG Switch que consiste en tener dos ficheros de MLOG que se van cambiando cuando llega a un número determinado de registros. Además, el MLOG antiguo se copia a un GDG para guardarlo.
La última opción que tendremos será la de poder de crear backup de los ficheros de configuración, Long Term Plan, Current Plan, etc. También podremos restaurarlos.
En el caso de no indicar ningún nombre para los procedimientos, se usarán los nombres por defecto descritos en el manual.
Cuando pulsemos intro, se crearán los ficheros.
Aparecerá un mensaje indicando “PROCESS COMPLETED”. La opción 3 – Generate Data Store Samples, no la voy a utilizar.
Entramos en la opción 4 – Generate WAPL samples. Esta opción genera los ficheros necesarios para utilizar “Workload Automation Programming Language”.
Modificaré los siguientes datos:
Sample job JCL. Fichero creado en pasos anteriores que contendrá los jobs de ejemplo. OPC.S0W1.SAMPJCL.
WAPL data maps. Librería **.SEQQWAPL de TWS. En mi caso, TWS930.SEQQWAPL.
MISC library. Librería **.SEQQMISC de TWS. En mi caso, TWS930. SEQQMISC.
Message library name. Librería **.SEQQMSG0 de TWS. En mi caso, TWS930. SEQQMISC.
REXX Libraries. Librería opcional de REXX. Si usamos compilador, será la librería **.SEAGLPA. Si no lo usamos, será **.SEAGALT.
Subsys. Nombre que tendrá el subsistema. En mi caso, usaré OPCC.
El resto los dejo por defecto.
Se generarán los ficheros necesarios.
Siguiendo el mismo orden de pasos del manual, vamos a instalar las exits de JES2 y SMF.
Estas exits sirven para controlar los estados por los que pasa un job y generar eventos (job iniciado, en ejecución, terminado, etc.) en TWS.
Debemos crear una librería para almacenar la compilación de las exits. Usaré el nombre OPC.S0W1.OBJ y debe tener las características de la imagen.
Buscamos las librerías creadas. Editamos el job EQQJES2 de la librería **.SAMPJCL para crear la exit EXIT7 y ajustándolo a las librerías del sistema. Después lo ejecutamos.
En mi caso, la librería target de JES2 es la MVS.MVST.SMPMTS.
La librería donde se guardará el módulo final (DD SYSLMOD) será ADCD.Z23B.LPALIB.
Para saber las librerías LPALIB que tenemos disponibles, buscaremos el miembro LPALSTxx de la PARMLIB.
Terminará correctamente y ya tendremos el módulo en la librería LPALIB.
Ahora editaremos el job EQQJES21 para crear la exit EXIT51. Los cambios serán los mismos que en el job anterior. Este job tiene un error en la línea 61 ya que falta la coma al final de la línea. La añadimos.
Lo ejecutamos y tendremos la exit en la librería LPALIB.
Ahora queda por compilar las tres exits de SMF: IEFACTRT, IEFUJI, IEFU83. El manual de IBM, indica utilizar el job EQQSMF para hacer esto instalándolo como USERMOD, pero yo voy a utilizar otro método.
Usando el job EQQJES2 como base, simplemente tendremos que hacer los cambios mostrados en la imagen para compilar los ejemplos EQQACTR1, EQQUJI1, EQQU831.
Para la exit IEFACTRT haremos los siguientes cambios y ejecutaremos el job.
Para la exit IEFUJI haremos los siguientes cambios y ejecutaremos el job.
Para la exit IEFU83 haremos los siguientes cambios y ejecutaremos el job.
Ya tendremos todos los módulos compilados.
Hasta aquí esta primera parte. En el siguiente enlace podéis encontrar la segunda parte: TWS/OPC - Implementando Tivoli Workload Scheduler 9.3 - 2/3