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.

Friday, April 2, 2010

Conceptos Ile Rpg Capitulo I














A través de varios artículos vamos a describir lo conceptos  y funcionalidades de Ile RPG. En el artículo anterior describimos la programación estructurada. Si bien es cierto que la programación estructurada es un proceso óptimo de desarrollo de código de programación, también es cierto que está restringida a un programa y a su estructura interna. El concepto de programación estructurada no integra programas que deben interactuar entre si o compartir procedimientos, funciones y rutinas comunes y que por ende, deben ser de uso público para ser accedidos por distintos programas en diferentes instantes de tiempo.

La programación Orientada a Objetos desarrollo el concepto de “componentes” para definir pequeños códigos de programas que realizan funciones muy específicas que son requeridas por una gran cantidad de programas en distintos sistemas, instalaciones y organizaciones. En Java, por ejemplo, con declarar al principio de un programa el nombre del componente que será invocado en la ejecución del programa, es suficiente para utilizar un componente que se ha descargado desde Internet pudiendo ahorrarse horas de programación en generar códigos que pueden compartirse fácilmente, aún cuando el lenguaje de programación sea completamente distinto al lenguaje del programa que invoca el componente.

Para el Iseries, se reproduce el mismo concepto de trabajo con componentes a través de los módulos desarrollados en un ambiente ILE (Integrated Lenguaje Enviroment). Desde un ILE RPG podemos invocar procedimientos en Cobol, Java, C y cualquier otro lenguaje de programación. De hecho para el trabajo con Sockets y programas de envío y recepción de ráfagas de datos desde el Iseries hacia Windows, se invocan procedimientos pre-programados en la librería QSYS del Sistema Operativo del Iseries que están desarrollados en lenguaje C.

Un programa ILE se compone de Módulos que a su vez están conformados por Procedures (Procedimientos). Los procedimientos son un conjunto de sentencias en lenguaje de alto nivel que cumplen con una tarea o función específica. Lo que antes eran rutinas clásicas como el cálculo del día de la semana para una fecha, el cálculo de una curva de Gauss, la validación de una fecha, etc. Pueden ser concebidas como procedures dentro de módulos que son invocados y enlazados con programas ILE, COBOL, C JAVA o cualquier otro. Un módulo está constituido por unos o varios procedures.
Un módulo se compila con el comando CRTRPGMOD, (opción 15 si estas en strpdm), y genera un objeto no ejecutable. Es posible acceder la data, o los procedimientos que tiene un módulo. Las palabras claves EXPORT e IMPORT permiten a los programas “ver” los procedures o variables que conforman el módulo. Cuando en un módulo se define un código como de “exportación” se toma como una definición de acceso público. Cuando se define un código de tipo Import se denomina al código importado como una “referencia”. Es decir el módulo también puede “importar” información de otro módulo.


En este ejemplo la variable VARX es exportable a otro módulo. El espacio de memoria es asignado a tiempo de ejecución en este módulo puesto que aquí se origina su definición.

    d VarX            S              5p 0 Export   Inz(3)
     c     VarX          dsply                   DUMMY               1
     c                   callb     'EXP_IMP1'
     c     VarX          dsply                   DUMMY              
     c                   return

 Fíjense que no estamos pasando la variable VArX como parámetro pero al estar los módulos compilados en forma enlazada el módulo EXP_IMP1, importa la variable como una variable de uso público, cambia su valor y con un dsply podemos ver el valor que retorna luego de la llamada.

En este otro ejemplo la variable VARX es importada de otro módulo. No  se asigna memoria a tiempo de ejecución en este módulo, aunque se declare su tipo y longitud.
Supongamos que este código corresponde al módulo EXP_IMP1 del ejemplo anterior.

     d VarX            S              5p 0 Import
     c     VarX          dsply                   DUMMY               1
     c                   z-add     77            VarX
     c     VarX          dsply                    DUMMY               
     c                   return

La variable DUMMY  es una variable local a cada módulo.

En el siguiente artículo seguiremos hablando de los Módulos, Procedures y su uso.
Pueden consultar este link sobre las recomendaciones  de Bryan Meyer para convertir una programación que no utiliza módulos en una programación con módulos, entre otras cosas.



Autor: Ing. Liliana Suárez.

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

No comments: