Fernando, muchas gracias por tu tiempo, revisaremos tus consejos
----- Original Message -----
From: Fernando Pérez
To: forum.help400
Sent: Thursday, November 20, 2008 3:30 AM
Subject: Re: Problema con LIKEDS en SRVPGM
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
------------------------------------------------------------------------------
__________________________________________________
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__________________________________________________
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