Cuando queremos ejecutar un mandato desde un programa RPG teníamos que hacer un CALL al típico QCMDEXC, lo que tenía sus limitaciones.
En ILERPG, la llamada a los mandatos del sistema la podemos realizar mediante un procedimiento externo a ese mismo programa, pero de una manera más ágil y sencilla.
Cuando descubrí ILE y sus bondades decidí automáticamente desarrollar todo en esta nueva modalidad de RPG, pero claro, que pasa con todo lo que ya tengo codificado…. obviamente lo que menos tengo es tiempo para ponerme a recodificar.
Pero esto no es un problema, ya que en el iSeries hay una mandato que te transforma directamente un fuente RPG en otro identico pero con codificación ILE. Claro está que no toca nada de código, simplemente lo ajusta a columnas y opciones adecuadas de ILE.
Continuando con el desarrollo de aplicaciones Web en el servidor Websphere que tenemos en nuestro iSeries usando JSP, hoy quiero explicar como podemos hacer una llamada a un programa ILERPG directamente desde la aplicación.
Partimos de un escenario en que tenemos un programa ILERPG (tiene que ser ILE, no vale un RPG400) compilado en nuestro iSeries que funciona perfectamente y que a partir de unos parámetros que le pasamos nos devuelve un resultado concreto. Ahora queremos incluir esos parámetros devueltos en nuestra Intranet. Muy util para crear funciones que devuelvan datos complejos que necesiten acceder a varias tablas y realizar cálculos que mediante SQL se nos complicarían o, incluso, reutilizar código.
Hoy voy a comentar como realizar un programa en ILERPG con sentencias SQL dentro de él. Es una técnica que cuando descubrí hace años me resultó muy práctica y que suelo usar habitualmente, sobre todo para hacer informes y consultas.
La idea es muy simple, y tras la explicación os pondré un ejemplo típico de un programa ILERPG que hace una consulta a la Base de Datos utilizando únicamente SQL.
Un Trigger o desencadenante de una Base de Datos no es más que un proceso que se dispara ante algún evento configurado que ocurra en nuestro sistema. Básicamente, es una manera de decirle al sistema que cuando un registro de la Base de datos cambie, haga una llamada a un programa que nosotros especificamos y con el que podemos tratar los datos del registro modificado.
En el iSeries, la gestión de los triggers la tenemos dentro del menú CMDTRG, donde encontramos opciones para añadir un trigger, modificarlo, borrarlo o listar todos los triggers que estén definidos contra los ficheros de un biblioteca concreta. Hoy nos vamos a centrar en añadir triggers, las demás opciones son muy fácil de entender y realizar, así que las obviaré.
Tanto en RPG como en ILERPG, cuando tenemos un parametro de entrada definido como campo numérico, no podemos llamarlo directamente poniendo un valor constante decimal sin encontrarnos el fastidioso mensaje de error de datos decimales.