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.

Monday, June 8, 2009

SQLRPG DINAMICOS





(Haz Click encima de la imagen para agrandarla)
<--------------------- Cuando se establece una comunicación entre el As400 y una plataforma basada en otro sistema operativo como visual, java, HTML u otras, utilizar SQL dinámicos en los programas RPG es muy útil porque ahorra la realización de múltiples programas. Para ilustrar la enorme utilidad de utilizar SQL dinámicos, supongamos que tenemos una aplicación en Visual Basic que permite al usuario introducir el código de la cuenta corriente, el código del cliente, la zona, el país de residencia y varios datos más. Esta carga de datos se está realizando en el proceso que en el grafico denominé FRONT Sin embargo los archivos, las tablas contra las cuales se puede realizar la validación de los datos que está cargando el usuario, reside en el AS400. El Front debe enviar al AS400 una solicitud de validación a través de una TRAMA es decir un string de caracteres seguidos, descifrables por medio de una Data Estructure en un programa o mediante la DDS de un archivo que explicaría las longitudes de cada campo de la trama y su significado, En la imagen se ve un ejemplo de TRAMA. Una primera opción para construir La Trama de Envío es añadir junto con la data un espacio en la trama, con el nombre del programa que debe invocarse en el AS400 para validar los campos. Otra opción mucho más dinámica es colocar en la trama hacia el AS400 el nombre del archivo del as400 contra el cual se debe validar y las clave de búsqueda. ¿Por qué esta última opción es mas conveniente? Si elegimos la primera opción, debemos hacer tantos programas como archivos de data para validar tengamos en el AS400. Con la segunda opción y el uso de un SQL dinámico podemos usar un solo programa SQLRPG y mediante parámetros pasamos a ese único programa el nombre del archivo y las claves, esta información es asignada en el SQLRPG a las variables que construyen la sentencia SQL. Entonces es en ese momento se construye la sentencia SQL que nos conviene y se ejecuta la validación que necesitamos. Todo esto es posible con un solo programa. Ejemplo de un Pseudocódigo SQLRPG dinámico:
E CLAVE1................... 25 A
E CAMPO1................... 10 A
E ARCHIVO.................. 10 A
E RETRIEV.................1000 A
E SNDTRAMA................1000 A

C *ENTRY PARM
C........................... CLAVE1
C........................... CAMPO1
C........................... ARCHIVO
C........................... SNDTRAMA
C
C
C EVAL SENTENCIA = ‘SELECT *ALL FROM ’ + ‘ ‘
C %TRIM(ARCHIVO) ‘ ‘ + ‘WHERE ’ + ‘ ‘
C %TRIM(CAMPO1) + ‘ ‘ + ‘=’ + ‘ ‘ %TRIM(CLAVE1)

C/EXEC SQL
C+ PREPARE S1 FROM :SENTENCIA
C/END-EXEC

C
C/EXEC SQL
C DECLARE C1 CURSOR FOR SENTENCIA
C/END-EXEC
C
C
C/EXEC SQL
C+ CLOSE Cursor
C/END-EXEC
C
C/EXEC SQL
C+ OPEN Cursor
C/END-EXEC
C
C/EXEC SQL
C+ FETCH C1
C+ INTO :RETRIEV
C/END-EXEC

C IF SQLCOD = 0

C* Eval SNDTRAMA= ‘CLIENTE NO VALIDO’

C EXSR PREPARAR-TRAMA-RESPUESTA

C ENDIF

C
C SETON LR


Una alternativa mas efectiva que las anteriores, sería que el as400 recibiera la trama desde el FRONT con la sentencia SQL ya construida dentro del string de caracteres. Vía parámetro se recibe la sentencia SQL y se asigna a la variable utilizada en el programa SQLRPG (en el ejemplo es la variable llamada: SENTENCIA) para ejecutar el SQL.


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

No comments: