• 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.

SMP/E - Aplicando una exit como USERMOD

Adjuntos:
Descargar este archivo (EMUFR00.txt)EMUFR00[USERMOD para exit IEFACTRT]0.1 kB
Descargar este archivo (IEFACTAA.txt)IEFACTAA[Job para compilar exit IEFACTRT]0.6 kB

Uno de los sistemas que tengo, concretamente el z/OS 2.3, no muestra el nombre de los pasos ejecutados en la salida del job. Cuando se produce alguna situación de este tipo, suele estar relacionada con la exit IEFACTRT. Para resolverlo vamos a volver a compilarla. Podríamos compilarla con un job y meterla una librería LPALIB que tengamos (ver concatenación en el fichero LPALSTXX de la PARMLIB) y funcionaría igual, pero vamos a hacer el proceso correctamente y la instalaremos como usermod a través de SMP/E.

Además, en esta entrada también tocaremos un poco de RACF.

 

Para poder compilar la exit, necesitamos tener el código fuente. Si disponemos del producto Tivoli Workload Scheduler, la exit IEFACTRT viene incluida en la librería SEQQSAMP con el nombre EQQACTR1. En esta entrada, la usaremos.

 

Para esta entrada se han usado las siguientes documentaciones de IBM:

Standard Packaging Rules for z/OS-Based Products

SMP/E for z/OS User Guide

 

Siguiendo esos manuales, he creado la siguiente usermod adaptada a mi sistema:

++USERMOD(EMUFR00)            /* ID de USERMOD. */ .        

++VER(Z038) FMID(HBB77B0)     /* SREL para MVS. zOS BASE */ .

++MOD(IEFACTRT) TXLIB(EXITLIB) /*Modulo IEFACTRT*/ .        

Alguien que tenga más experiencia que yo en estas cosas, será capaz de hacer un código mucho mejor o de otra manera, pero es la primera usermod que hago y el objetivo, simplemente, es que funcione.

 

Voy a explicar un poco los parámetros utilizados:

USERMOD --> Nombre que le daremos.

VER --> Poner el SREL (System Release) correspondiente. En el caso de MVS, es Z038. El listado en el siguiente link:

IBM - GLOBALZONE entry

FMID --> Significa Function Modification Identifier, es decir, a que componente vamos a aplicar la usermod. Esta exit se va a aplicar al sistema base (BCP), por lo tanto, sabemos que será HBB. Para saber concretamente cual es podemos revisarlo en SMPE, pero según el sistema que tengamos, ya sabremos su número.

z/OS 1.13 será HBB7780

z/OS 2.1 será HBB7790

z/OS 2.2 será HBB77A0

z/OS 2.3 será HBB77B0

MOD -->Nombre del módulo.

TXLIB -> Librería dónde está la exit compilada para poder link-editarla. Tenemos que definir esta librería en SMP/E. Lo haremos más adelante.

 

Crearemos un dataset particionado para guardar la exit compilada antes de instalarla en la LPALIB. Yo le he llamado ADCD.EXITLIB para ajustarlo a las nomenclaturas del sistema.

 

Ahora crearemos un dataset secuencial que sea FB y con longitud de registro de 80 para almacenar el código de la usermod.

 

Copiamos el código.

 

Usaremos el siguiente job para compilar el código del fichero TWS930.SEQQSAMP(EQQACTR1). El resultado quedará en el fichero ADCD.EXITLIB(IEFACTRT).

NOTA: Se puede descargar al principio de la entrada. Deberéis adaptarlo a vuestro sistema.

 

Este es el módulo IEFACTRT compilado.

 

Entramos a SMP/E.

Dentro de este apartado haremos varias acciones. Los pasos habituales suelen ser: RECEIVE de la ptf, sysmod, usermod, etc. Después se hace un APPLY que realiza el cambio en las librerías correspondientes.  Por último, se hace un ACCEPT. En este último paso hay que tener mucho cuidado porque una vez hecho el ACCEPT no se puede retirar aquello que hayamos aplicado. Si se han instalado PTFs, hay que asegurarse durante un tiempo prudencial que su funcionamiento es correcto y no genera incidencias que antes no había.

En el caso de USERMODs NO haremos el paso de ACCEPT.

 

Antes de elegir alguna opción, debemos especificar el nombre del dataset que contiene la información (SMPCSI DATA SET). Estos ficheros suelen terminar en “.CSI”.

Podemos buscar en 3.4 los ficheros terminados en “.CSI”, veremos que tenemos unos cuantos. Son ficheros VSAM pertenecen a distintos productos, según la instalación. Por ejemplo, en mi caso, KLS210 es para  CL/SuperSession. NET621, para NetView. Y el que nos interesa, MVS.GLOBAL.CSI, para el sistema base.

En mi sistema, las zonas referentes al sistema base se llaman:

Zona Global -> GOBAL

Zona Target -> MVST

Zona Distribution -> MVSD

 

Ponemos el nombre del fichero y entramos en la opción 4 – Command Generation.

 

El primer paso es la opción 10 – RECEIVE. Esta operación se realiza para la zona GLOBAL.

 

Nuestro fichero, que hemos creado previamente, está en un disco, por lo tanto, entramos en la opción 1.

 

Rellenamos los datos como se ve en la imagen. En este caso, no usaremos HOLDDATA ya que eso se utiliza cuando se realiza mantenimiento y ahora mismo no aporta nada.

 

