Hola Javier,

Pos zi, funciona con 30, pero lo que no entiendo porque no funciona con 256
que el el valor maximo que esta definido en el RGLE:
 envvar                      256A

Si hacemos un dump cuando falla veremos que la variable &ENVAR que recibe,
si es de long. 256, contiene cerros a partir de la posicion 33 (ver imagen)
y supongo que eso es lo que me hace fallar el programa.

A mi ya me sirve tu solucion ya que yo solo voy un string y no una variable
cpara pasarle el paramentro, pero entiendo que es mejor limitar al maximo la
variable que se le envia.

Gracias y Saludos

Martí Riera


2009/5/21 Javier Mora <[email protected]>

>  Hola de nuevo:
>
> Efectivamente, el problema está en tu CL. Fíjate que el parámetro lo
> defines de 256, lo que te obliga a pasar una variable de 256 bytes.
>
> He cambiado el programa y he dejado el parámetro en 30 bytes y ¡funciona!.
> Cuando el parámetro es menor o igual de 30 bytes el sistema no te obliga a
> pasar los 30 bytes.
>
> No sé si me he explicado bien.
>
> Un saludo.
>
> Javier Mora
>
>  ------------------------------
> *De:* [email protected] [mailto:
> [email protected]] *En nombre de *Marti Riera
> *Enviado el:* jueves, 21 de mayo de 2009 17:50
> *Para:* forum.help400
> *Asunto:* Re: Mandato RTVENVVAR
>
> Alex, Javier,
>
> Gracias por la informacion.
>
> Javier: El codigo que me has enviado lo tenemos igual, bueno lo revisare
> con lupa.
>
> De momento ya he descubierto algo, el programa de test que habia enviado
> estaba simplificado, he probado ese programa y tambien me funciona. Ahora os
> envio el que no me funciona, es casi igual pero...
> PGM        PARM(&ENVVAR)
> DCL        VAR(&ENVVAR) TYPE(*CHAR) LEN(256)
> DCL        VAR(&VALUE) TYPE(*CHAR) LEN(4096)
> RTVENVVAR  ENVVAR(&ENVVAR) RTNVAL(&VALUE)
> SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA(&VALUE)
> ENDPGM
> Con lo cual ya intuyo cual es el problema el paso de parametros entre el CL
> de prueba y el comando, ya que si pongo el nombre de la variable "hardcode"
> si funciona.
>
> Bueno mañana le doy la vuelta definitiva y os digo.
>
> Saludos
>
> Martí Riera
>
>
> 2009/5/21 Javier Mora <[email protected]>
>
>>  Hola Martí:
>>
>> Yo al probar esta utilidad también me encontré con problemas parecidos,
>> pero creo recordar que estaban relacionados con variables de entorno del
>> trabajo o del sistema. Rebuscando encontré el problema y los fuentes que
>> solucionaban ese bug.
>>
>> Te los envío. He probado tu ejemplo y funciona. Dime si se siguen
>> reproduciendo los problemas en tu caso.
>>
>> Un saludo.
>>
>> Javier Mora
>>
>>  ------------------------------
>> *De:* [email protected] [mailto:
>> [email protected]] *En nombre de *Marti Riera
>> *Enviado el:* jueves, 21 de mayo de 2009 14:04
>> *Para:* Forum.Help400
>> *Asunto:* Mandato RTVENVVAR
>>
>>  Hola,
>>
>> Llevo un dia un poco espeso intentando hacer funcionar este comando bajado
>> de la web:
>> http://code.midrange.com/759f4f422d.html
>>
>> Hay una explicacion mas larga en:
>> http://www.mcpressonline.com/programming/rpg/what-is-the-environment.html
>>
>> Lo que trato de hacer es recuperar facilmente una variable de entorno
>> dentro de un programa CL.
>> Ya os digo que el dia que dieron RPG ILE no fui, ja, ja !!
>>
>> Curiosamente he hecho un programa de test par aprobarlo y si lo ejecuto
>> tal cual no funciona no devuelve nada:
>> PGM
>> DCL        VAR(&VALUE) TYPE(*CHAR) LEN(4096)
>> RTVENVVAR  ENVVAR('LANG') RTNVAL(&VALUE)
>> SNDPGMMSG  MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA(&VALUE)
>> ENDPGM
>> Pero si ejecuto un strisdb del programa rpg a partir de ese momento si
>> devuelve el valor, por ejemplo de LANG que es por omision en todos los
>> sistemas:
>> /QSYS.LIB/EN_US.LOCALE.
>> Podeis ver la variables de entorno con WRKENVVAR.
>>
>> Alguna pista de que estoy haciendo mal?
>>
>> Gracias y saludos
>>
>> Martí Riera
>>
>> __________________________________________________
>> Forum.HELP400 es un servicio m&amp;#225;s de ServerNEWS.
>> &amp;#169; 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&amp;#225;s de ServerNEWS.
> &amp;#169; 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
>

<<attachment: ENVVAR.gif>>

__________________________________________________
Forum.HELP400 es un servicio m&amp;#225;s de ServerNEWS.
&amp;#169; 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