Hace algunas semanas comenzamos a ver cómo podíamos implementar un JCL que nos permitiese realizar búsquedas de objetos en varias librerías a la vez. Recordemos que este Job nos puede ser muy útil cuando tengamos que buscar cualquier cadena de texto en los programas de una aplicación que esté compuesta de múltiples librerías.
En la primera parte del artículo estuvimos examinando varias de las fichas necesarias para codificar el proceso (ver post JCL para buscar Cobol en múltiples librerías - 1). Hoy vamos a terminar de revisar el resto de las fichas requeridas, de manera que ya tengamos la visión global del JCL de búsqueda.
5º) Librerías de Búsqueda: A continuación, en la ficha NEWDD tenemos que introducir todas las librerías en las que deseamos realizar la búsqueda de nuestra cadena de texto. Como vemos, en el ejemplo yo he introducido un total de 12 librerías.
En la primera parte del artículo estuvimos examinando varias de las fichas necesarias para codificar el proceso (ver post JCL para buscar Cobol en múltiples librerías - 1). Hoy vamos a terminar de revisar el resto de las fichas requeridas, de manera que ya tengamos la visión global del JCL de búsqueda.
5º) Librerías de Búsqueda: A continuación, en la ficha NEWDD tenemos que introducir todas las librerías en las que deseamos realizar la búsqueda de nuestra cadena de texto. Como vemos, en el ejemplo yo he introducido un total de 12 librerías.
// DD DSN=JJPR.V7R00.CON.JJST.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJGU.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJAN.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJPL.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJRG.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJGM.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJTF.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJBL.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJPU.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJRV.FUENTES,DISP=SHR
// DD DSN=JJPR.V7R00.CON.JJPR.FUENTES,DISP=SHR
6º) Nombre del
fichero con las búsquedas realizadas: En la ficha OUTDD simplemente
tendremos que indicar el nombre del fichero secuencial en el que deseamos que
se almacenen los resultados de nuestra búsqueda múltiple. En el ejemplo, hemos
decidido almacenar esta información en JJPR.V7R01.JJST.BUSCADOR.
// DSN=JJPR.V7R01.JJST.BUSCADOR
7º) Parámetros de
entrada: Aquí tendremos que
introducir la ficha SYSIN que nos permitirá enviar información de entrada a la
utilidad ISRSUPC de comparación de códigos.
//SYSIN DD *
8º) Cadena de texto a
buscar: Finalmente, tendremos que especificar el comando SRCHFOR y, a
continuación, la cadena de texto que la herramienta debe buscar entre los
objetos de todas las librerías indicadas anteriormente. En el ejemplo, tal y
como se aprecia, se ha introducido el texto ‘CADENATX’.
/*
La ejecución del JCL con todos estos pasos puede demorarse
bastantes minutos, sobre todo si hemos especificado una cantidad importante de
librerías. En cualquier caso, si hemos detallado correctamente todas las fichas
del proceso, el job debería completarse sin problema alguno.
Ejecución del JCL de Búsqueda en Librerías Múltiples
Imaginemos que el JCL termina sin generar ningún ABEND. Una
vez finalizado el proceso, la información de la búsqueda quedará almacenada en
el fichero secuencial JJPR.V7R01.JJST.BUSCADOR, donde podremos consultar los
resultados tantas veces como deseemos.
Para ello, tendremos que ir a la opción 3.4 del ISPF y
buscar los datasets JJPR.V7R01.JJST*. Al hacer esto, en mi terminal aparece la
siguiente información.
------------------------------------------------------
JJPR.V7R01.JJST.BUSCADOR
JJPR.V7R01.JJST.BUSCEXPL
***************************** End of Data Set list ***
Como se aprecia, en el listado aparecen dos ficheros y uno
de ellos es el que acaba de generar nuestro proceso de búsqueda:
JJPR.V7R01.JJST.BUSCADOR. A
continuación, podríamos seleccionar este objeto y visualizar su contenido.
1 ISRSUPC - MVS/PDF FILE/LINE/WORD/BYTE/SFOR COMPARE UTILITY- ISPF
LINE-# SOURCE SECTION SRCH DSN: JJPR.V7R00.CON.
JJTD00CO CONCAT#(4) ----------- STRING(S) FOUND ----------------
7 PROGRAM-ID. CADENATX.
14 * PROGRAMA : CADENATX
1695 MOVE 'CADENATX' TO PROGRAMA-W
1 ISRSUPC - MVS/PDF FILE/LINE/WORD/BYTE/SFOR COMPARE UTILITY- ISPF
SEARCH-FOR SUMMARY SECTION SRCH DSN: JJPR.V7R00.CON.
LINES-FOUND LINES-PROC MEMBERS-W/LNS MEMBERS-WO/LNS COMPARE-COLS L
3 7231209 1 5639 1:80
THE FOLLOWING PROCESS STATEMENTS (USING COLUMNS 1:72) WERE PROCESSED:
SRCHFOR 'CADENATX'
THE FOLLOWING "SRH" FILE CONCATENATED DATA SETS WERE SPECIFIED:
(1) JJPR.V7R00.CON.JJMU.FUENTES
(2) JJPR.V7R00.CON.JJST.FUENTES
(3) JJPR.V7R00.CON.JJGU.FUENTES
(4) JJPR.V7R00.CON.JJAN.FUENTES
(5) JJPR.V7R00.CON.JJPL.FUENTES
(6) JJPR.V7R00.CON.JJRG.FUENTES
(7) JJPR.V7R00.CON.JJGM.FUENTES
(8) JJPR.V7R00.CON.JJTF.FUENTES
(9) JJPR.V7R00.CON.JJBL.FUENTES
(10) JJPR.V7R00.CON.JJPU.FUENTES
(11) JJPR.V7R00.CON.JJRV.FUENTES
(12) JJPR.V7R00.CON.JJPR.FUENTES
**************************** Bottom of Data ****************************
En la salida podemos observar que, una vez revisadas las 12
librerías, el literal ‘CADENATX’ ha sido encontrado en una única ubicación: se
trata del objeto Cobol denominado JJTD00CO. De hecho, el texto buscado aparece
hasta 3 veces en dicho programa. Esto se indica claramente al principio del fichero
JJPR.V7R01.JJST.BUSCADOR.
7 PROGRAM-ID. CADENATX.
14 * PROGRAMA : CADENATX
1695 MOVE 'CADENATX' TO PROGRAMA-W
Conclusiones de la Búsqueda en Librerías Múltiples
Como se puede ver, la ejecución de este JCL buscador nos ha
permitido revisar rápidamente varias librerías a la vez (hasta 12, en el
ejemplo) y detectar cuáles son los objetos de las mismas que contienen la
cadena de texto buscada. La información extraída queda almacenada en un fichero
secuencial, donde será fácilmente accesible siempre que necesitemos acudir a
ella.
Esta forma de búsqueda supone un considerable ahorro de
tiempo frente al procedimiento que hay que realizar mediante la utilidad estándar
Search-For Utility (3.14) del ISPF. Obviamente, quien quiera puede seguir
usando la 3.14 para búsquedas múltiples. Sin embargo, aunque nos cueste al
principio, yo creo que es importante adaptarse y aprender a utilizar las
herramientas que nos van a consumir menos tiempo a largo plazo.
De hecho, si seguís los pasos que hemos examinado a lo largo
del post, no creo que tengáis muchos problemas para elaborar vuestro propio JCL
buscador. En cualquier caso, tened en cuenta que tendréis que adaptarlo a las
características particulares de vuestra instalación y a las librerías que tenga
asociadas vuestra aplicación.
Pues nada, eso es todo por hoy. Espero que, con lo
explicado, os haya quedado clara la forma de realizar búsquedas múltiples. Si
tenéis alguna duda al respecto, ya sabéis que podéis incluirla en los
comentarios de aquí abajo y yo trataré de resolverla lo antes posible…
Saludos.
Bacan, una pregunta el SRCHFOR 'CADENATX' soporta mas de una cadena de búsqueda a la vez
ResponderEliminar?
ResponderEliminar