Cambiamos HOLDDATA a NO. Podemos elegir las SYSMOD a instalar, en este caso, sólo disponemos de una, por lo tanto, podríamos utilizar la opción ALL para hacer el RECEIVE de todas, pero voy a mostrar el caso de seleccionar por si alguna vez fuese necesario instalar algo concreto.

 

Ponemos el FMID que pusimos al crear la USERMOD.

 

Ponemos el nombre que le dimos a la USERMOD.

 

Pulsamos F3 y se creará un JCL automáticamente.

 

Pulsamos F3. Con E podemos editar el job, por si algo no lo ha creado como esperábamos.

NOTA: Recomiendo añadir el parámetro REGION, sino el job fallará.

 

 

Volvemos al panel anterior y ponemos una S para submitir el job.

 

Si no le pusimos el parámetro REGION, dará el siguiente error.

 

Añadimos REGION y relanzamos.

 

En mi caso, me da un error por falta de permisos. Es un usuario un poco incompleto, pero voy a enseñar a arreglarlo, para hacer la entrada más completa.

 

Entramos a RACF y elegimos la opción 2.

 

Entramos en la opción 4 – ACCESS.

 

Rellenamos los datos según vimos en el fallo del job.

 

Opción 1 – ADD para añadir el usuario.

 

Ponemos YES en SPECIFY para indicar el usuario a añadir.

 

Ponemos autorización READ y el ID de usuario, en mi caso, TSTRADM.

Aparecerá un mensaje que los cambios no verán reflejados hasta que no refresquemos la clase.

 

Entramos en 5 – SYSTEM OPTIONS.

Opción 6 – REFRESH.

 

Pondremos YES en la última opción para especificar la clase.

 

La clase es FACILITY y marcamos YES en RACLIST.

 

Aparecerá un mensaje confirmando el refresco.

 

Volvemos a ejecutar el job y terminará correctamente.

 

 

Ya hemos recibido la USERMOD. Antes de hacer el APPLY, que se hace para la zona Target MVST, tenemos que definir la librería EXITLIB que mencionamos en la USERMOD. Para hacerlo entramos en 1 – ADMINISTRATION dentro de SMP/E.

 

Opción 1 – DEFINITION.

 

Ponemos el nombre de la zona. Como se trata de la zona Target, en mi caso es MVST.

 

Pulsamos intro.

 

Como queremos crear una librería, entramos en 2 – DDDEF.

 

Ponemos una “A” para añadir.

 

Le daremos el nombre de EXITLIB.

 

Entramos en 1 – Library para asociar una librería.

 

Le ponemos la librería que creamos anteriormente, “ADCD.EXITLIB”, con disposición SHR.

 

En mi caso voy a editar otra librería, la LPALIB, porque este sistema es “un poco especial” y la librería SYS1.LPALIB no es de las primeras en la concatenación, por lo tanto, quiero usar otra librería donde quede la exit instaladad.

Esto no es necesario hacerlo. Dependerá cómo esté montado vuestro sistema. 

Entramos con S para editar LPALIB.

 

Cambio la librería SYS1.LPALIB por la librería USER.Z23B.LPALIB.

NOTA: Este paso lo hago para ajustarme a mi sistema. En otros sistemas, no será necesario. Mejor no tocarlo si no se conoce el sistema.

 

Como vemos en el fichero de concatenación LPALSTXX, la librería USER.Z23B.LPALIB es la primera de la lista. La SYS1.LPALIB es la cuarta.

 

Ahora vamos a aplicar la USERMOD. Volvemos a la opción 4 – Command Generation de SMP/E y entramos en 11 – APPLY.

 

Seleccionamos la librería de TARGET de z/OS Base, que es MVST.

NOTA: Las otras librerías target que aparecen son de MQ Series.

 

Marcamos a YES la opción USERMODS. Además marcaremos también las opciones SELECT y FORFMID. 

NOTA: Estas dos últimas opciones no es necesario marcarlas en este caso porque solo tenemos una USERMOD, pero prefiero realizar este proceso.

  

Nos pedirá que rellenemos el campo CHECK ya que es requerido. En mi caso, lo pondré a NO.

 

Ponemos el FMID HBB77B0, para z/OS 2.3.

 

Ponemos el nombre de la USERMOD, EMUFR00.

 

Al pulsar F3, nos creará el job.

 

Pulsamos de nuevo F3 y lo submitimos con una S.

 

Terminará correctamente.

 

Si vamos a la librería que pusimos en LPALIB, veremos el módulo IEFACTRT.

 

Podemos comprobar que la usermod está instalada. Para ello entramos en la opción 3 – QUERY.

 

Opción 1 – CSI QUERY.

 

El nombre de la zona Target MVST.

 

Buscamos el tipo SYSMOD.

 

Encontraremos la USERMOD (SYSMOD) EMUFR00.

Ahora haremos IPL para comprobar que la EXIT carga y ejecutaremos un job de prueba.

Comprobamos que ya podemos ver el nombre de los pasos, quedando solucionado el error que se producía.

 

Tenía preparado también cómo retirar (REJECT y RESTORE) la USERMOD, pero la entrada quedaba muy larga. Lo pondré en una entrada nueva. Seguro que también os gustará.

 

 

 

Publish modules to the "offcanvs" position.