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

Implementando Debug Tool

En esta ocasión, por petición de un usuario del blog, vamos a implementar la herramienta Debug Tool 11.1. Esta herramienta sirve para testear programas y corregirlos. Tiene tres formas de uso: modo batch, modo full-screen o modo remoto. En esta entrada vamos a enseñar cómo implementar y cómo acceder al modo full-screen.

Vamos a seguir la guía de la web de IBM de la versión 12.1, aunque no es la documentación de  la misma versión, los pasos son similares.

Debug Tool 12.1 - Customization Guide

 

Las librerías de la herramienta con las que trabajaremos son las siguientes:

 

Aunque algunos de los pasos ya están implementados en las versiones ADCD, puede haber errores, por lo tanto, vamos a hacerlos todos para confirmarlo.

 

1 - REGISTRO DEL PRODUCTO

Este paso consiste en añadir la información del producto, que se puede encontrar en el documento Program Directory for IBM Debug Tool for z/OS de la web de IBM o en la librería de ejemplos de la herramienta, como veremos más adelante. Está información hay que añadirla en el miembro IFAPRDXX de la PARMLIB.

Lo primero que vamos a hacer es comprobar que miembro IFAPRDXX estamos utilizando. Para ello buscamos el miembro IEASYSXX que estamos utilizando. En mi caso, estoy usando el load parm “AW”, por lo tanto, en este caso, es el miembro IEASYSAW.

En la siguiente imagen se ve que estamos usando los ficheros IFAPRD00 e IFAPRD01.

 

Ahora vamos a la librería EQAXXX.SEQASAMP, siendo XXX el número de versión, por ejemplo EQA111.SEQASAMP, y entramos en el miembro EQAWIFA.

 

NOTA: Según la versión, puede que se llame EQAWIFAM.

 

Copiamos la información que contiene y la pegaremos en el miembro IFAPRDXX de la PARMLIB que esté en uso. En mi caso, se usan los miembros IFAPRD00 e IFAPRD01, por lo tanto, se puede elegir cualquiera de los dos.

NOTA: Debemos comprobar que la información no está repetida en ninguno de los dos ficheros IFAPRDXX. Si está repetida y es distinta, borrar la que hubiese y poner la nueva.

 

Ahora vamos a cargar la información de los productos actualizada sin hacer IPL. Para ello vamos a SDSF y ponemos el comando SET PROD=XX. En mi caso, usaré el comando SET PROD=(00,01) porque, como hemos visto en el miembro IEASYSAW, estamos usando dos miembros IFAPRDXX.

 

Comprobamos que se han actualizado los cambios.

 

2 – INSTALAR PROGRAMAS SVC DE DEBUG TOOL.

Para realizar este paso, tenemos que añadir la librería EQAXXX.SEQALPA, que es una librería de módulos, a la concatenación de librerías LPALIB, por lo tanto, debemos modificar el miembro LPALSTXX de la PARMLIB que estemos utilizando.

Para saber el miembro LPALSTXX en uso, lo miraremos en el miembro IEASYSXX, como hicimos en el paso anterior. En mi caso, se trata del fichero LPALST42.

 

Lo editamos y añadimos la librería EQAXXX.SEQALPA.

NOTA: Si queremos podemos añadir el disco en el que se encuentre, en mi caso, ZDRES1.

 

3 – APF-AUTHORIZED Y LNKLST.

En el fichero IEASYSXX, buscaremos el miembro PROGXX que estamos utilizando. En mi caso, es el PROGAL. Deberemos añadir las siguientes librerías, y el volumen en el que están, como APF-Authorized.

EQAXXX.SEQAMOD, en mi caso, EQA111.SEQAMOD

EQAXXX.SEQABMOD, en mi caso, EQA111.SEQABMOD

EQAXXX.SEQAAUTH, en mi caso, EQA111.SEQAAUTH

 

Ahora, en el mismo fichero, añadiremos las siguientes librerías y el volumen a la concatenación LNKLST.

EQAXXX.SEQABMOD, en mi caso será EQA111.SEQABMOD

EQAXXX.SEQAMOD, en mi caso será EQA111.SEQAMOD

 

4 – AÑADIR SOPORTE PARA CICS.

Para permitir depurar programas CICS con Debug Tool, debemos añadir la librería EQAXXX. SEQAMOD a la DD “DFHRPL” de la tarea que arranca el CICS. Está tarea se encuentra en la PROCLIB correspondiente, en mi caso, ADCD.Z113.PROCLIB.

 

