Bienvenidos a Iseries Venezuela

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.

Sunday, January 15, 2017

Manejar Montos como elementos de un Arreglo en RPGLE -FREE

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


                                                                                                                                                                                                                                                                
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: