JES2 y las PROCLIBs dinámicas

Hasta ahora, por defecto las librerías donde se guardan los procedimientos (PROCLIB) que utiliza JES2 se “harcodean” en el procedimiento de arranque del JES2 situado en el SYS1.PROCLIB de la instalación. El típico procedimiento de arranque JES2 podría ser algo parecido a esto:

//JES2     PROC
//IEFPROC  EXEC PGM=HASJES20,
//            DPRTY=(15,15),TIME=1440,PERFORM=9
//ALTPARM  DD DISP=SHR,
//            DSN=WEYLAND.PROD11.PARMLIB(JES2PARM)
//HASPPARM DD DISP=SHR,
//            DSN=WEYLAND.PROD11.PARMLIB(JES2PARM)
//PROC00   DD DISP=SHR,
//            DSN=CPAC.PROCLIB
//         DD DISP=SHR,
//            DSN=SYS1.PROCLIB
//         DD DISP=SHR,
//            DSN=SYS1.IBM.PROCLIB
//HASPLIST DD DDNAME=IEFRDER

El problema de este acercamiento es que si queremos añadir una nueva Proclib, debemos editar el procedimiento de JES2 y parar y arrancar toda la instalación, con el peligro que supone escribir mal el nombre u olvidarte la coma. Con una Proclib dinámica, eliminaríamos ese problema de raíz y nos permitiría cargar perfiles distintos de proclibs para cada entorno. Además, al no ser estáticas, si creamos nuevos nuevos procedimientos dentro de esas PROCLIBs, bastará con refrescar la proclib dinámica, en vez de tener que rearrancar cada vez como se haría de esta forma.                     .

Creación de PROCLIB dinámica

Para crear una Proclib dinámica del JES2, basta con efectuar estos sencillos pasos:

1.- Editar el fichero JES2PARM y añadir estas líneas con las PROCLIBs que queramos añadir, por ejemplo:

PROCLIB(PROC00) DD(1)=(DSN=CPAC.PROCLIB),UNCONDITIONAL,
                DD(2)=(DSN=SYS1.PROCLIB),UNCONDITIONAL,
                DD(3)=(DSN=SYS1.IBM.PROCLIB),UNCONDITIONAL,
                DD(4)=(DSN=WEYLAND.PROD11.PROCLIB),UNCONDITIONAL

La opción UNCONDITIONAL es muy interesante, ya que si tenemos problemas con su carga, pasa a la siguiente, sin parar el arranque del JES2 en ningún caso. Es decir, que siempre arrancará el JES2 pase lo que pase.

Atención también al parámetro PROC00: Podríamos crear varias PROCs, la PROC00, PROC01, PROC02, etc, con proclibs distintas y el JES2 podría tener ejecuciones de trabajos según a los perfiles PROC creados, lo que ayuda a separar trabajos entre las proclibs distintas, creando entornos diferenciados con librerías distintas.

2.- Una vez editado el fichero JES2PARM, podemos editar el miembro JES2 de nuestra PROCLIB y quitar todas las referencias a las proclibs, dejando el PROC con el siguiente contenido:

//JES2     PROC
//IEFPROC  EXEC PGM=HASJES20,
//            DPRTY=(15,15),TIME=1440,PERFORM=9
//ALTPARM  DD DISP=SHR,
//            DSN=WEYLAND.PROD11.PARMLIB(JES2PARM)
//HASPPARM DD DISP=SHR,
//            DSN=WEYLAND.PROD11.PARMLIB(JES2PARM)
//HASPLIST DD DDNAME=IEFRDER

 

Esto hará que el próximo arranque del JES2, sea del todo dinámico.

Comprobación de JES2 con PROCLIBs dinámicas

Para comprobar que en el arranque, la lista de PROCLIBs del JES2 es dinámica, basta con lanzar el siguiente comando:

$D PROCLIB

El resultado será el siguiente:

RESPONSE=PROD
 $HASP319 PROCLIB(PROC00)
 $HASP319 PROCLIB(PROC00)    DD(1)=(DSNAME=CPAC.PROCLIB),
 $HASP319                    DD(2)=(DSNAME=SYS1.PROCLIB),
 $HASP319                    DD(3)=(DSNAME=SYS1.IBM.PROCLIB),
 $HASP319                    DD(4)=(DSNAME=WEYLAND.PROD11.PROCLIB
 $HASP319                    )

 

A partir de este instante, podemos añadir nuevas PROCLIBs, refrescarlas, borrarlas, todo ello sin parar el JES2 para nada.

Operaciones con PROCLIBs dinámicas

Para añadir una nueva proclib, el comando $ADD PROCLIB nos sirve para el caso. Los parámetros serían el conjunto de proclibs a añadir, y el numero de concatenación de datasets. Por ejemplo, si queremos añadir una nueva proclib a nuestro PROC00 existente como 5º dataset concatenado, el comando sería algo como esto:

        $ADD PROCLIB(PROC00),DD(5)=NUEVA.PROCLIB

Por tanto, si hacemos un $D PROCLIB, debería aparecernos la siguiente lista:

RESPONSE=PROD
 $HASP319 PROCLIB(PROC00)
 $HASP319 PROCLIB(PROC00)    DD(1)=(DSNAME=CPAC.PROCLIB),
 $HASP319                    DD(2)=(DSNAME=SYS1.PROCLIB),
 $HASP319                    DD(3)=(DSNAME=SYS1.IBM.PROCLIB),
 $HASP319                    DD(4)=(DSNAME=WEYLAND.PROD11.PROCLIB
 $HASP319                    )
 $HASP319                    DD(5)=(DSNAME=NUEVA.PROCLIB)

 

Para actualizar las PROCLIBs existentes o cambiar el orden de concatenación, el commando $T PROCLIB nos servirá para el caso. Por ejemplo:

$T PROCLIB(PROC00),DD(2)=NUEVA.PROCLIB

 

Actualizará el orden de la PROCLIB, poniendo a NUEVA.PROCLIB la segunda concatenada y además, refrescará sus miembros.

 

Y por último, si queremos sacar una PROCLIB del ámbito del JES2, el comando $DEL PROCLIB es perfecto:

$DEL PROCLIB(PROC00),DD(*)=(/DSN=SYS1.PROCLIB)

 

Este comando borrará todas las referencias a SYS1.PROCLIB dentro de nuestra PROC00.

 

 

About Urtzi Larrieta

Director de Proyectos de entornos Mainframe, AIX y AS/400, llevo mas de 10 años trabajando para el sector servicios y banca, así como proyectos de sistemas, renovación tecnológica, estrategias de backup, y consultoría de sistemas.