Algunas utilities muy socorridas en el mundo mainframe

Autor: Kujaku | El miércoles 14 de febrero del 2007 @ 00:50.

El pasado artículo hice referencia a una utilidad concreta llamada IEBGENER que copiaba datasets secuenciales. Pero desde luego, no es la única utility ni mucho menos. El presente artículo explicará a nivel general algunas utilidades adicionales que nos pueden servir para el trabajo diario con el mainframe.

IEFBR14

El nombre de esta utility viene del Mnemonico Branch Register 14, es decir, que salte al registro 14, (BR 14), y en ese registro 14 del procesador está la dirección de retorno del Master Scheduler, es decir, que la ejecución del IEFBR14 hace que devuelva el control al planificador del sistema.

Lo que traducido a algo práctico y entendible por todos, es como si ejecutáramos el programa para a continuación salir de él. Por consiguiente, el programa IEFBR14 no hace nada. Pero lo que es NA-DA. Nothing Niente. Rien. Nichts. Entonces, ¿para qué coño sirve?.

Pues al contrario de lo que muchos puedan pensar, un programa que no hace nada, en entorno mainframe, siempre sirve para algo: Si queremos trabajar con un dataset, ya sea creándolo, o borrándolo, y no disponemos de acceso al TSO para usar el ISPF (herramienta basada en menús), y lo único que podemos hacer es submitir jobs, el IEFBR14 nos viene al pelo para poder hacerlo.

La explicación de todo esto es sencilla: En otro artículo comenté que un job debe por lo menos tener un paso o STEP que llame a un programa, si no, el job no tiene sentido como tal. Y si hay un paso, es obligatorio tener una DD o Data Definition para los datos, ¿no?.

Pero claro, si yo tengo que meter por narices un programa o utility, no voy a meter algo que hace más de lo que necesito, ¿verdad?.

Pues aquí entra en juego el IEFBR14. Como esta utility no hace absolutamente NADA (¿lo había dicho ya? :-D ), ni tiene ningún parámetro de entrada ni de salida, podemos aprovechar para crear un dataset o borrarlo. El siguiente job de ejemplo, nos sirve para borrar el dataset YGGDRASL.GODDESS.PEORTH:

//BORRAJOB JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1)
//PASO001 EXEC PGM=IEFBR14                       
//BORRADD   DD DSN=YGGDRASL.GODDESS.PEORTH,
//             DISP=(MOD,DELETE,DELETE),UNIT=SYSDA

IEHLIST

Esta utility se suele utilizar para listar el contenido de un dataset particionado o puede listar la VTOC del disco, es decir, nos lista los miembros que tiene con una información de ocupación adicional. El siguiente JCL nos mostrará una lista con los miembros que contiene un dataset particionado llamado YGGDRASL.GODDESS:

//LISTAPDS JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1)
//PASO0001 EXEC PGM=IEHLIST,REGION=8M                      
//SYSPRINT DD SYSOUT=A
//PDS1     DD DSN=YGGDRASL.GODDESS,DISP=OLD
//SYSIN    DD *
  LISTPDS DSNAME=YGGDRASL.GODDESS,FORMAT
/*

En cambio, si queremos saber el contenido de la VTOC del disco WRK001, el job sería algo así como:

//LISTADSK JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1)
//PASO0001 EXEC PGM=IEHLIST,REGION=8M                      
//SYSPRINT DD SYSOUT=A
//VOL1    DD VOL=SER=WRK001,DISP=OLD
//SYSIN   DD *
  LISTVTOC VOL=WRK001,FORMAT
/*

Para terminar, comentaré dos utilities más que se utilizan para formatear o inicializar discos y cintas: ICKDSF para los discos y IEHINITT para cintas. Comencemos por esta última:

IEHINITT

Mediante esta utilidad, escribimos etiquetas nuevas a las cintas, o lo que es lo mismo, destruimos el contenido anterior. Lo interesante de esta utility es que si disponemos de una unidad auto-cargadora de cintas (como la IBM 3490-B40 con 4 bocas autocargadores para 5 cintas cada una) que, como su nombre indica, inserta las cintas consecutivamente valiéndose de una oruga que las introduce automáticamente, esta utility se puede usar para etiquetar mas de una cinta. El JCL siguiente nos da una idea de cómo hacerlo:

//INICINTA JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1)
//PASO0001 EXEC PGM=IEHINITT,REGION=8M                      
//SYSPRINT DD SYSOUT=A 
//LABEL DD DCB=DEN=2,UNIT=(3490,1,DEFER) 
//SYSIN DD * 
    LABEL INITT SER=010000,NUMBTAPE=7
/*

Con esto, le decimos que queremos que nos inicialice 7 cintas, empezando por la 010000. Una vez inicializada dicha cinta, la rebobinará, la expulsará e introducirá otra que la etiquetará como 010001, y así sucesivamente con las 7 cintas.

ICKDSF

Esta utility sirve para formatear e inicializar discos tipo CKD (Cuenta-Clave-Datos), o lo que es lo mismo, el tipo de disco más utilizado en el mundo mainframe. Y no solo eso, esta utility también sirve para monitorizar y mantener el disco en cuestión. Viene a ser un format y scandisk al mismo tiempo. El siguiente JCL inicializará el disco cuya dirección es 01FA y lo etiquetará como WRK001:

//INICINTA JOB GODDESS,URD,CLASS=A,MSGCLASS=A,
//             MSGLEVEL=(1,1)
//PASO0001   EXEC   PGM=ICKDSF,PARM=NOREPLYU
//SYSPRINT DD    SYSOUT=*
      REFORMAT UNITADDRESS(01FA) VOLID(WRK001)
/*

Hay que tener en cuenta que si este JCL lo submites con el disco on-line, cascará estrepitosamente con un Cond. Code de 12. Así que antes, hay que hacer un VARY 01FA,OFFLINE para asegurarse de que el disco no está activo. Una vez ejecutado el JCL, se puede hacer un VARY 01FA,ONLINE y poder empezar a trabajar con él.

Mención especial al parámetro NOREPLYU, ya que si no se pone, cuando se ejecute dicho job, aparecerá una mensaje de advertencia en la Master Console, constatando el hecho de que "alguien" va a hacer "algo" en "algún sitio" (creo que mi deformación de la realidad de Cruz y Raya está yendo demasiado lejos xDDD).

Y claro, hay que responder a ese mensaje, de lo contrario, el job se quedará a la espera. Con NOREPLYU, digamos que desactivas la aparición de ese mensaje y directamente lo hace.

Sin más. Me he dejado en el tintero utilities como DFSORT, IKJEFT01, etc, pero vamos, Internet está ahí y vosotros tenéis más tiempo que yo para echarlas un ojo (además, si las explicara todas, haría un post de 900 páginas y tardaría varios años en postearlo).

Comentarios