La culpa fue del spectrum

La culpa fue del spectrum

sábado, 31 de marzo de 2012

Crear y usar procedimientos (funciones) en ILERPG

Hace ya mucho que el ILE apareció, casi tanto como años llevo programando en RPG y ya son algunos.
Aunque siempre he tenido interés por utilizar las ventajas del ILE, he de reconocer que  he tenido varios problemas para aprovecharlos, uno de ellos es la utilización de programas de servicio. Puede costar hacerse con su funcionamiento, aquí intentare explicar como podemos crear funciones que iremos añadiendo a un programa de servicio y después usaremos desde nuestros programas como si fueran funciones que ya incorpora el lenguaje, por ejemplo %char, %len, etc...

En esta entrada voy a ir construyendo un pequeño módulo que transforme una fecha recibida en un campo numérico de formato día, mes, año (010212) a un formato *ISO año, mes, día.  (20120201).

Definición de la hoja H.

En la hoja H además de las definiciones que se utilicen normalmente hay que añadir NOMAIN

Hoja D

Aquí primero definimos el prototipo de la función.
D FUNDMYAISO    PR     8P 0
                                       6P 0
Después definimos el comienzo del procedimiento (función).
D FUNDMYASIO    B

Ahora la interfaz de entrada del procedimiento, aquí definimos los parámetros de entrada si los tiene.
D FUNDMYAISO    PI      8P 0
               eFECHA6         6P 0

Aquí defino la variable donde voy a guardar el valor que devuelvo en la función. 
D FECHA8             S       8P 0

Código en FREE RPG, si alguien esta en una versión que permite usarlo, que lo use, es maravilloso.


/FREE
FECHA8=%DEC('20'+%SUBST(%EDITC(eFECHA6:'X'):5:2)+
                %SUBST(%EDITC(eFECHA6:'X'):3:2)+
                %SUBST(%EDITC(eFECHA6:'X'):1:2):8:0);
RETURN FECHA8;
/END-FREE

Definimos el final del procedimiento (función) todo el código deber de ir antes de esta línea.
P                 E

Este código es muy mejorable, faltan por controlar opciones, pero nos sirve perfectamente para explicar lo que quiero.

Salvamos el fuente y compilamos con la opción 15 (CRTRPGMOD) del PDM, para crear el módulo ILE.

Si nos compila de forma correcta tendremos un objeto que se llamará FUNDMYAISO del tipo *MODULE.

En la próxima entrada crearemos el programa de servicio que contiene este módulo.







Conduce entre la niebla

La culpa fue del spectrum