miércoles, 9 de marzo de 2011

Debug a programa sometido AS400 (STRSRVJOB - STRDBG)

El DEBUG es una herramienta de gran utilidad para los desarrolladores, eso lo sabemos bien, pero la manera de sacarle provecho es lo que mas cuenta.


“Debagear” un programa interactivamente casi todos los que programamos lo hemos hecho, pero a veces surgen cosas imprevistas cuando lo procesamos por lotes.
Aquí los pasos para dar seguimiento y depurar a un programa ejecutado por lotes por medio de los comando STRSRVJOB y STRDBG.

1.- Obviamente el programa debe estar compilado con el parámetro necesario para ser Depurado.


Vistas de depuración . . . . . . DBGVIEW 


 2.- Someter el programa

Pero lo lanzamos en estado retenido HOLD(*YES), es decir, no se procesará el Job hasta que lo liberemos manualmente, Esto es para que nos demos tiempo para activar los servicios de depuración para el programa.

===> SBMJOB CMD(CALL PGM(MILIBRERIA/PROGRAMA)) JOB(PROGRAMA) JOBQ(QBATCH) HOLD(*YES)

3.- Arrancamos el servicio remota del trabajo sometido.

===> STRSRVJOB JOB(336254/MIUSUARIO/PROGRAMA)   

4.- Arrancamos el servicio debug

===> STRDBG PGM(MILIBRERIA/PROGRAMA) UPDPROD(*YES)

Cuando el fuente se muestre en pantalla presionar F12

Nota: Si se va a depurar un programa que no es ILE no olvidar colocar el parámetro OPMSRC(*YES) 


5.- Liberamos el Job sometido.

===> RLSJOB JOB(336254/MIUSUARIO/PROGRAMA)   

Cuando aparezca la pantalla “Arrancar Trabajo que Recibe Servicio” presionar F10 para “Entrada de Mandatos”

6.- En la pantalla “Entrada de Mandatos” visualizamos el fuente del módulo

===> DSPMODSRC

Cuando el fuente del programa se visualize colocar un Punto de Interrupción y luego presionar F12
Cuando regresemos a la pantalla “Entrada de Mandatos” presionar F12

7.- En la pantalla “Arrancar Trabajo que Recibe Servicio” presionar Enter

La ejecución del programa se detendrá en el punto de interrupción que colocamos y a partir de ahi podremos darle seguimiento en el Debug.

8.- Luego de la depuración, se debe cerrar los servicios en el mismo orden en que fueron arrancados.

===>ENDDBG
===> ENDSRVJOB




4 comentarios: