Aplicación de PTFs en HOST
El presente documento explica como realizar un mantenimiento aplicando parches a un programa concreto. En este documento, trataremos de poner un ejemplo real de aplicación de parches al TSM.
Obtención de la PTF
Si vemos que un programa necesita una PTF concreta nos la descargaremos de la web de IBM, desde el Service Agent. (en nuestro caso, el TSM tiene la PTF UK29650, que soluciona los APARs (Authorized Program Analisys Report) siguientes: PK45022 PK45846 PK46450 PK47066 PK47105 PK47249 PK48211 PK48634 PK48873 PK49063 PK49871 PK49873 PK50061 PK50343 PK50365 PK50373 PK50709).
Una vez descargada, tendremos el fichero en formato Terse, que viene a ser una especie de tar pero para host. Por tanto, con el Personal Communications nos subiremos ese fichero (ocupa unos 12 MB) a un dataset secuencial que tiene un formato FB de longitud de registro 1024 y un blocksize de 10240, (estos datos nos los dan cuando te descargas la PTF) que se llama YGGDRASL.PTF.TEMP0000
UNTERSE de la PTF en el HOST
Con ese PTF recibido en el dataset secuencial YGGDRASL.PTF.TEMP0000, lanzaremos un job como el siguiente que nos hará el Unterse y nos dejará el resultado en YGGDRASL.PTF.BULK0000:
//UNTERSE JOB CLASS=A,MSGCLASS=X //S1 EXEC PGM=AMATERSE,PARM=UNPACK //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=YGGDRASL.PTF.TEMP0000 //SYSUT2 DD DSN=YGGDRASL.PTF.BULK0000,DISP=(OLD,KEEP,KEEP)
RECEIVE de la PTF en el HOST
Una vez hecho el UNTERSE, tenemos en YGGDRASL.PTF.BULK0000 la PTF “descomprimida”, así que lo siguiente que haremos será ejecutar otro JCL que la reciba, según el producto (en nuestro caso, el Tivoli Storage Manager, Versión 5.3):
//RECTSM52 JOB CLASS=A,MSGCLASS=X,REGION=8192K //SMPEDPS EXEC PGM=GIMSMP, // PARM='PROCESS=WAIT',DYNAMNBR=120 //SMPCSI DD DSN=TSM53.GLOBAL.CSI,DISP=SHR //SMPCNTL DD * SET BOUNDARY(GLOBAL). RECEIVE . /* //SMPHOLD DD DUMMY //SMPPTFIN DD DISP=SHR, // DSN=YGGDRASL.PTF.BULK0000
Este JCL lo que hace es utilizando la zona SMP del TSM, llamada TSM53.GLOBAL.CSI, recibir el contenido del dataset secuencial YGGDRASL.PTF.BULK0000, con lo que mirará si esa PTF esta aplicada ya. Eso el SMP lo hace consultando los datasets de TARGET y DLIBs y si lo encuentra, entonces no lo instala.
Si no los encuentra, como es el caso, esa PTF la deja “recibida” dentro de un dataset llamado TSM53.SMPPTS, que controla la GLOBAL de este SMP, lista para ser aplicada.
APPLY-CHECK de la PTF
Antes de aplicar definitivamente la PTF, lanzaremos el job que aplica la PTF de manera virtual, para ver si hay algún prerrequisito que no se cumpla, o que exista algún problema de ficheros, con el fin de no liarla cuando la queramos instalar. El job es el siguiente:
//APPTSM53 JOB CLASS=A,MSGCLASS=X,REGION=0M
//SMPEDPS EXEC PGM=GIMSMP,
// PARM='PROCESS=WAIT',DYNAMNBR=120
//SMPCSI DD DSN=TSM53.GLOBAL.CSI,DISP=SHR
//SMPCNTL DD *
SET BOUNDARY(TSMTZN).
APPLY
BYPASS (
HOLDSYSTEM
(
EC
DOC
DEP
ACTION
DELETE
UCLIN
)
)
SELECT (
UK29650
)
CHECK
GROUPEXTEND
JCLINREPORT
RETRY(YES)
APPLY de la PTF
Si vemos la salida del job y comprobamos que no existe ninguna dependencia no resuelta y que el resultado del job es un Cond. Code de 0 o de 4 (si da 4, dará alguna advertencia, asi que habrá que mirar si seguimos adelante o no), estamos en condiciones de submitir el mismo job, pero quitando el CHECK. Eso hará permanentes los cambios y actualizará la zona TARGET.
ACCEPT-CHECK de la PTF
Antes de aceptar definitivamente la PTF, lanzaremos el job que, al igual que con el APPLY, acepta la PTF de manera virtual, para ver si hay algún prerrequisito que no se cumpla, o que exista algún problema de ficheros, aunque no debería. El job es el siguiente:
//ACCTSM53 JOB CLASS=A,MSGCLASS=X,REGION=0M
//SMPEDPS EXEC PGM=GIMSMP,
// PARM='PROCESS=WAIT',DYNAMNBR=120
//SMPCSI DD DSN=TSM53.GLOBAL.CSI,DISP=SHR
//SMPCNTL DD *
SET BOUNDARY(TSMTZN)
ACCEPT
BYPASS (
HOLDSYSTEM
(
EC
DOC
DEP
ACTION
DELETE
UCLIN
)
)
SELECT (
UK29650
)
CHECK
GROUPEXTEND
JCLINREPORT
RETRY(YES)
ACCEPT de la PTF
Si vemos la salida del job y comprobamos que no existe ninguna dependencia no resuelta y al igual que antes, el resultado del job es un Cond. Code de 0 o de 4, estamos en condiciones de submitir el mismo job, pero quitando el CHECK. Eso hará permanentes los cambios y actualizará la DLIB correspondiente.




