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.
Muy interesante.
Un saludo!
Muchas gracias por tu blog!!
Las entradas que pones me parecen muy buenas todas!! Me ayudan a aprender cosas nuevas y me dan ideas para seguir trasteando jejej
Enhorabuena!!
Muchisimas gracias! Tu web tampoco está nada mal y precisamente complementas las aplicaciones que yo no he tocado, asi que hacemos un buen tandem! 😉