Escolar Documentos
Profissional Documentos
Cultura Documentos
ILE, por otro lado, requiere un proceso de dos pasos para crear programas. Los
miembros de origen se compilan primero en objetos tipo módulo (tipo *
MOD). Para RPG, se utiliza el comando CRTRPGMOD (crear módulo RPG) o la
opción 15 de PDM. Los módulos pueden considerarse subprogramas. Son
códigos de máquina validados y compilados, pero no son ejecutables. Uno o más
módulos deben vincularse a un programa ejecutable mediante el comando
CRTPGM (crear programa) (figura 2).
Por otro lado, si el programa es ILE, los miembros de origen no están asociados
directamente a un programa. En su lugar, un miembro de origen se utiliza para
crear un módulo, y uno o más módulos se utilizan para crear un
programa. Mostrar los atributos de un programa muestra, entre otras cosas, los
módulos utilizados para crear el programa. Al mostrar los atributos del
módulo (todo esto se puede hacer a través del comando WRKPGM) podemos
determinar la información de la fuente. Tenga en cuenta que debemos pasar por
este paso adicional porque un programa ILE en realidad puede crearse a partir
de varios miembros de origen.
Toda esta información se cubre con mucho más detalle en la sección ILE. Ahora
que tiene una comprensión decente de las diferencias entre OPM. El siguiente
paso es familiarizarse con las diferencias de lenguajes entre RPG III y RPG IV.
ILE Significa llamada estática, los programas obtienen toda la información sobre
el programa llamado en el momento de la compilación. Es el proceso
vinculante. Luego, en el tiempo de ejecución, la llamada es más eficiente que el
antiguo método de llamada dinámica utilizado por OPM. OPM se ejecuta en el
Grupo de activación predeterminado y los programas ILE en uno diferente que
podría ser *NEW, QILE (Grupo de activación genérico para ILE), o cualquiera
que sea el nombre que desee.
El código RPG / 400 se puede convertir en código RPG IV con un solo comando.
Hoy en día, el código RPG IV se puede escribir en dos formatos, formato basado
en columnas fijas que es como RPG/400 y un diseño de formato libre. Desde su
inicio, RPG IV ha tenido la adición de muchas características nuevas. Algunos
códigos RPG/400 no se pueden traducir al formato Libre, pero el código de
formato libre y fijo puede existir en un solo archivo.
Parámetro MODULE, aquí el nombre del módulo, o módulos que van a formar
el programa de servicio. En este caso FUNDMYAISO.
Parámetro TEXT texto para identificar que hace este programa de servicio.
EXPORT SYMBOL(FUNDMYAISO)
ENDPGMEXP
Aquí iremos añadiendo líneas EXPORT por cada módulo que añadamos al
programa de servicio, antes lógicamente de hacer el CRTSRVPGM.
Hay que utilizar la instrucción CRTBNDDIR SRAGM para crear la lista, y luego
el mandato WRKBNDDIR SRAGM para añadir las dependencias, que en este
ejemplo sería:
Puedes buscar el acrónimo en cualquier libro de Ibm pero creo que eso no es lo
interesante. Desde mi punto de vista, ILE es una estrategia de diseño de
aplicaciones. Para que sea útil debe estar concebido en el momento del diseño.
En este primer artículo trataré los conceptos que dan forma a ILE y en sucesivos
artículos indicaré la estrategia de diseño que he adoptado con el objetivo de
facilitar el desarrollo de aplicaciones y mejorar el mantenimiento de aplicaciones.
Componente
Un componente serían unas líneas de código (en general relativamente pocas)
que realizan una funcionalidad concreta. Por ejemplo, calcular una determina
tasa asociada a un importe.
Permite recibir un conjunto de parámetros de entrada y permite,
opcionalmente, devolver un conjunto de parámetros de salida.
Ejemplo de código de componente que recibe dos parámetros y devuelve como función un valor.
PCalculaTasa B
DCalculaTasa PI 15 4
D Importe 15 2 Const
D Pais 3 Const
D W_Tasa S 15 2
/Free
//Calcula los impuestos
Select;
When Pais = 'ESP'; // España
W_Tasa = Importe / 12;
Other; // Para cualquier otro pais
W_Tasa = Importe / 10;
EndSl;
Return W_Tasa;
/End-Free
P E
Ejemplo de prototipo
PCalculaTasa B
DCalculaTasa PI 15 4
D Importe 15 2 Const
D Pais 3 Const
PCalculaTasa B Export
Función y procedimiento
PCalculaTasa B
DCalculaTasa PI 15 4
D Importe 15 2 Const
D Pais 3 Const
D W_Tasa S 15 2
/Free
...
Return W_Tasa;
/End-Free
P E
Ejemplos de uso de la función desde cualquier proceso
PCalculaTasa B
DCalculaTasa PI
D Importe 15 2 Const
D Pais 3 Const
D Tasa 15 2
/Free
//Calcula los impuestos
Select;
When Pais = 'ESP'; // España
Tasa = Importe / 12;
Other; // Para cualquier otro pais
Tasa = Importe / 10;
EndSl;
/End-Free
P E
Parámetros
Siguiendo el ejemplo, supongamos que ahora hay una nueva versión del
componente que permite recibir un descuento para el cálculo de la tasa pero
hay mucho programas que lo utilizan que deberían seguir comportándose igual
y sin cambiarse.
PCalculaTasa B
DCalculaTasa PI 15 4
D Importe 15 2 Const
D Pais 3 Const
D W_Tasa S 15 2
D W_Descuento S 15 2
/Free
If %PARMS>=3;
w_Descuento = Descuento;
Else;
w_Descuento = *Zeros;
EndIf;
//Calcula los impuestos
Select;
EndSl;
Return W_Tasa;
/End-Free
P E
Las llamadas antiguas seguirán funcionando perfectamente sin tener que modificar el código.
Módulo
Es un objeto compilado en el sistema operativo (*MODULE). Resulta de la
compilación de un fuente de un lenguaje determinado y preparado para ILE
(Rpg, Cobol, Cl, etc.)
Un módulo en sí mismo NO es ejecutable. Se utiliza para recopilar una o varias
funcionalidades en una fuente. Un módulo puede "llamar" a otro modulo. Utilizo
los módulos para:
Programa de Servicio
Las ventajas adicionales que tienen los programas de servicio es que, con cierto
cuidado, se puede modificar el código e incluso incluir nuevos componentes ¡sin
tener que compilar los programas donde ya se está utilizando!
Los programas de servicio tienen una especie de lvlchk
denominado signature que identifica una determinadas características que tenía
el programa de servicio cuando se creó. Además, un programa de servicio puede
(a través de un lenguaje especial Binder) almacenar todas las signatures de las
diferentes características por las que ha ido cambiando el programa de servicio.
Cuando se ejecuta un programa que tiene asociado un programa de servicio, lo
primero que se revisa es que la signature que tiene almacenada el programa con
referencia al programa de servicio está entre las signature que tiene el programa
se servicio. En caso contrario, dará error y no se ejecutará el programa. Lo que
significa esto es que la revisión de los componentes incluidos en un programa
se servicio que son utilizados por un programa se realiza en tiempo de
ejecución.
Programa
A tener en cuenta
Después de explicar lo que son cada una de las partes que componen ILE es
necesario recordar las siguientes características: