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

Responder a