Title: RE: Variables Varying
Eval %subst(TramaXml:1:%len(TramaXmlS)) = %trim(TramaXmlS) + ...
Esta solución ya fue probada, pero indica error de longitudes, no es claro el mensaje, puede ser del segundo factor, desde, o del tercero, longitud.

%subst(TramaXml:3)

 Si se requiere que empiece desde la 3

%trim(TramaXmlS)

Gracias por tu aclaración.

----- Original Message -----
Sent: Monday, August 07, 2006 2:41 AM
Subject: RE: Variables Varying

    -----Mensaje original-----
    De:     [EMAIL PROTECTED] [SMTP:[EMAIL PROTECTED] En nombre de Jaime Villa Torres
    Enviado el:     lunes, 07 de agosto de 2006 8:28
    Para:   [email protected]
    Asunto: Variables Varying

    Señores, algo curioso, tengo lo siguiente.
     
    d TramaXml        s          32767    Varying
    d TramaXmlS      s                       Like(TramaXml) inz
     
    Cuando se recibe la TramaXml tiene una longitud de 5842
     
    Se lee la TramaXml, de acuerdo a las necesidades se agregan algunos valores, pero esto se realiza en la TramaXmlS, esta termina con una longitud de 6206


    luego se realiza la siguiente operación
    c                   Eval      %subst(TramaXml:3) = %trim(TramaXmlS)       +
    c                                                                 '</SERS>'                   +
    c                                                                 '</PV>'                        +
    c                                                                 '</DOMI>' 

     
    Cuando se mira el valor de la TramaXml, tiene el valor de la TramaXmlS, pero únicamente hasta la posición que llego inicialmente, o sea hasta 5842, de ahí hasta los 6206 esta vacia...

    ¿Por qué no empleas este otro método? Por probar,

    Eval %subst(TramaXml:1:%len(TramaXmlS)) = %trim(TramaXmlS) + ...

    Te recuerdo que cuando se emplea VARYING, lo que se le está indicando al compilador es que la variable es de longitud variable. La longitud se guarda en la misma variable, pero es totalmente transparente al RPG. Por tanto no es correcto hacer

    %subst(TramaXml:3)

    a no ser que quieras empezar en la posición 3 de la cadena. Y tampoco es necesario

    %trim(TramaXmlS)

    porque la variable ya es VARYING gracias a la palabra clave Like(...).
     
    Si hay consejos de cambiar el atributo Varying, imposible, esto llega desde un socket.
     
     
    Alguna sugerencia al respecto.

    Espero que te sirva de alguna ayuda.

        Un saludo,


        Javier Mora
        Dpto. Informática
        Dialsur S.A.U.


Responder a