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.

lunes, 9 de noviembre de 2009

Occur para actualizar archivos

      

En el siguiente código de programación vemos el uso del Occur para actualizar un archivo. Puede apreciarse que ya no es necesario el uso de variables de trabajo utilizadas como campos en la pantalla para guardar los valores modificados por el usuario. 


     f*************************************************************
     f*************************************************************
     fArchivo   uf   e           k Disk
     FArchidsp  cf   e             WORKSTN
     d*************************************************************
     d* Variables, Estructuras, Arreglos                          *
     d*************************************************************
     dDSARCHIVO      E DS                  EXTNAME(ARCHIVO)
     d                                                        Occurs(2)
     dINDICE           s              1s 0
     c*************************************************************
     c* Rutina Principal                                          *
     c*************************************************************
     c
     c*
     c                   Eval      Indice  = 1
     C     Indice        occur     DSARCHIVO
     c     Clave      chain(n)  archivo
     c                   Exfmt     FMT1
     c*                  Exsr      validar
     c*
     c*                  if        okey
     c                   Eval      Indice = 2
     C     Indice        occur     DSARCHIVO
     c     Clave     chain     archivo
     c*
     c                   if        %found
     c                   Eval      Indice = 1
     C     Indice        occur     DSARCHIVO
     c                   update    rarchi
     c*                  endif
     c*
     c                   endif
     c
     c                   Seton                                        Lr



Si declaramos dos ocurrencias sobre una DS que está asociada a la descripción externa del archivo que queremos actualizar, se hace innecesario declarar tantas variables auxiliares como campos tiene el archivo.
Cuando nos posicionamos en el indice = 1, inicialamente cargamos, en esta ocurrencia, los valores del archivo. Luego  el usuario altera los campos de pantalla con los valores que desea modificar. Con este procedimiento podemos declarar los campos en pantalla con los mismos nombres que tienen los campos en el archivo.Como seguimos posicionados en el Indice = 1, los cambios son realizados sobre esta ocurrencia de la DS del archivo.  Antes de  hacer un segundo chain sobre el archivo, nos posicionamos en la segunda ocurrencia con Indice = 2, para que los valores  leídos del archivo se carguen sobre esta ocurrencia de la DS y no altere los cambios que el usuario realizó en pantalla. Finalmente antes de realizar el UPDATE, nos volvemos a posicionar en el Occur con indice = 1 a fin de  rescatar los valores que queremos grabar y  realizar los cambios que el usuario está solicitando.


Si te pareció interesante, reenvialo 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 hay comentarios: