Obteniendo estadísticas procesos de spool por REXX

Escrito por Javier
Adjuntos:
Descargar este archivo (SPLPPRIN.TXT)Primer panel[Panel principal del programa]1 kB
Descargar este archivo (SPLPTABL.TXT)Segundo panel[Segundo panel del programa]1 kB
Descargar este archivo (SPLSTATS.TXT)Programa principal[Programa Rexx]7 kB

En esta ocasión vamos a mejorar el programa que escribimos en “Obteniendo datos de ejecución de jobs del spool por REXX”. La mejora consiste en añadir dos paneles de ISPF para poder elegir los datos que queremos obtener. El panel principal permitirá elegir las opciones de filtrado: nombre del job, tipo, estado y el rango de fecha y hora de los datos. El resultado se mostrará en una tabla en el segundo panel. Además, el resultado se guardará en un dataset.

Obteniendo datos de ejecución de jobs del spool por REXX

Escrito por Javier
Adjuntos:
Descargar este archivo (datosspl.txt)Datos Spool[Rexx datos spool]3 kB
Descargar este archivo (datosspl_v22.txt)Datos Spool NUEVA VERSIÓN[Incluye campos fecha y hora de entrada a spool, MAX-RC. Se añade OWNER * y PREFIX **]3 kB

NOTA: Se añade versión nueva del código para añadir los campos, fecha y hora de entrada al spool y MAX-RC.

Esta ocasión vamos a sacar datos de los jobs que se encuentren en el spool usando REXX. Los datos que sacaremos serán la fecha de inicio y fin de los jobs, no incluye STCs, que hayan terminado de ejecutarse.

El código, con comentarios, es el siguiente:

Cambiando de PROCLIB estática a dinámica

Escrito por Javier

En esta entrada vamos a definir las librerías PROCLIB de forma dinámica. Imaginemos que tenemos las librerías definidas de forma estática. Si alguien renombra una de las librerías por error o se escribe mal el nombre de alguna, el JES2 no arrancará y la resolución puede demorarse mucho.

Con las librerías definidas de forma dinámica, el JES2 si arrancará aunque no encuentre alguna PROCLIB. Si tenemos acceso a TSO, podremos corregir el problema y volver a arrancar.

Si no tenemos acceso a TSO, como el JES2 debería haber arrancado, añadiremos las PROCLIB que falten mediante comando, arrancaremos manualmente las tareas necesarias para acceder a TSO y corregiremos el error. Después podremos hacer una nueva parada/arranque para comprobar que todo queda correctamente.

Además podremos hacer modificaciones sin necesidad de hacer un IPL del sistema para que los cambios surjan efecto.

Buscando operaciones dentro de una aplicación de TWS (OPC)

Escrito por Javier

Cuando intentamos buscar con “FIND” una operación concreta dentro de una aplicación de OPC, nos mostrará un mensaje indicando que no es un comando válido y tenemos que ir buscando uno por uno hasta encontrar la operación deseada. Si esa aplicación tiene 100 o más operaciones, pierdes mucho tiempo. Cuando estamos buscando una aplicación en la opción 5.2 de OPC si podremos buscar una concreta usando "LOCATE nombre_aplicacion" (o "LOC nombre_aplicación"), pero no servirá para buscar operaciones.

Aviso telefónico automático por job fallado en TWS (OPC) - Parte 2

Escrito por Javier

En la primera parte estuvimos instalando el sistema AsteriskNow y creando un nuevo usuario para ejecutar los scripts. En esta segunda y última parte, añadiremos los scripts que harán la llamada automática y haremos una prueba desde z/OS para confirma que funciona.

Vamos a empezar a configurar Asterisk. Ponemos la IP que apuntamos al principio (en mi caso, 192.168.1.21) en un navegador y entramos en la web de FreePBX.

Aviso telefónico automático por job fallado en TWS (OPC) - Parte 1

Escrito por Javier

Esta vez voy a crear un aviso telefónico automático cuando falle un job de OPC, es decir, recibiremos una llamada de teléfono que se realizará de forma automática y nos informará del job que ha terminado en error. A lo mejor no es una idea que se pueda utilizar en un entorno de Producción, pero me apetecía probarla.

Aquí pongo un vídeo del resultado.

Conexiones SSH en z/OS

Escrito por Javier