NOTA: Para saber cómo se llama la tarea del CICS, buscarla en la opción DA de SDSF.

 

5 – HABILITANDO DEPURACIÓN EN MODO FULL-SCREEN.

Para poder acceder al modo full-screen, debemos definir las sesiones VTAM que harán las conexiones. Para ello, habrá que copiar unos miembros dentro de una librería que pertenezca a la concatenación VTAMLST. Para saberlo, buscamos la tarea VTAM en la PROCLIB correspondiente.

 

Ahora vamos a la librería EQAXXX.SEQASAMP y copiamos los miembros EQAWAPPL y EQAWSESS en una librería de la concatenación de VTAMLST. Yo los copiaré en la librería ADCD.Z113.VTAMLST.

 

Para que, cuando arranque el sistema, las definiciones que acabamos de copiar se activen, vamos a incluirlas en el miembro ATCCONXX que tengamos en uso. En mi caso, es el ADCD.Z113.VTAMLST(ATCCON00).

Para añadirlo, simplemente editamos el fichero y ponemos el nombre de los miembros al final, como se ve en la imagen.

 

Ahora entramos en el miembro EQAWSESS y nos apuntamos el nombre del ACBNAME, en mi caso, EQASESSM, porque lo necesitaremos después para acceder al modo full-screen.

 

6 – COPIAR Y MODIFICAR LA STC EN LA PROCLIB

Para que podamos conectarnos al modo full-screen usando “Terminal Interface Manager”, debemos copiar la tarea EQAYSESM de la librería EQAXXX.SEQASAMP a la PROCLIB correspondiente del sistema, en mi caso, ADCD.Z113.PROCLIB.

 

Ahora editamos el archivo que acabamos de copiar y ponemos la librería EQAXXX.SEQAAUTH correspondiente.

 

También vamos a editar el miembro COMMNDXX para añadir el arranque automático de esta tarea, como indica el comentario que podemos ver en la imagen anterior.

Para saber el miembro COMMANDXX que estamos usando, miramos de nuevo en el fichero IEASYS. En mi caso, uso el COMMNDAW. Lo añadiremos ahí para que arranque cuando utilicemos este loadparm.

 

Añadimos la línea siguiente al final:

COM='S EQAYSESM'

 

NOTA: Hay que añadir el comando de parada en el procedimiento de parada que tengamos: P EQAYSESM

 

7 – AÑADIR ACCESO A DEBUG TOOL AL MENÚ

Ahora vamos a añadir una opción para acceder al menú ISPF de Debug Tool. Para saber que panel debemos editar, haremos lo siguiente. Pondremos “panelid” para saber el nombre del panel.

 

Con el comando “member” buscamos en qué librería se encuentra ese panel. Vemos que en varias.

 

Viendo la concatenación de la DD ISPPLIB del procedimiento de logon que usemos, sabremos qué librería modificar. En mi caso, uso el DBSPROCA, aunque el que viene por defecto suele ser ISPFPROC. Para saber cuál se está usando, hay que mirar la pantalla de logon, donde se pone la contraseña. Yo voy a modificar el miembro ADCD.Z113.DBA.ISPPLIB(IBMPRODS) porque está antes en la concatenación. 

 

Añadimos una línea después de la última opción para poner el nombre que queremos que se vea en el panel, por ejemplo:

D  Debug Tool  Debug Tool Utility functions  

 

Seguimos bajando y añadimos el comando que se ejecutará cuando utilicemos la opción “D”.

D,'CMD(EXEC ''EQA111.SEQAEXEC(EQASTART)'')' 

 

NOTA: Hay que poner la librería EQAXXX correspondiente.

 

Ahora tenemos que adaptar el REXX que se ejecutará cuando queramos acceder desde el panel. El único cambio que hay que hacer es poner en la opción “Inst_ShpHQL” el primer cualquificador de los datasets, es decir, EQAXXX, como por ejemplo, EQA111. Salvamos y salimos.

 

En este punto, ya debería estar todo implementado. Sólo faltaría hacer IPL y realizar las comprobaciones.

Este procedimiento se podría haber hecho sin tener que hacer IPL, añadiendo por comando las librerías APF, LNKLST, etc. pero así comprobamos que todo arranca perfectamente y no nos hemos dejado nada.

 

