Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.
Showing posts with label DEBUG en RPG. Show all posts
Showing posts with label DEBUG en RPG. Show all posts

Sunday, October 25, 2009

No puedo ver el listado del Debug.











Cuando un programa falla y respondemos con ´D´ esperamos que se genere un listado
que nos facilite conseguir el origen del problema. Este listado puede generarse en el spool del usuario o en una cola de spool predeterminada por el sistema llamada QEZDEBUG. Sin embargo, puede suceder que buscamos el listado por todas partes y no lo conseguimos. El nivel de autoridad puede estar implicado en este problema. Para solucionarlo, colocas WRKSPLF y luego presionas SHIFT-F9. Seguidamente te aparece una pantalla que dice: Nivel de Autoridad. Colócalo en 2, pulsas Enter y al presionar F5 para hacer un refrescamiento de la pantalla del WRKSPLF verás el listado que estabas buscando

Si te pareció interesante, reenvialo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor: Ing. Liliana Suárez

Thursday, June 18, 2009

¿Cómo puedo utilizar STRISDB y STRDBG al mismo tiempo?






¿Cómo se puede depurar un programa OPM y un programa ILE al mismo tiempo?

No se puede usar el comando STRDBG al mismo tiempo con el comando STRISDB (o viceversa), ya sea; porque coloca el trabajo en el modo de depuración o porque no se permite arrancar el otro comando cuando el modo de depuración ya está activo. No había podido hacer STRDBG en los programas de depuración OPM, hasta que encontré esta técnica que le permite activar el depurador ILE mientras STRISDB está activo.

1. Inicie STRISDB normalmente.

2. Presione F21 para obtener una línea de comandos.

3. Introduzca el comando DSPMODSRC. Este comando es parte de la depuración ILE.

4. Presione F14 para mostrar la pantalla con la lista de módulos del trabajo.

5. Utilice la opción 1 para añadir uno o más programas ILE a la lista.

6. Utilice la opción 5 para mostrar el fuente del módulo donde quiere comenzar la depuración ILE.

7. Coloque un punto de interrupción donde desea que se detenga la primera vez la ejecución del programa. (A diferencia de cuando se utiliza STRDBG, pulsando F10 NO provoca que el depurador se detenga cuando se ejecuta el programa, DEBE tener un punto de interrupción.)

8. Si es necesario, presione F14 para mostrar la pantalla con la lista de módulos del trabajo y establecer puntos de interrupción en otros módulos.

9. Presione F12 para volver a la línea de comandos. Presione F12 nuevamente para volver al STRISDB.

10. Repita los pasos del 2 a 9, según sea necesario para añadir y eliminar programas y puntos de interrupción.

11. Cuando STRISDB finalice, el depurador ILE terminará también.



Escrito por Max Ricardo
martes, 20 de noviembre de 2007
W&M Informática



Referencias:
STRISDB (Inicio Fuente depurador interactivo) comando
STRDBG (Inicio Debug) Comando
DSPMODSRC (módulo de visualización fuente) comando






Si te pareció interesante, reenvialo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor:  Ing. Liliana Suárez

Saturday, March 21, 2009

Pregunta- STRISDB










Pregunta:

Hola te saluda Jaime Maza desde Quito-Ecuador, tuvieras la gentileza de indicarme con un ejemplo como se debe pasar parámetros de variables tipo caracter, numérica y lógica utilizando la herramienta de depuración STRIDB, en ambiente de programación RPG400.

De antemano gracias por tu ayuda.

Saludos

Respuesta:

El comando STRISDB, se utiliza en un ambiente interactivo y es activado desde la línea de comando del Iseries.

AL colocar STRISDB y luego F4, aparecen una series de parámetros en los cuales debes especificar el nombre del programa que deseas invocar, si deseas invocarlo inmediatamente o no y si deseas incorporarles parámetros en la llamada o no.

Primera Opción:

Los parámetros en cualquiera de sus modalidades son “valores”, no permite variables sino literales por ejemplo:


STRISDB PGM(TUPROGRAMA) INVPGM(*YES) PARM(‘Hola Mundo’ X'11' ‘1’)

En esta primera opción, con el parámetro INVPGM = *yes el programa se llama inmediatamente al terminar de activar el comando.

Para valores alfabéticos: EL valor entre comillas simples: ‘Hola Mundo’

Para valores numéricos: El valor como se especifica en el ejemplo:

-Para el caso X’11’ se trata de un numérico empaquetado (número 11)
-Cuando es un numérico con signo (declarado ‘S’ en la hoja ‘D’):
Sería X’011F’ si es un numérico positivo y si es negativo X'011D’

En todos los casos:
la longitud del valor (la parte entre apóstrofos)
siempre debe ser par (rellenar con 0 a la izquierda de ser necesario)
incluyendo el último caracter, que indica el signo (F=Positivo y D=Negativo)

