Hola foro
Alguna vez hice un desarrollo muy similar al que se esta mostrando donde se 
utiliza dos archivos con la misma estructura y los mismos campos y lo que hice 
fue utilizar estructura de datos y renombrar los campos este es un ejemplo:
fARCHIVO01 if   e             disk    infds(RRN) rename(REG01R:PREG01R)         
*                                                                             
fARCHIVO02 uf a e           k disk    prefix($:1)                              
 *--------------------------                                           * 
Definición de Estructuras                                           
*--------------------------                                          
dPARCHIVO02     e ds                  extname(ARCHIVO02) prefix($:1)  
dPARCHIVO01     e ds                  extname(ARCHIVO01)              
/free          setll *star ARCHIVO01;               read ARCHIVO01;             
          // *                                        dow not %eof(ARCHIVO01); 
// *                                  // * Verifica si existe el registro   // 
*                                         setll CAMPKY ARCHIVO02;            // 
*                                         if %equal(ARCHIVO02);                 
       reade CAMPKY ARCHIVO02;            // *                                 
if not %eof(ARCHIVO02); // * Inicializa los campos             PARCHIVO02 = 
PARCHIVO01;             update REG01R;          endif;                          
         else;                                        clear PARCHIVO02;         
                 eval  PARCHIVO02 = PARCHIVO01;             write REG01R;       
                  endif;                             // *                   
read ARCHIVO01;     enddo;           // *                 *inlr = *on;      
/end-free           




To: [email protected]
Subject: RE: mover registro entre 2 ficheros
Date: Thu, 20 May 2010 16:17:29 +0200
From: [email protected]

Si, ya he hecho el debug. Todo lo hace
perfecto excepto eliminar el registro del fichero viejo. Pasa por la sentencia
y no da ningun error. He hecho una prueba poniendolo como input primary
y sólo ejecuta una vez(el primer registro) y acaba. Es como si al poner
la DS con el formato del fichero viejo, se hiciera un lio, y lo que estuviera
eliminando es el registro de la DS, porque he hecho otra prueba, en vez
de DELETE hago una actualizacion del fichero viejo, y me duplica los registros
en el viejo.










Carlos Pedrozo <[email protected]>


Enviado por: [email protected]
20/05/2010 16:03



Por favor, responda a

"forum.help400" <[email protected]>







Para
<[email protected]>


cc



Asunto
RE: mover registro entre 2 ficheros













 

podrias fijarte el tema de prefijo que utilizas y el Chain en tu clave.

 

Saludos



 


To: [email protected]

Subject: mover registro entre 2 ficheros

Date: Thu, 20 May 2010 11:01:12 +0200

From: [email protected]



Hola Foro. Tengo un problema en lo que técnicalente sería 'mover' un registro
entero entre dos ficheros. Me explico:


tengo el fichero A con su registro y quiero copiarlo en el fichero B que
es exactamente igual, excepto el ultimo campo, y luego eliminarlo del A.


He definido el programa de la siguiente forma que veis abajo, pero el caso
es que lo copia bien, pero no me borra el registro del primer fichero,
y no me da errores.  Cómo lo puedo hacer?


Gracias 

 Farqtdatmp UF   e           K disk  
 Rename(Rarqtdatmp:Rviejo) 

 Farqtda    UF A e           K disk
                     
        

 D RegistreTMP   e DS              
   Extname(arqtdaTMP)        


 D Registre      e DS          
       Extname(arqtda) Inz       

 D                    
                Prefix(NW)  
             


  *                  
                     
                     


  /Free                  
                     
                 


     Setll *start Arqtdatmp;          
                     
    

     Dow not %Eof(Arqtdatmp);          
                     
    

     Read Arqtdatmp;            
                     
          

        If %Eof(arqtdatmp);        
                     
        

            Leave;        
                     
                

        Endif;            
                     
                

        Exsr Srproces;        
                     
            

     Enddo;              
                     
                 


   *inlr=*on;                
                     
             


                    
                     
                     
 

   Begsr Srproces;              
                     
          

     Chain (aqemp:aqten:aqanys:aqset:aqmes:aqdia) Arqtda;  
    

     If Aqevento='2';//Elimino          
                

        If %Found;          
                     
      

            Delete Rarqtda;    
                     
    

        Endif;            
                     
        

     Else;//Afegeixo o actualitzo        
               


            Registre=Registretmp;  
                     


        If Not %found;        
                     
    

            Write Rarqtda;    
                     
    

        Else;            
                     
          

            Update Rarqtda;    
                     
    

        Endif;            
                     
        

     Endif;              
                     
          

     Delete Rviejo;            
                     
    

   Endsr;                
                     
          

  /end-free                
                     
          


Hotmail: Trusted email with powerful SPAM
protection. Sign
up now.____________________________________________________

Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd
)

Forum.Help400 © Publicaciones Help400, S.L.

                                          
_________________________________________________________________
Hotmail: Trusted email with powerful SPAM protection.
https://signup.live.com/signup.aspx?id=60969
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a