sábado, 5 de marzo de 2011

Recuperar en fuente instrucciones de objeto Query AS400 (RTVQMQRY *QRYDFN)

Los Querys del sistema son aplicativos que frecuentemente utilizamos para generar reportes y archivos. Este herramienta muchas veces nos evita tener que programar y con eso ahorramos tiempo de codificación.

Los Querys generados por el utilitario STRQRY son almacenados en el sistema como un objeto mas de tipo *QRYDFN, los cuales no poseen fuente alguno.

Si se da el caso que un archivo cambia su estructura, por ejemplo, en la longitud de un campo, y éste es muy utilizado no solo en programas sino también en Querys, que impacto tendría?. ¿Qué pasaría si tengo un Query que hace un SUBSTRING a un campo desde ciertas posiciones para obtener un dato, y si el campo cambia de longitud y el dato de posición, nuestro Query no generaría datos correctos.

Tendríamos que entrar al WRKQRY y visualizar uno por uno los querys que trabajan dicho campo del archivo y realizar los cambios necesarios.

Los Querys son simplemente comandos SELECT del SQL, y pueden ser recuperados a miembros fuentes.


1.- Crear archivo fuente que contendrá los fuentes de los Querys.

CRTSRCPF FILE(MILIBRERIA/QRYSRC)  

2.- Recuperamos los objetos de tipo *QRYDFN de una librería especifica y lo derivamos a un archivo, el cual tendrá la lista de objetos Query.  Esto lo hacemos con el comando DSPOBJD. Esto lo podremos hacer dentro del programa CL.

DSPOBJD    OBJ(MILIBRERIA/*ALL)
OBJTYPE(*QRYDFN)            
           OUTPUT(*OUTFILE)
OUTFILE(MILIBRERIA/MISQUERYS) 

3.- Procesamos el archivo que contiene la lista de objetos Query y recuperamos el fuente con el comando RTVQMQRY al archivo fuente creado en el paso 1.

             PGM                                                         
             DCLF       FILE(MILIBRERIA/MISQUERYS)                        
                                                                          
             DSPOBJD    OBJ(MILIBRERIA/*ALL) OBJTYPE(*QRYDFN) +           
                          OUTPUT(*OUTFILE) OUTFILE(MILIBRERIA/MISQUERYS)  
                                                                         
 LOOP:       RCVF                                                         
             MONMSG     MSGID(CPF0864) EXEC(RETURN)                      
             RTVQMQRY   QMQRY(&ODLBNM/&ODOBNM) +                         
                          SRCFILE(MILIBRERIA/QRYSRC) ALWQRYDFN(*YES)      
             GOTO       CMDLBL(LOOP)                                     
                                                                         
             ENDPGM                                                      


4.- Entramos al archivo fuente donde se recuperaron los fuentes de los objetos Querys.



5.-  Ahora que tenemos los fuentes simplemente buscamos con la opción 25 del PDM el campo que se modifico. Inclusive podremos generar una lista de los Querys que trabajan dicho campo. 




6.-  Buscamos en todos los fuentes el campo que se modificó.  





No hay comentarios:

Publicar un comentario