8 – COMPROBACIONES 

Una vez haya terminado de cargar el sistema, comenzaremos con las comprobaciones.

Primero abrimos dos terminales, en uno accedemos a TSO y en el otro ponemos lo siguiente:

“L EQASESSM” (es el ACBNAME que habíamos apuntado del fichero ADCD.Z113.VTAMLST(EQAWSESS))

 

Aparecerá una ventana donde pondremos el mismo usuario que en TSO y la contraseña.

 

Saldrá una pantalla con el mensaje “Ready for Debug Tool”. Lo dejamos ahí y vamos al terminal que tenemos TSO.

 

En TSO, vamos a la librería EQAXXX.SEQASAMP y copiamos el miembro EQAWIVP5 a una librería nuestra. Ese es un job de IVP (Installation Verification Procedure) y sirve para comprobar que todo funciona.

 

Editamos el miembro que acabamos de copiar y en las variables, ponemos las librerías correspondientes.

LNGPRFX. Es la librería de Cobol. Buscar IGY* en 3.4.

DTPRFX. Es la librería de Debug Tools, la que estamos usando durante el tutorial.

UNITDEV. Poner 3390.

 

Seguimos bajando en el JCL hasta llegar a la línea “PARM=…”. Ahí pondremos el usuario con el que nos hemos logado en el otro terminal, tal y como se ve en la imagen. En este caso, “VTAM%IBMUSER”. También podemos usar el parámetro MFI y el terminal, como se muestra en la línea siguiente, que está comentada.

Por último, salvamos y submitimos.

 

Una vez submitido, iremos al otro terminal que teníamos abierto y veremos que ya podremos proceder a depurar el código. Hasta que no salgamos con F3 y volvamos a la pantalla que indica “Ready for Debug Tool”, el job, que hemos submitido, seguirá en ejecución.

 

NOTA: Si ponemos el comando “set automonitor on”, saldrán los valores de las variables y podremos ir viendo cómo cambian cuando vamos pulsando F2.

 

La última comprobación que haremos es si podemos acceder a los paneles ISPF de Debug Tool.

Vamos al panel que modificamos anteriormente y entramos en la opción D.

 

Si todo ha ido bien, aparecerá el siguiente panel.

 

Si entramos en la opción 1 – Program Preparation y pulsamos F8, veremos la opción “Manage System and User Settings”. Entramos en esa opción.

 

Aquí podremos ver las opciones de los distintos compiladores, librerías que usan, etc. Podremos editarlo, pero los cambios solo servirán mientras no salgamos del menú principal.

Entramos en la opción 1 para ver las librerías del compilador Cobol.

 

Si las librerías que aparecen no son las correctas, para modificarlas debemos hacer lo siguiente:

 

Editamos el miembro EQAXXX.SEQATLIB(EQAZDFLT) para ajustarlo a las librerías de las que disponemos. Por ejemplo, en el sistema que uso, la librería Cobol empieza por IGY420.

Lo modificamos en el miembro, salvamos y salimos.

 

Al entrar de nuevo al menú de Debug Tool y volver a la opción anterior, ya veremos reflejados los cambios para todos los usuarios. Simplemente habría que ir adaptando el resto de parámetros a nuestro sistema.

 

Después de estas comprobaciones, podemos decir que la implementación se ha hecho de la forma adecuada, al menos en su mayor parte. Quizá quede algún detalle que se me haya escapado o que desconozca, pero para eso existe el manual oficial de IBM, ya que este tutorial sólo pretende ilustrar los pasos básicos a seguir según ese manual.

La verdad es que no conocía esta aplicación, nunca la he usado ni tampoco la había visto. Como me lo han pedido, he aprendido a implementarla y utilizarla, un poco, sobre la marcha porque lo he hecho todo en un día. Espero que los pasos hayan quedado claros y sean de ayuda.

Dejo un enlace a la guía de usuario de la versión 12.1, que quizá pueda servir para versiones anteriores:

Debug Tool 12.1 - User Guide

 

A lo mejor, en el futuro, hago una pequeña guía para configurar/usar la aplicación ISPF de Debug Tool, pero, como no lo conozco mucho, antes me gustaría dedicar tiempo a implementar el HSM y alguna cosa más que también quiero aprender.

 

Publish modules to the "offcanvs" position.