Buscando texto a nivel de miembro en AS400 usando una lista de búsqueda
- Detalles
- Escrito por Nora Salmún
Aprenda cómo buscar series de caracteres en miembros de archivos fuente o de datos dispuestos en más de una bibliotecahaciendo uso de una lista de búsqueda, mediante el comando FNDSTRPDM2 de la biblioteca QPDA (almacena el producto PDM) en AS400.
En el tip "Cómo buscar texto en un archivo AS400 a nivel de miembro" publicado anteriormente en Teknodatips, se mostró el uso del comando FNDSTRPDM para saber si un texto determinado aparecía en uno o más miembros de un archivo físico de fuentes o de datos.
Si bien el comando FNDSTRPDM es útil y ofrece la funcionalidad requerida en muchas situaciones, tiene un comportamiento que limita su uso en determinados casos:
Por ejemplo, analizando la sentencia:
FNDSTRPDM STRING('Para curso AS400') FILE(*LIBL/QCLSRC) MBR(*ALL) OPTION(*DSP),
el parámetro FILE hace referencia a *LIBL. Aunque es esperable que el sistema busque la serie 'Para curso AS400' en todos los miembros de archivos QCLSRC de la lista de bibliotecas, sin embargo, sólo buscará el string especificado en todos los miembros del archivo QCLSRC (parámetro MBR(*ALL)) de la primera biblioteca especificada en la lista de bibliotecas, es decir, NO "rastrea" toda la lista de bibliotecas.
Por lo tanto, si al momento de ejecutar el comando, en la lista de bibliotecas existieran otras bibliotecas que también contienen el string especificado en sus miembros del archivo QCLSRC, el comando NO devolverá ninguna coincidencia para ellos. Ese es el comportamiento "normal" del comando FNDSTRPDM cuando se hace referencia a *LIBL, como si se hubiese especificado sólo una biblioteca.
Pero ¿Qué ocurre si lo que se necesita es buscar un string determinado en los miembros de archivos fuente (o de datos) especificando más de una biblioteca, es decir buscar en una lista?
IBM presenta una manera de "sortear" esta limitación inherente al comando FNDSTRPDM, por medio del comando FNDSTRPDM2 (Find String with list- Buscar serie con Lista), disponible desde la V5R4, en la biblioteca QPDA.
El comando FNDSTRPDM2, permite buscar series de caracteres o hexadecimales en miembros de un archivo físico fuente o en miembros de un archivo físico de datos utilizando una lista de búsqueda, que se almacena en un miembro de archivo físico. En consecuencia, cuando un usuario busca un string determinado con el comando FDNSTRPDM2 el sistema analiza todos los miembros especificados en la lista de búsqueda para encontrar coincidencias.
Uso del comando FNDSTRPDM2
EL comando FNDSTRPDM2 es un objeto de tipo *CMD de la biblioteca QPDA, que es la biblioteca con la trabaja el utilitario PDM (Program Developer Management o el Gestor de Desarrollo de Programa). Por lo tanto para poder ejecutarlo en la línea de comandos, es necesario: o arrancar el PDM para "cargar" la biblioteca QPDA a la lista de bibliotecas, o "calificar" el comando, de la siguiente manera: QPDA/FNDSTRPDM2 (manera indicada cuando la ejecución es batch).
Como mencionáramos anteriormente, el comando necesita definir una lista de búsqueda, que podría tener, por ejemplo, un formato como el siguiente:
Biblioteca | Archivo | Miembro |
TEKEXE | QCLSRC | FUND* |
TEKEXE1 | QCLSRC | *ALL |
TEKEXE2 | QCLSRC | *ALL |
TEKTCL | QCLSRC | *ALL |
Allí debería indicarse: las bibliotecas donde se debe buscar, en qué archivos (de fuentes o de datos) y en qué miembros (se pueden usar genéricos, un nombre o en todos), en ese órden.
¿Dónde definir la lista de búsqueda?
Se mencionó antes que el comando FNDSTRPDM2 opera en base a una lista de búsqueda que está almacenada en un miembro de archivo físico. Por lo tanto una vez que se sabe qué se desea buscar, es necesario:
1) definir los valores de búsqueda en un miembro de archivo (e ir agregando otros, en la medida que sea necesario). Para eso, en la biblioteca QPDA existe un archivo con nombre QAUOSR2 que contiene un miembro (QAUOMB2) en donde se puede definir la lista de búsqueda. Estos son los nombres del archivo y del miembro por default que se presentan al promptear el comando FNDSTRPDM2. Sin embargo, la lista de búsqueda puede definirse sobre cualquier archivo, miembro y biblioteca elegidos por el usuario.
Para agregar los valores se procede de la misma manera que para editar el contenido de cualquier miembro de datos, por ejemplo utilizando el DFU (Data File Utility) opción disponible en las pantallas del PDM.
Una vez cargados los valores que se quieren incluir en la lista de búsqueda, si se visualiza el miembro de datos mostrará una pantalla como la siguiente:
Observando los valores definidos en esta lista de búsqueda, indica en este caso que se buscará: en todos los miembros (*ALL) del archivo QCLSRC de la biblioteca TEKEXE, pero también en los miembros que comiencen con FUND contenidos en el archivo QCLSRC de la biblioteca TEKEXE1, y asi siguiendo según lo indicado en las filas subsiguientes.
2) Una vez definida la lista de búsqueda como se indicó arriba, ya es posible ejecutar el comando FNDSTRPDM2 indicando aquí la 'Serie' de búsqueda que se desea encontrar y otros parámetros necesarios, como se muestra abajo:
Como ejemplo de su ejecución:
El mandato especificado en la imagen de arriba, busca las apariciones de la serie &OPCION en todos los miembros de la lista de búsqueda. La lista de búsqueda se encuentra en el miembro QAUOMB2 del archivo QAUOSR2 de la biblioteca QPDA (en estos parámetros se usaron los valores por default). Según lo indicado, se visualizará por pantalla cada miembro para el que se encuentre una coincidencia (parámetro Opción con valor *DSP). Además, la búsqueda no será sensible a mayúsculas o minúsculas (parámetroClase de coincidencia *IGNORE).
También se generará un archivo de spool (con nombre QPUOPRTF) para cada archivo de la lista de búsqueda que incluye la lista de los miembros que contienen la serie buscada (si se indicó en el parámetro Imprimir Lista *YES). Esos archivos podrán luego ser visualizados y tratados como cualquier archivo de spool.
Para tener en cuenta ...
- Referirse al tip Cómo buscar texto en un archivo AS400 a nivel de miembro para detalles sobre los posibles valores que puede tomar el parámetro Opción del comando FNDSTRPDM2, similares a los valores usados en el mismo parámetro del comando FNDSTRPDM.
- Recordar usar la forma calificada del comando (QPDA/FNDSTRPDM2) cuando se ejecute el comando en entorno batch.
- Especialista AS400 - Supervisor Editorial Teknodatips |
Copyright 2013 - Teknoda S.A.
IMPORTANTE: “Notas técnicas de AS/400 - IBM i" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes IBM i - AS/400. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. NS iTech - Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos. |