En esta ocasión vamos a realizar la configuración del servidor/cliente SSH (Secure SHell) que tiene z/OS para poder conectarnos desde otras máquinas a Mainframe y viceversa. El objetivo de esto es poder iniciar scripts en otras máquinas (Linux, Windows, etc.) usando un JCL o poder lanzar un JCL mediante la ejecución de un script en otro servidor.

El servicio SSH (OpenSSH) se ejecuta en la parte Unix que tiene z/OS y es una de las herramientas que se incluyen en “IBM Ported Tools for z/OS”. Además, después de configurar este servicio, también podremos usar el servicio SFTP para transmitir ficheros de una forma más segura que con el FTP normal.

Cíclicos, dependencias condicionadas y OPC Control Language (OCL)

Escrito por Javier

En esta entrada vamos a combinar varias cosas: una aplicación que sea cíclica con dos jobs que se ejecutará cada 10 minutos. Además el segundo job de esta aplicación, sólo se ejecutará si uno de los pasos del job anterior ha terminado con RC=04 y su estado es “completo”. Este segundo job añadirá una nueva aplicación al Current Plan usando OCL (OPC Control Language).

Comprobando variables OPC en JCL sin submitirlo y sin modificar paneles

Escrito por Javier

En OPC (TWS), para poder comprobar si las variables de OPC de un JCL son correctas, hay que submitirlo con algún error de sintaxis (para no ejecutar algo de forma indebida) y comprobar si falla por OJCV. En esta ocasión vamos a añadir una nueva opción a OPC que consiste en poder comprobar si las variables de OPC de un JCL son correctas sin tener que submitir ese JCL.

Esta nueva opción va a tener dos versiones, la primera que consiste en dar un comando para ejecutar un REXX y la segunda que consiste en ejecutar otro REXX, pero mediante una opción nueva en un panel. La segunda versión la veremos en otra entrada. 

STC para mover salidas del Spool a dataset mediante REXX

Escrito por Javier

Esta vez vamos a crear una tarea (STC) que se encargue de pasar salidas de spool a un dataset y, si se han copiado correctamente, las purgue. Esto lo haremos mediante un REXX que se estará ejecutando en bucle infinito y revisará todos los jobs del spool. Los copiará en diferentes miembros y purgará las salidas elegidas. Después, hará una pausa de 30 segundos antes de empezar de nuevo. Es importante decir que la tarea no consume máquina durante la pausa. Este REXX también crea un nuevo dataset, si detecta que el anterior se ha llenado. Cuando hay dos salidas con el mismo nombre, se sustituye las últimas letras del nombre por números. Pararemos la ejecución del bucle infinito borrando un fichero de control mediante otra tarea.

Configurando servidor para envío de emails (SMTP)

Escrito por Javier

Esta vez vamos a configurar la tarea SMTP de z/OS para poder enviar emails, por ejemplo, por JCL. Antes de llevar a cabo esta configuración, es necesario tener bien configurado el TCPIP (Configurando TCPIP en zOS). Si tenemos esa parte hecha, podemos empezar a configurar la tarea SMTP.

Empezamos buscando la librería TCPIP.SEZAINST.

Modificando el panel de errores (5.4) - Hora y ver salidas del Spool (OPC)

Escrito por Javier

En esta entrada vamos a añadir dos nuevas funciones al panel de errores de OPC (5.4). La primera consiste en añadir la hora del sistema. Nos puede venir bien para saber si el panel se ha quedado “pillado” cuando trabajamos monitorizando procesos en error. También vamos a añadir una nueva opción al panel para ver la salida de un job fallado sin tener que ir a buscarlo al spool.

Arreglando el OMVS

Escrito por Javier

Al cambiar el nombre del sysplex o el nombre del sistema, es posible que se produzca un error al intentar acceder a OMVS. Esto es debido a que el sistema intenta buscar los FILESYSTEM para montar la parte UNIX, pero estos no existen y tenemos que usar los que vienen por defecto en el ADCD.

Conectando dos zOS por XCF (Sysplex) - Tercera Parte - Final

Escrito por Javier

Terminamos la entrada anterior haciendo una copia del sistema que hemos estado modificando desde que empezamos a configurar el Sysplex. Ahora vamos a arrancar el segundo sistema, el que será ZOS2. Para este arranque podemos usar el LOADPARM “CS”, porque vamos a configurarlo, pero cuando vaya a formar parte del anillo, este sistema lo tendremos que arrancar con un parámetro con arranque WARM, por lo tanto, tenemos que usar uno distinto de CS. Yo voy a elegir arrancar con el parámetro DB, que arranca con WARM y además arranca DB2 y CICS.