En esta tercera parte, vamos a empezar copiando el miembro EQQCONO de la librería OPC.OP1C.SAMPJCL a la librería PROCLIB del sistema, en este caso, ADCD.Z113.PROCLIB.
Ahora entramos a la librería ADCD.Z113.PROCLIB.
Renombramos el miembro EQQCONO a OP1C. Este será el nombre de nuestra tarea del controller de OPC.
Ahora entramos para editar el miembro OP1C.
Ponemos OP1C como nombre de la tarea y TEAM1CTL como parámetro (tiene que tener el mismo nombre que le hayamos dado al miembro CONOP de la librería OPC.OP1C.EQQPARM)
Lo siguiente es revisar que todas las librerías que aparecen. tienen el nombre correcto.
La única, que habría que cambiar, sería la siguiente:
//EQQPRLIB DD DISP=SHR,DSN=OPC.OP1C.PRLIB
Ahora, volvemos a la librería OPC.OP1C.SAMPJCL y copiamos el miembro EQQTRA a la librería PROCLIB del sistema (ADCD.Z113.PROCLIB).
Vamos a la librería ADCD.Z113.PROCLIB y renombramos el miembro EQQTRA poniendo OP1T. Este será el nombre de nuestra tarea del tracker de OPC.
Entramos a editar el miembro OP1T.
Cambiamos el nombre de la tarea a OP1T y el parámetro PARM=’TRAP’ por PARM=’TEAM1TRK’. Se tiene que llamar igual que el miembro TRAP de OPC.OP1C.EQQPARM.
Hay que modificar la librería de la DD SYSDUMP ya que esa librería la usa el controller y no la pueden compartir. Si no lo modificamos, una de las dos tareas quedará esperando por datasets cuando las arranquemos.
//SYSMDUMP DD DISP=MOD,DSN=OPC.OP1T.SYSDUMP
Salvamos y vamos a crear la librería OPC.OP1T.SYSDUMP ya que no existe.
Copiamos la librería OPC.OP1C.SYSDUMP y le ponemos el nombre OPC.OP1T.SYSDUMP, para que la use el tracker.
NOTA: También se puede crear una librería distinta para la DD EQQDUMP, por ejemplo, OPC.OP1T.EQQDUMP.
Ahora modificamos el miembro BATCHOPT de la librería OPC.OP1C.EQQPARM, para indicar el nombre del controller que hemos puesto. En este caso, ponemos OP1C en el parámetro SUBSYS. También comentamos el parámetro TPLGYPRM, porque no es necesario.
Vamos a empezar a compilar las EXITs de que usará el OPC. Las EXITs sirven para controlar los eventos que se producen, por ejemplo, poner un job como completado cuando ha terminado su ejecución y ha finalizado correctamente.
Para ello vamos a la opción 3.2 de ISPF y creamos la librería OPC.OP1C.OBJ.
NOTA: La librería la creo en el volumen PROD01, como he hecho con las anteriores librerías, aunque no es obligatorio.
Una vez creada la librería, vamos a empezar a compilar las EXTIs:
EXIT7
Para compilar esta la exit "EXIT7" vamos a la librería OPC.OP1C.SAMPJCL y editamos el miembro EQQJES2. Confirmamos que los datos aparecen como en la imagen y submitimos.
La librería de la DD SYSLMOD es la librería donde se guardará el módulo ya compilado, en este caso usamos la librería ADCD.Z113.LPALIB, pero puede ser cualquier librería que esté definida en el miembro LPALST* de la librería ADCD.Z113.PARMLIB. Una vez modificado, submitimos.
NOTA: Hay que tener en cuenta que si tenemos dos módulos con el mismo nombre en dos librerías LPALIB se usará el de la librería que este primero en el miembro LPALST* de la librería ADCD.Z113.PARMLIB.
EXIT51
Para compilar esta EXIT, vamos a la librería OPC.OP1C.SAMPJCL y editamos el miembro EQQJES21.
Como hemos hecho en el caso anterior, modificamos la DD SYSLDMOD y ponemos la librería donde hayamos guardado el módulo anterior, en este caso, ADCD.Z113.LPALIB. Una vez hecho, submitimos.
Copiamos el miembro EQQJES2 a la misma librería, pero con nombre SMFEXITS para compilar las EXITs de SMF (IEFACTRT, IEFUJI e IEFU83).
Ahora lo editamos.
IEFUJI
Para la exit IEFUJI, editamos el miembro SMFEXITS con los siguientes datos y submitimos. También se guardará en la librería ADCD.Z113.LPALIB.
IEFU83
Igual que el caso anterior, editamos el JCL SMFEXITS con los datos de la imagen y submitimos. Si hemos puesto todo bien, terminará correctamente.
IEFACTRT
Como en los casos anteriores, editamos el JCL SMFEXITS con los datos de la imagen y submitimos.
Por último en esta entrada, vamos a la librería ADCD.Z113.LPALIB para confirmar que se encuentran las EXITs que hemos compilado.
En la siguiente tabla vemos el tipo de evento que admite cada EXIT. La tabla se puede encontrar en esta web de IBM.
Nombre de salida | Tipo de salida | Salida de ejemplo | JCL de ejemplo / usermod | Suceso admitido | Tipo de suceso |
---|---|---|---|---|---|
IEFACTRT | SMF | EQQACTR1 | EQQSMF | Finalización de trabajo y paso | 3J,3S |
IEFUJI | SMF | EQQUJI1 | EQQSMF | Inicio de trabajo | 2 |
IEFU83 | SMF | EQQU831 | EQQSMF | Fin del grupo de impresión, depurar (sólo JES3), soporte de desencadenamiento de conjunto de datos y soporte de cambio automático | 4,5,S,T |
EXIT7 | JES2 | EQQXIT74 | EQQJES2/ EQQJES2U | Salida de E/S de JCT para JES2, depurar | 1,3P,5 |
EXIT51 | JES2 | EQQXIT51 | EQQJES21/ EQQJES2V | Salida de cambio de fase JES2 QMOD, z/OS 1.7 y posterior | 1 |