RPG | Report Program Generator
Esta entrada va dedicada a RPG, programa para la generación de reportes. (RPG, por sus siglas en ingles).
Un poco de su historia
Resulta que fue creado por IBM, haya por los años 1959. Su finalidad era la de generar informes o reportes de tipo comercial. Se adapto para la familia 1400 de los equipos de IBM, esto fue en 1960. Pero no fue sino hasta en 1964 que se lanza la versión oficial en una IBM360.
Fue actualizado, lo que propicio diferentes versiones del lenguaje. En sus últimas actualizaciones, es el RPG/IV en 1995, que fue disponible para equipos IBM de la familia AS/400. En el 2001 y con la aparición de la versión cinco del OS/400, surge una nueva modificación sobre el lenguaje, soportando a partir de ese momento la programación en formato “libre”, se desarrollan las funciones incorporadas que sustituyen a muchos de los antiguos indicadores y código de operación. Todas estas incorporaciones permiten que RPG se convierta en un lenguaje mucho mas legible, claro, flexible y moderno.
Caracteristica
- Orientado a la producción de informes.
- Realiza cálculos fácilmente.
- Emplea hojas de codificación diferentes para la descripción de ficheros, entrada de datos, salida de resultados, entre otros.
- Integración multilenguaje y multiplataforma como RPGLE, RPGE-FREE.
- Depende de la posición, es decir, cada entrada debe de iniciar en una columna específica.
- Tolerancia a mayúsculas o minúsculas con excepción de literales.
Definiciones propias de lenguaje
Especificación: está diseñada para manejar muchas necesidades por lo cual pueden parecer sobrecogedor, sin embargo en la práctica, en un programa solo se requiere utilizar un número pequeño de campos.
Especificación fuente: se define como un conjunto relativamente pequeño de declaraciones con especificaciones de formato rígido.
Ejemplo simple de uso de especificación en RPG:
H especificación de cabecera
F especificaciones de archivos
I especificaciones de entrada
O especificaciones salida
Col 1-5 : En toda especificación es usada para números de secuencia.
Col 6 : Tipo de especificación, por ejemplo H, F, I, O, entre otros.
Col 7 : En toda especificación puede contener * para designar comentario.
En el ejemplo anterior se puede observar que todas las especificaciones de un mismo tipo se procesan juntas y deben seguir un orden:
- Una especificación H.
- Una o mas especificaciones F (descripción de archivos).
- Las especificaciones que se requieran de acuerdo con el orden en que se definen en el siguiente cuadro.
Ejemplo de uso de RPG
Problema: El departamento de nóminas de una empresa pequeña desea crear una salida impresa que liste la paga de los empleados para aquella semana. Suponga que hay dos archivos en disco, EMPLEADO y TRANSACC en el sistema.
El primer fichero EMPLEADO, contiene los registros de los empleados, con los siguientes campos: emp_rec, emp_number, emp_name, emp_rate, emp_number.
En el segundo fichero TRANSACC, tiene el número de horas que trabajado cada empleado durante aquella semana, y la bonificación que pueda haber recibido el empleado, sus campos son: trn_tec, trn_number, trn_hours, trn_bonus.
La paga de cada empleado se calcula multiplicando las horas (del archivo TRANSACC) y la tarifa (del archivo EMPLEADO) y añadiendo la “bonificación” del fichero TRANSACC. Si se trabaja más de 40 horas, se paga al empleado 1.5 veces la tarifa normal. En la imagen 1 se puede ver el código completo que solventa la solución al problema planteado.
Conclusiones
Me recuerda a una solución de Microsoft, – aunque no sé si aún exista o se siga usando- el Cristal report, claro que por aquellos ayeres lo conocí para visual basic 6.0, según se podría interactuar con delphi. Pero RPG es muy demandado por sus propias características. Lo más interesante y me llama la atención es que a la fecha son pocos los desarrolladores que lo conocen o lo saben usar.
En la imagen 2 se puede observar la posición que ocupa el lenguaje RPG, en el índice tobie. que es la número 46, no esta el top 10 pero si en el top de los 50 lenguajes que se usan o demandan en la industria.
Lo llamativo es que es multiplataforma, a diferencia de otros generadores de reportes que son exclusivos de un sistema en particular, claro no hay que olvidar que RPG así nació pero sus actualizaciones lo han llevado a mantenerse entre la lista de los lenguajes demandados.
Esperemos poder postear en la próxima entrada la instalación de este lenguaje y un hola mundo.