(En lo particular prefiero trabajar con parámetros alfabéticos porque en versiones de Rpg-Ile avanzadas los parámetros de entrada numéricos son un dolor de cabeza)

-Para valores lógicos (Indicadores o variables booleanas) se pasa lo siguiente:

‘0’ = indicador apagado
‘1’ = indicador encendido

En el ejemplo se inicializa encendido el parámetro lógico = ‘1’


Segunda Opción:

Con el parámetro INVPGM = *NO el sistema operativo presenta ante ti la línea de comandos para que realices los comandos previos que necesites a la ejecución del programa sobre el cual estas haciendo el STRISDB

Te expongo este caso por si tu dilema se trata de “pasar variables” que tu necesitas pasar en el strisdb. Como no es posible pasar variables sino valores literales, puedes llamar en la línea de comandos a un programa RPG o a un programa CLP que a su vez, llame al programa sobre el cual estas haciendo debug y cuando el strisdb entra a tu programa recibe, del programa previo, los valores que deben ejecutarse.

Tercera Opción:

Puedes realizar STRISDB a varios programas a la vez, es decir al programa previo que llama (call) al programa que te interesa y además al programa que en realidad te interesa controlar.

¿Cómo se hace eso?

Primero realizas un STRISDB sobre el primer programa puedes colocar INVPGM = *YES, cuando el sistema operativo esté suspendido en este primer debug, aplicas F14 y te presenta una opción para añadir otro programa que debe ser incluido en STRISDB, allí colocas el nombre del segundo programa (para los fines de este ejemplo es el que realmente te interesa controlar) y continuas haciendo debug paso a paso con el primer programa. Antes de que se invoque el segundo programa puedes cambiar los valores de los parámetros de entrada y luego proseguir con el debug.

Para realizar STRISDB sobre varios programas a la vez, los programas deben ser de tipo: RPG, CLP.

Para realizar debug simultáneos entre programas RPG y CLP, que ejecutan programas RPGLE, y CLLE hay que realizar un procedimiento especial. (Me parece que este tema en particular está fuera del alcance de tu pregunta).

Espero esto resuelva tu inquietud,
A tu orden para cualquier duda o aclaratoria.

Saludos desde Venezuela!

Para nuestros lectores:
Envíanos tus preguntas a rpg.iseries@gmail.com y las compartimos para que todos
podamos aprender de nuestras experiencias.



Si te pareció interesante, reenvialo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor:  Ing. Liliana Suárez

Saturday, February 21, 2009

Cómo hacer debug a un programa en Batch


Usa tu pantalla interactiva para hacer debug a un trabajo sometido en batch (por lotes)

Podrás colocar el trabajo batch en modo debug y establecer los puntos de break sin tener que correr el programa en modo interactivo.

Sigue los siguientes pasos:
1.-Somete el job con la opción HOLD(*YES) en el parámetro del comando SBMJOB hold(*YES) o también puedes colocar en HOLD la cola de trabajo por donde será sometido el job antes de someter el job usando el comando HLDJOBQ
2.-Determina el nombre del job, usuario y numero de job sometido usando el Comando WRKSBMJOB
3.-Tipea el siguiente comando en tu pantalla: STRSRVJOB JOB(job name/user/number)
4. Tipea el commando de Star Debug en tu pantalla: STRDBG
5. Libera el job de la cola de trabajos, para ello Tipea el comando WRKSBMJOB y coloca un 6 al lado del job que quieres liberar o, si la cola de trabajos esta en HOLD libera la cola de trabajos con el comando RLSJOBQ
6. Un mensaje aparecerá en pantalla cuando el job este listo para arrancar. El mensaje te dirá que puedes comenzar a hacer el debug. Presiona F10 para que te muestre la línea de Comandos en pantalla.
7. Ahora puedes comenzar el debug tipeando el comando de Break point en pantalla: ADDBKP

------------------------------------------------------------------------------------


¿Sabías que puedes usar el debug interactivo para hacer debug a un programa
Sometido?
Sigue los siguientes pasos:
1.-Modifique el programa CL desde donde el programa RPG es llamado para incorporar
Un mensaje de espera antes de que el RPG sea llamado. Esto puede realizarse
Añadiendo el comando SNDUSRMSG en el CLP antes de la llamada al RPG

2.-Una vez que el programa CL ha corrido y está en starus MSGW, coloque el comando
STRISDB en pantalla: STRISDB program UPDPRD(*YES) INVPGM(*NO) SRVJOB(*SELECT)
El parámetro SRVJOB(*SELECT) debería habilitarte la selección del job que está en
MSGW. Selecciona este job de la lista de Jobs que están desplegados en pantalla.
Responde el mensaje para que el job continúe ( coloca cualquier respuesta)
3.-La sesión de Debug debería comenzar ahora, y tendrás frente a ti el fuente del programa. Ahora añade los puntos de break dentro del programa


Si te pareció interesante, reenvialo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor:  Ing. Liliana Suárez