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.

Monday, February 22, 2010

Declaración múltiple de un archivo en un CLP.












Es posible manejar múltiples instancias de un mismo archivo en un CLP. El límite de instancias es cinco. Es decir, podemos declarar cinco veces el mismo archivo en un programa CLP indicando distintos OPNID en sus declaraciones respectivas.

En el código que muestro a continuación pueden ver el mismo archivo declarado dos veces con distinto OPNID.

Cuando se va a leer información de un archivo es necesario realizar un OPNDBF antes del comando de lectura RCVF. El OPNDBF debe tener especificado el OPNID que identifica la instancia del archivo que va a ser aperturado.
El código de ejemplo que les presento a continuación trata de un programa que maneja

   Inicio:      PGM        

/*El mismo archivo declarado dos veces con distintos OPNID */
                                                                             
DCLF       FILE(LIBRERIA/ABAPF004) RCDFMT(ABARC004) +                                           
     OPNID(ABAPF)                                                                          
 DCLF       FILE/(LIBRERIA/ABAPF004) RCDFMT(ABARC004) +                                           
     OPNID(ABAnue) 
                                                                       
  OPNDBF     FILE(LIBRERIA/ABAPF004) OPTION(*ALL) +                                               
  MBR(*FIRST) OPNID(ABAPF) ACCPTH(*FILE)     
                                         
   RCVF       RCDFMT(ABARC004) OPNID(ABAPF)                                                           
   CLOF       OPNID(ABAPF)      
   ADDPFM     FILE(LIBRERIA/ABAPF004) MBR(NUEVO) +                                                  
   SHARE(*YES)                                                                            

   CPYF       FROMFILE(LIBRERIA/ABAPF004) +                                                            
                 TOFILE(LIBRERIA/ABAPF004) TOMBR(NUEVO) +                                             
                  MBROPT(*ADD) FROMRCD(1) TORCD(1)                                                       
                                                                                                                       
   OPNDBF     FILE(LIBRERIA/ABAPF004) OPTION(*ALL) +                                                 
                      MBR(nuevo) OPNID(abanue) ACCPTH(*FILE)                                                 
                                                                                                                       
   OVRDBF     FILE(ABAPF004) TOFILE(LIBRERIA/ABAPF004) +                                             
                      MBR(NUEVO) POSITION(*START) SHARE(*YES)                                                
                                                                                                                       
     RCVF       RCDFMT(ABARC004) OPNID(ABANUE)    
                                                      
     MONMSG     MSGID(CPF0864) EXEC(GOTO FIN)     
                                            
                                                                                          
     CLOF       OPNID(ABAnue) 

   FIN: ENDPGM  

Autor: Ing. Liliana Suárez.

Si te pareció interesante el artículo reenvíalo a un amigo, haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


No comments: