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.