Nosotros hace ya bastante tiempo preparamos un proceso para facilitar el conseguir las referencias a un objeto (Programa o Fichero) que resulta c�modo de utilizar.

Se trata b�sicamente de aplicar el mandato DSPPGMREF con salida a un fichero para todos los programas de las bibliotecas de la aplicaci�n. Esto lo realiza un CL a partir de los nombres de bibliotecas grabados en otro fichero.

Despu�s para el programa o fichero que nos interesa se buscan las referencias en ese fichero.

Los dos procesos los tenemos como �Opciones definidas por usuario�, de forma que al solicitar la opci�n en la l�nea del programa deseado se visualizan todos los programas que lo llaman, y si es un fichero todos los programas que lo utilizan.

Aunque como ver�s el proceso es sencillo, como los fuentes no son muy extensos los env�o por si te interesan:

 

 

DDS del fichero FICHREF

 

    * BIBLIOTECAS DE APLICACION DONDE SE HAN DE BUSCAR              

    * PROGRAMAS Y OBJETOS PARA INFORMACION CON 'RF'                 

                                                                     

    * ESTE FICHERO SE LLENA INICIALMENTE POR DFU CON TODOS LOS       

    * NOMBRES DE BIBLIOTECAS EN LAS QUE SE QUIERAN BUSCAR           

    * REFERENCIAS A OBJETOS                                         

                                                                     

   A          R FMT0                                                

   A            B00OBJ        10          COLHDG('BIBL. DE OBJETOS')

                                                                    

 

Programa CL  CLREF

             PGM                                                    

     /*  GRABA EN EL FICHERO REFPROG LAS REFERENCIAS DE PROGRAMAS */

     /*  DE TODOS LOS PROGRAMAS DE LAS BIBLIOTECAS INDICADAS EN   */

     /*  EL FICHERO FICHREF                                       */

                                                                    

                                                                    

             DCL        VAR(&BIBLI) TYPE(*CHAR) LEN(10)                      

             DCL        VAR(&BIBTRA) TYPE(*CHAR) LEN(10) VALUE('XXXX')

             DCLF       FILE(FICHREF)                               

                                                                    

INICIO:      RCVF                                                    

             CHGVAR     VAR(&BIBLI) VALUE(&B00OBJ)                  

             DSPPGMREF  PGM(&BIBLI/*ALL) OUTPUT(*OUTFILE) +         

                          OUTFILE(&BIBTRA/REFPROG)                  

             MONMSG CPF0000                                         

                                                                    

SEGUIR:     RCVF                                                     

            MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(FIN))         

            CHGVAR VAR(&BIBLI) VALUE(&B00OBJ)                        

            DSPPGMREF  PGM(&BIBLI/*ALL) OUTPUT(*OUTFILE) +           

                         OUTFILE(&BIBTRA/REFPROG) OUTMBR(*FIRST *ADD)

            MONMSG CPF0000                                            

            GOTO  SEGUIR                                             

                    

 FIN:        ENDPGM 

 

Qmqry QRYREF

 

 

SELECT DISTINCT WHLIB, WHPNAM, WHFNAM, WHFUSG FROM REFPROG 

WHERE WHFNAM=&fichero 

 

Opciones definidas por usuario en PDM (Mdto16)

 

PR    SBMJOB CMD(CALL PGM(CLREF))

 

RF    STRQMQRY QMQRY(QRYREF) OUTPUT(*) SETVAR(('fichero' '''&N'''))                                     

 

 

 

Hola,

Quiero modificar un programa estandard de una aplicaci�n para que este reciba un par�metro, pero no se c�mo localizar todos los programas que le hacen un call. Me suena que hay un mandato que te lista todos los programas que llaman a un programa concreto, es as�?

Gracias por avanzado!

Sergi Sitjes
Resp. Sistemes d'Informaci�

Responder a