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.

Saturday, June 20, 2009

Tips para Desarrollo de Sistemas en RPG/AS400












1.- Haga una lista de todos los casos y los valores que deben grabarse en los campos de los archivos para cada uno de ellos.

Si usted este desarrollando un módulo de inventario para una empresa de manufactura, el registro de la materia prima en la base de datos debe tener valores distintos que los productos terminados. Por ejemplo, debe existir un campo denominado: Clase de Inventario que para la materia prima debe tener valor: MP y para producto terminado: PT.

Haga una lista de los valores permitidos y no permitidos para cada campo así como de las reglas de integridad de la base de datos. (En un artículo anterior expliqué esto)

2.-Desarrolle en base a programas modelo de la organización.

Si la organización tiene modelos estándares de programas para desarrollo, tome ese código base para continuar con el modelo de desarrollo. Si tiene propuestas que pueden mejorar ese estándar hágalas. Si la organización no tiene estándares, desarrolle varios programas para cada tipo de programa (Interactivo, batch, consulta, listado, etc.) a fin de que los miembros de su equipo “hablen en el mismo idioma” a la hora de darse soporte mutuamente y corregir cualquier programa en caso de falla.

3.-Comience desarrollando los programas de mantenimiento.

Es importante que se comience con los programas interactivos:
El programa de inclusión
El programa de eliminación
El programa de modificación.

Cuando se distribuye el trabajo, puede asignarse a algún miembro del equipo comenzar con los reportes o listados, aún cuando los programas de mantenimiento no estén listos.
Generalmente la prueba de estos reportes se realiza incluyendo data manualmente con DFU. Esto es un error común, que puede costar mucho tiempo y esfuerzo sobretodo cuando falta poco tiempo para que el sistema sea entregado. El programador que realiza el reporte, coloca su propia data y confía en que el programa de mantenimiento se comportará de esa misma manera, cuando en realidad hay casos no contemplados en forma integral en la prueba de listados y reportes. Esto acarreará una modificación apresurada del reporte al comprobar que los programas de mantenimiento operan en forma diferente en la puesta en funcionamiento. Pruebe los reportes SIEMPRE con data generada por los programas de mantenimiento.

Estas mismas consideraciones para los listados o reportes deben ser tomadas en cuenta para los programas de consulta en línea.

4.-Verifique que la data que graban los programas de mantenimiento sean correctas.

Utilice, query, sql o dfu para comprobar que todos los campos del archivo han sido grabados correctamente para cada caso de la lista que usted generó en el punto anterior.
No se confié únicamente en los listados del modulo que se está desarrollando para confirmar que los archivos están siendo actualizados correctamente.

5.-Realice pruebas unitarias e integrales del módulo. Asigne a cada programador un compañero del equipo y de otros equipos de la Gerencia de Sistemas que pruebe los programas. Es importante que las pruebas sean realizadas con personas no involucradas en el desarrollo del sistema directamente. Esto para generar más conductas de usuario no contempladas por el programador y que pueden hacer vulnerable el sistema en tiempo real.
Luego, asigne a uno o varios usuarios del sistema para realizar las pruebas antes de la instalación del sistema en producción. Asegúrese de obtener por escrito una constancia de que las pruebas del sistema por parte del usuario han sido satisfactorias y de que el usuario está conforme con el desarrollo del sistema.



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

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