• EMUFRAME

    EMUFRAME

    Desde 2015, enseñando sobre el sistema operativo z/OS de IBM en esta web.

    z/OS se utiliza en máquinas llamadas Mainframe y es utilizado por grandes empresas (bancos, aseguradoras, hoteles, etc.).

    Aquí aprenderás a instalar y configurar productos relacionados con z/OS.

     

  • Emulación de Mainframe y z/OS

    Emulación de Mainframe y z/OS

    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.

     

  • z/OS - ADCD

    z/OS - ADCD

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

    Así tenemos un entorno de desarrollo o de aprendizaje, como es mi caso, muy completo.

     

Model9 - Instalación agente en z/OS

Model9 - Instalación agente en z/OS

En la entrada anterior instalé la parte del servidor de Model9 en zCX y ahora instalaré el agente en z/OS para conectar con el servidor. He preferido hacerlo en partes para que no sean artículos demasiado largos.

Seguiré la siguiente documentación:

Installing the Model9 agent

Para instalar el agente, empezamos comprobando la versión de JAVA de z/OS.

cd /usr/lpp/java/J8.0_64/bin

./java -version

001 watermark

También comprobamos que tengamos el procedimiento JVMPRC86 en la PROCLIB. Si no lo tenemos lo copiaremos de “/usr/lpp/java/J8.0_64/mvstools/samples/jcl/JVMPRC86”.

002 watermark

 

Con el siguiente job crearemos el ZFS y el punto de montaje para transferir el software.

003 watermark

 

Ahora subimos el software por FTP.

ftp xxx.xxx.xxx.xxx

bin

cd /usr/lpp/model9/

put model9-v2.3.5_build_eee8cba0-agent.tar

004 watermark

 

Desde OMVS, descomprimimos el fichero.

cd /usr/lpp/model9/

tar -xpf model9-v2.3.5_build_eee8cba0-agent.tar

Definimos el alias “agent”.

ln -s model9-v2.3.5_build_eee8cba0-agent agent

005 watermark

 

Creamos el directorio de configuración y copiamos la configuración de ejemplo:

mkdir conf

