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