Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.
The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.
Hola Estimados, 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".