cp agent/sampleConf/* conf/

Copiamos el contenido de la carpeta bin:

mkdir bin

cp -p /bin/pax bin

extattr +p bin/pax

006 watermark

 

Ahora creamos el directorio “listener” para poder utilizar el CLI (Command Line Interface):

mkdir listener

chmod 777 listener

chmod +t listener

007 watermark

 

Desde 3.4 de ISPF, vamos al directorio “/usr/lpp/model9/agent/installation/” y copiamos el JCL “CPY#PDS”.

008 watermark

009 watermark

 

Editamos el JCL para adaptar el HLQ y VOLSER y ejecutamos.

010 watermark

 

En el fichero REXX “MODEL9.V235.EXEC(M9CLI)” tenemos que adaptar los parámetros “loaddir” y “fifodir”.

011 watermark

Ahora tenemos que ejecutar el job MODEL9.V235.SAMPLIB(M9USERST) para los permisos de RACF. Hay que actualizar el parámetro “ÑÑYOUR_USER/GROUPÑÑ” para indicar un usuario que se logará a la web. En mi caso será IBMUSER.

Importante comprobar y corregir las librerías. En especial:

RALT PROGRAM * ADDMEM('SYS2.MODEL9.V235.LOADLIB'//NOPADCHK)    

Al ejecutar el job tuve que quitar las siguientes líneas ya que en mi sistema no existían estos recursos:

PE STGADMIN.IGG.DELETE.NOSCRTCH CL(FACILITY) ID(M9USER)     

PE STGADMIN.IGG.LIBRARY CL(FACILITY) ID(M9USER) ACC(READ)   

                                                            

PE STGADMIN.IDC.DCOLLECT CL(FACILITY) ID(M9USER)            

                                                            

PE STGADMIN.ADR.RESTORE.BYPASSACS CL(FACILITY) ID(M9USER)   

PE STGADMIN.ADR.RESTORE.RESET.YES CL(FACILITY) ID(M9USER)   

PE STGADMIN.ADR.RESTORE.TOLERATE.ENQF CL(FACILITY) ID(M9USER)

                                                            

PE STGADMIN.ADR.DUMP.CNCURRNT CL(FACILITY) ID(M9USER)       

PE STGADMIN.ADR.DUMP.PROCESS.SYS CL(FACILITY) ID(M9USER)    

PE STGADMIN.ADR.DUMP.TOLERATE.ENQF CL(FACILITY) ID(M9USER)  

PE STGADMIN.ADR.DUMP.ZCOMPRESS CL(FACILITY) ID(M9USER)      

PE STGADMIN.ADR.DUMP.NEWNAME CL(FACILITY) ID(M9USER)        

PE STGADMIN.ADR.DUMP.RESET CL(FACILITY) ID(M9USER)          

PE BPX.FILEATTR.SHARELIB CL(FACILITY) ID(M9USER) ACC(READ)

PE ICHBLP CL(FACILITY) ID(M9USER) ACC(UPDATE) 

PE ERBSDS.MON2DATA CL(FACILITY) ID(M9USER) ACC(READ) 

PE CSFOWH CL(CSFSERV) ID(M9USER) ACC(READ)         

PE CSFIQF CL(CSFSERV) ID(M9USER) ACC(READ)         

PE CSFPKE CL(CSFSERV) ID(M9USER) ACC(READ)         

PE CSFPKI CL(CSFSERV) ID(M9USER) ACC(READ)         

PE CSFDSV CL(CSFSERV) ID(M9USER) ACC(READ)         

PE CSFDSG CL(CSFSERV) ID(M9USER) ACC(READ)         

PE CSFEDH CL(CSFSERV) ID(M9USER) ACC(READ)         

    

PE FPZ.ACCELERATOR.COMPRESSION CL(FACILITY) ID(M9USER) ACC(READ)  

012 watermark

 

Copiamos el procedimiento “MODEL9.V235.SAMPLIB(M9AGENT)” a la PROCLIB y lo adaptamos.

Debemos añadir esta tarea al arranque del sistema.

013 watermark

 

Ahora tenemos que actualizar los ficheros de configuración.

model9-stdenv.sh

Indicar la ruta de JAVA y la zona horaria.

014 watermark

 

Fichero:

agent.yml

Definimos la conexión con el almacenamiento en la nube. En mi caso, uso Azure.

015 watermark

 

En el fichero model9-licenses.txt indicaremos la licencia.

016 watermark

 

Ahora vamos a configurar el proceso que intercepta las peticiones de recall de forma transparente.

Añadimos los siguientes parámetros al fichero PROGxx correspondiente:

APF ADD DSNAME(SYS2.MODEL9.V235.LOADLIB) VOLUME(PRD001)

LPA ADD DSNAME(SYS2.MODEL9.V235.LOADLIB) MOD(ZM9CPTN)

LPA ADD DSNAME(SYS2.MODEL9.V235.LOADLIB) MOD(ZM9S26X)

EXIT ADD EXITNAME(ZM9P_S026) MOD(ZM9S26X) PARM('M9ARCH')

Aplicamos los cambios con el comando SET PROG correspondiente. En mi caso:

SET PROG=(AB,AM,A0,A2,ZW,SY,LB,LD,LM,L0,A2,LL)

017 watermark

018 watermark

 

Ahora tenemos que copiar los miembros MODEL9.V235.SAMPLIB(M9HOOK) y MODEL9.V235.SAMPLIB(M9UNHOOK) a la PROCLIB y adaptarlos.

Añadiremos el procedimiento M9HOOK al arranque del sistema.

Esto sirve para poder capturar los “auto-recall” (M9HOOK) de ficheros cuando entramos con browse, por ejemplo.

019 watermark

 

Si lo arrancamos (S M9HOOK) veremos que hace el proceso correspondiente.

020 watermark

 

El siguiente paso será coger el JCL MODEL9.V235.SAMPLIB(M9LIFECY) que es el encargado de hacer el mantenimiento diario de los ficheros borrando aquellos ficheros migrados o backups que han expirado. Además, hay que aplicar unos permisos en RACF para el usuario del planificador que estemos usando. Revisad esta parte en el manual.

Este job debería planificarse diariamente.

Arrancaremos la STC del agente M9AGENT.

Si una vez arrancada la tarea, intentamos entrar en la web y aparece el siguiente error:

ICH420I PROGRAM JVMLDMM9 FROM LIBRARY MODEL9.V235.LOADLIB CAUSED THE ENVIRONMENT TO BECOME UNCONTROLLED.

BPXP014I ENVIRONMENT MUST BE CONTROLLED FOR DAEMON (BPX.DAEMON) PROCESSING. 

Es debido a que en el paso de submitir el job de RACF no hemos corregido la librería siguiente:

RALT PROGRAM * ADDMEM('MODEL9.V235.LOADLIB'//NOPADCHK)    

Después refrescar:

SETR WHEN(PROGRAM) REFRESH  

021 watermark

 

Si desde z/OS nos da error de credenciales al conectar con el almacenamiento, pero desde el servidor zCX hemos podido conectar con las mismas credenciales, esto es debido a los caracteres especiales y a la codificación (EBCDIC vs ASCII).

En mi caso, mi secret_id contenía “~”, entonces tuve que editar a mano el fichero de configuración para poner el valor en EBCIDC.

ASCII to EBCDIC

022 watermark

 

Entramos en el fichero y usamos el comando HEX ON.

023 watermark

 

Simplemente es cambiar el valor que aparece en esa posición (BD, en mi caso), por el valor correcto (A1), aunque en el valor que vemos en el texto mostrado sea diferente, lo importante es que tenga el valor hexadecimal correcto.

024 watermark

025 watermark

 

Cuando todo esté bien, la tarea arrancará correctamente. 026 watermark

 

Me hubiera gustado dar más detalles de la configuración, pero, por motivo personales, pude dedicarle poco tiempo al producto. Espero que esto os sirva de ayuda.

 

Publish modules to the "offcanvs" position.