El 20/05/10 11:01, albe...@arcadie.es escribió:
> 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                                                
>
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.
Yo no estoy en una versión tan moderna como la tuya ya que el *start no
puedo usarlo
Yo haría algo así

Setll *loval Rviejo;
Read Rviejo;
Dow not %eof;
          Exsr Srproces;
          Delete Rviejo;
          Read Rviejo;
Enddo;
El resto igual excepto que el Delete Rviejo lo he sacado fuera de Srproces
Un saludo.
____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a