En el código nada hace pensar que acabará pasando lo que comentas. Lo único que se me ocurre que está pasando es que cuando llamas a SRVPGML0_update estás pasando en el parámetro Ds_UpdRec
una Ds que se actualiza cuando se hace el chain. Puedes probar a ver si definiendo el parámetro
Ds_UpdRec con la palabra clave value ya no te pasa esto.

Por cierto, si solo gastas Anterior para definir en base a ella otras DS's, no creo que la necesites. Puedes definirlas en su lugar como likeds(Actual), y sus valores no se modificarían al hacer el chain, ya que al definirlas con likeds asumen por defecto la palabra clave QUALIFIED, y tampoco se modificará su valor al hacer el chain.

Por cierto, ¿Has probado a hacer las operaciones de archivo directamente sobre DS's ?. Por ejemplo:

chain clave fichero ds;
ds.campo1 = 3;
update fichero ds;

Para este caso, definirías ds de la siguiente forma:

     D DS            E DS                  extname(fichero: *input) qualified     

La palabra clave qualified no es imprescindible, pero en mi opinión es muy util para forzar la referencia a los campos de la ds con el formato ds.campo.

Saludos.

Fernando Pérez 

Cerámica Saloni. Dpto. Auditoría y Organización



Jaime Villa Torres escribió:
Señores, les presento el siguiente problema con ds sobre registros de archivo, utilizadas en srvpgm,.. esperando, de vuestra sabiduria.
 
En el copy del proto se presenta lo siguiente.(apartes del mismo)
 
d Actual        e ds                  extname(SRVPGML0)            
d Anterior      e ds                  extname(SRVPGML0) prefix(n_) 
 
 *                                                     
d SRVPGML0_update...                                   
d                 pr                                   
d W_CAMPO01                        Like(n_CAMPO01)  
d Ds_UpdRec                           LikeDs(Anterior) 
d IndUpdate                       n                    
 
Este es el procedimiento para actualizar el archivo
Ingresa el campo llave y en Ds_Updrec, lo nuevos valores del registro
 

 *** Actualizar registro del  archivo                
p SRVPGML0_update...                                 
p                 b                   export         
d SRVPGML0_update...                                 
d                 pi                                 
d W_CAMPO01                        Like(n_CAMPO01)
d Ds_UpdRec                           LikeDs(Anterior)
d IndUpdate                       n                  
 *                                                   
 *** Llave del proceso                               
c     KFile         KList                            
c                   KFld                    W_CAMPO01
 *                                                   
 /Free                                               
   IndUpdate = *Off;                                 
   Chain KFile SRVPGML0;                             
   If %Found(SRVPGML0);                              
    Actual = Ds_UpdRec;                              
    Update RSrvPgmF;                                 
    IndUpdate = *On;                      
   EndIf ;                                
 /End-Free                                
p SRVPGML0_update...                      
p                 e   
 
El problema radica, cuando realizo el chain, la ds Ds_UpdRec, toma los valores del chain y se pierden los originales, realmente no entiendo ya que los campos correpsondientes a Ds_UpdRec tienen el prefijo n_, como lo demuestra la linea de definición de la ds llamada Anterior.
 
Si alguno de ustedes tuvo este problema, espero de su ayuda                   

__________________________________________________ Forum.HELP400 es un servicio más de NEWS/400. © Publicaciones Help400, S.L. - Todos los derechos reservados http://www.help400.es _____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400
begin:vcard
fn;quoted-printable:Fernando P=C3=A9rez
n;quoted-printable:P=C3=A9rez;Fernando
org;quoted-printable:;Auditor=C3=ADa y Organizaci=C3=B3n
email;internet:[EMAIL PROTECTED]
tel;work:Ext. 627
x-mozilla-html:TRUE
version:2.1
end:vcard

__________________________________________________
Forum.HELP400 es un servicio más de NEWS/400.
© Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________

Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400

Responder a