Un cordial saludo comenzando el año 2017, con mis mejores deseos para todos.
Recientemente recibí por correo una pregunta relacionada con la necesidad de manejar los montos de un archivo como si fueran elementos de un arreglo en RPG-Free.
Es realmente incomodo escribir algo como esto:
Monto1 = Monto1 + variablex
Monto2 = Monto2 + variablex
.
.
.
Monto12 = Monto12 + Variablex
Estas preguntas relacionadas con el manejo de montos, surgen a fin de año o a comienzo de un nuevo año donde es necesario generar reportes contables de los saldos de determinadas cuentas o de saldos de ciertas operaciones financieras de la empresas cuyo ejercicio ha sido almacenado en 12 campos dentro de un archivo.
En RPG III se utiliza la hoja 'I' para "redenominar" los campos como elementos de un arreglo. Con RPG-Free es mucho mas sencillo.
Supongamos que tenemos un archivo llamado ARCMTOS con los siguientes campos:
Colocamos un campo CLAVE de 4 posiciones y luego los 12 montos para cada
mes del año:
*
*
* MONTOS
*
A R REGIS TEXT('MONTOS')
A CLAVE 4S 0 COLHDG('CLAVE')
A MONTO1 15S 2 COLHDG('MTO1')
A MONTO2 15S 2 COLHDG('MTO2')
A MONTO3 15S 2 COLHDG('MTO3')
A MONTO4 15S 2 COLHDG('MTO4')
A MONTO5 15S 2 COLHDG('MTO5')
A MONTO6 15S 2 COLHDG('MTO6')
A MONTO7 15S 2 COLHDG('MTO7')
A MONTO8 15S 2 COLHDG('MTO8')
A MONTO9 15S 2 COLHDG('MTO9')
A MONT10 15S 2 COLHDG('MTO10')
A MONT11 15S 2 COLHDG('MTO11')
A MONT12 15S 2 COLHDG('MTO12')
A K CLAVE
En RPGLE-FREE se resuelve este requerimiento manejando las estructura de Datos en la hoja 'D'
******************************************************************
* PROGRAMA RPGMTOS
******************************************************************
FArcmtos IF E K DISK
D*
D*Estructura de Datos
DDsmontos E DS extname(Arcmtos)
D Mat_Mtos 15S 2 Dim(12)
D overlay(Dsmontos:5)
D* Hace un overlay de los montos desde la posicion 5
del archivo fisico
D* ya que las 4 primeras posiciones las ocupa la clave
/free
setll *loval Arcmtos;
Read Arcmtos;
//suma 1 al primer elemento del arreglo
Mat_Mtos(1) +=1;
*inlr = *on;
/end-free
Como pueden ver este manejo es mucho mas sencillo. Obviamente un campo de monto no es clave. Por lo que en general hay unos o mas campos definidos en el archivo antes de definir los campos de monto. De allí la observación de realizar un Overlay en este ejemplo a partir de la posición 5.
Este ejemplo es muy obvio, sin embargo en otros casos puede haber campos empaquetados o campos de fecha, hora, cuya longitud no es tan evidente. Si tienes duda de a partir de cual posición realizar el overlay, coloca un DSPFFD de tu archivo y verás la posición de inicio de almacenamiento donde comienza el primer campo de monto. De allí en adelante, "es pan comido".
En este enlace pueden descargar el código fuente del archivo y de su RPGILE-Free correspondiente.
Fuentes para Descargar. Manejo de Montos con Arreglos
Si te pareció interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.
Autor: Ing. Liliana Suárez
No comments:
Post a Comment