• principal_3

    Desde 2015, enseñando sobre el sistema operativo z/OS de IBM en esta web. z/OS se utiliza en máquinas llamadas Mainframe.

  • principal_1

    Para realizar el contenido, utilizo el producto de IBM llamado z/Development and Test Environtment Personal Edition. Este software permite emular un Mainframe y así poder utilizar z/OS para aprender.

  • principal_2

    Es utilizado por grandes empresas (bancos, aseguradoras...). Aquí aprenderás a instalar y configurar productos relacionados con z/OS.

  • principal_4

    ADCD es una distribución de z/OS que contiene productos de IBM como IMS, DB2, CICS, ZOWE, TWS, NetView, System Automation, etc.

TWS/OPC/IWS - Implementando Tivoli Workload Scheduler 9.3 - 2/3

Seguimos con la implementación de Tivoli Workload Scheduler 9.3. El último paso que hicimos fue compilar las exits necesarias para el funcionamiento de la herramienta.

 

Ahora empezaremos a realizar los cambios en la PARMLIB.

Añadiremos las exits EXIT7 y EXIT51 al fichero de parámetros de JES2. Para saber cuál es, buscaremos la tarea JES2 en la librería PROCLIB. En mi caso, es el miembro JES2PARM de la PARMLIB.

037 watermark

 

Lo editaremos y añadiremos lo siguiente teniendo mucho de cuidado con los comentarios. Si editamos mal este miembro, el JES2 no arrancará.

LOAD(OPCAXIT7) /* Load IBM Workload Scheduler for z/OS exit mod */    

EXIT(7) ROUTINES=OPCAENT7,STATUS=ENABLED /* Define EXIT7 entry point */

LOAD(TWSXIT51) /* Load IBM Workload Scheduler for z/OS exit mod */    

EXIT(51) ROUTINES=TWSENT51,STATUS=ENABLED /*Define EXIT51 entry point*/

037 watermark

 

IEFSSNxx

Añadiremos las siguientes líneas en el miembro IEFSSNxx de la PARMLIB para el Controller y Tracker:

SUBSYS SUBNAME(OPCC) INITRTN(EQQINITM) INITPARM (’0,M’)

SUBSYS SUBNAME(OPCT) INITRTN(EQQINITM) INITPARM (’100,M’)

OPCC y OPCT son los nombres de los subsistemas.

EQQINITM es el nombre del módulo que se encuentra en la librería **. SEQQLMD0 de TWS.

El número incluido en el parámetro INITPARM es la cantidad de memoria ECSA que será utilizado. Para el controller debe ser 0 y para el tracker con “100” es suficiente para unos 1100 jobs (según el manual de IBM).

037 watermark

 

PROGxx

Añadiremos la librería de módulos de TWS **. SEQQLMD0 a la concatenación de librerías APF autorizadas y de LINKLST.

037 watermark

037 watermark

 

Aprovechamos para incluir en el miembro PROGxx la inicialización de las exits creadas anteriormente. Deben ser añadidas antes de la inicialización de la LNKLST, es decir, antes de la línea que indica “LNKLST DEFINE NAME(LNKLST00)”.

EXIT ADD EXITNAME(SYS.IEFU83) MODNAME(TWSU83)

EXIT ADD EXITNAME(SYS.IEFACTRT) MODNAME(TWSACTRT)

EXIT ADD EXITNAME(SYS.IEFUJI) MODNAME(TWSUJI)

EXIT ADD EXITNAME(SYSSTC.IEFU83) MODNAME(TWSU83)

EXIT ADD EXITNAME(SYSSTC.IEFACTRT) MODNAME(TWSACTRT)

EXIT ADD EXITNAME(SYSSTC.IEFUJI) MODNAME(TWSUJI)

EXIT ADD EXITNAME(SYSJES2.IEFU83) MODNAME(TWSU83)

EXIT ADD EXITNAME(SYSJES2.IEFACTRT) MODNAME(TWSACTRT)

EXIT ADD EXITNAME(SYSJES2.IEFUJI) MODNAME(TWSUJI)

037 watermark

 

SMFPRMxx

En este miembro de la PARMLIB indicaremos los registros que se recogerán en SMF. El manual de IBM indica el siguiente ejemplo:

/*SYS and SUBSYS keywords*/

SYS(TYPE(6,14,15,18,26,30,60,62,64,90),EXITS(IEFU83,IEFACTRT,IEFUJI))

SUBSYS(STC,EXITS(IEFUJI,IEFACTRT,IEFU83))

SUBSYS(JESn,EXITS(IEFUJI,IEFACTRT,IEFU83))

Yo he adaptado los parámetros que ya tenía para que se incluyan los registros indicados en el ejemplo. Observad la imagen para ver el resultado.

037 watermark

 

IKJTSOxx

Debemos añadir el módulo EQQMINOM a la lista AUTHTSF tal y como se muestra en la imagen.

