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
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
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.