037 watermark

 

También tenemos que añadir los comandos BACKUP, BULKDISC, JSUACT, OPINFO, OPSTAT, SRSTAT, WSSTAT a la lista AUTHCMD tal y como se ve en la imagen.

037 watermark

 

SCHEDxx

Añadiremos la siguiente línea a este miembro:

PPT PGMNAME(EQQMAJOR) NOSWAP

037 watermark

 

CREAR DATASET DE TWS

En esta parte vamos a crear todos los dataset (parámetros, current plan, long term plan, logs)  que usará TWS.

Vamos a la librería que creamos al principio que almacena todos los jobs de ejemplo. En mi caso, OPC.S0W1.SAMPJCL.

Empezamos con el job EQQPCS01. Este job crea varios dataset VSAM y NO-VSAM. Debemos revisar el job y ajustar el espacio de esos dataset para que no nos quedemos sin espacio. De forma opcional, si no usamos SMS, podemos añadir “VOL=SER=xxxxxx” para indicar el disco en los ficheros NO-VSAM.

037 watermark

 

Una vez ejecutado, terminará correctamente. En la imagen se pueden ver algunas librerías creadas.

037 watermark

 

Seguiremos con el job EQQPCS02. Este job también crea dataset. Debemos revisar el espacio para ajustarlo a lo que necesitemos. Lo ejecutamos y comprobamos que termine correctamente.

037 watermark

 

Seguiremos con el job EQQPCS03. Este job crea los ficheros necesarios para ejecutar un Trial Plan (una prueba de si el Current Plan extenderá correctamente, por ejemplo).

Antes de ejecutar el job, hay que cambiar %%%%%%%% por lo que queramos, por ejemplo, OPC.TRIAL. Finalmente, lo ejecutamos y comprobamos que termina correctamente.

037 watermark

037 watermark

 

Seguiremos con el job EQQPCS09. Este jobs crea los ficheros necesarios para backup del Current Plan. Lo ejecutamos y terminará correctamente.

037 watermark

 

El job EQQPCS12 creará el GDG base necesario para la función de cambio de MLOG que habilitamos al principio. Lo ejecutamos y terminará correctamente.

037 watermark

 

El job EQQPCS13 creará los GDG base para la función de backup/restore que habilitamos al principio. Lo ejecutamos y terminará correctamente.

037 watermark

 

STARTED TASK Y FICHEROS DE PARÁMETROS.

Volvemos a ir a la librería OPC.S0W1.SAMPJCL y copiamos los miembros EQQCONOP y EQQTRAP a la librería OPC.S0W1.PARM.

037 watermark

 

Ahora entramos en el miembro EQQCONOP y vamos a crear nuevos miembros con las partes correspondientes del JCL. Usaremos el comando de bloque cc – cc, para copiar las partes que queremos, y el comando CREATE.

Vamos a crear el miembro CONOP. Para ello marcamos con "CC" en la línea que se muestra en la imagen.

037 watermark

 

Ahora vamos a la línea que se muestra en la imagen y ponemos "CC" otra vez, para cerrar el bloque que queremos copiar, y en la barra de comandos ponemos "CREATE CONOP".

037 watermark

 

Hacemos lo mismo, pero ahora crearemos el miembro STDAR.

037 watermark

 

Por último, crearemos el miembro CONOB de la misma forma.

037 watermark

 

Si volvemos a entrar a la librería OPC.S0W1.PARM, aparecerán los nuevos miembros. Ahora haremos lo mismo con el miembro EQQTRAP.

037 watermark

037 watermark

 

Haremos lo mismo para crear los miembros STDEWTR y STDJCC.

037 watermark

037 watermark

 

Renombramos el miembro CONOB a BATCHOPT.

037 watermark

 

Renombramos el miembro CONOP a OPCCPARM.

037 watermark

 

Renombramos el miembro TRAP a OPCTPARM.

037 watermark

 

Entramos a editar el miembro OPCCPARM.

Ponemos NFCOPCC en el parámetro NCFAPPL, que será el nombre de nuestra LU del controller.

¡IMPORTANTE! Hay que poner RECOVERY NO, sino se producirá un abend al arrancar el controler más adelante.

037 watermark

 

Seguimos bajando y ponemos NCFOPCT en el parámetro SNA, para que se comunique con el tracker.

037 watermark

 

Guardamos y salimos. Ahora editamos el miembro OPCTPARM. Ponemos NCFOPCT en el parámetro NCFAPPL, que será el nombre de nuestra LU del tracker.

037 watermark

 

Bajamos y ponemos NCFOPCC en el parámetro SNAHOST, para que se comunique con el controller.

037 watermark

 

Ya hemos terminado con la segunda parte. Aquí os dejo el enlace a la tercera parte: TWS/OPC - Implementando Tivoli Workload Scheduler 9.3 - 3/3

 

 

Publish modules to the "offcanvs" position.