Te cuento una historia:

El paso de parámetros entre programas se hace “por referencia”, es decir, en 
lugar de pasar el valor como tal lo que realmente hace el compilador es 
informar al programa llamado de la dirección de memoria de la variable (o 
valor) pasado. Esto no es evidente en los programas, porque lo que se aprecia 
en ellos es que estamos trabajando con variables.

En las llamadas “dinámicas” a programas no se realiza ningún tipo de chequeo en 
los tipos de los parámetros, es decir, yo puedo pasar una variable de tipo 
cadena en un parámetro numérico empaquetado. Nada ni nadie se dará cuenta, ni 
recibirás queja alguna.

Sólo cuando un programa utiliza una variable/parámetro numérico, si no está 
convenientemente codificado, se producirá un error.

Y aquí viene lo interesante, el programa llamado puede estar modificando el 
valor de una variable o parámetro y, de forma colateral, el contenido de otra 
variable que haya en las posiciones de memoria contiguas. Un caso muy sencillo: 
imagina que tu programa está esperando un campo alfanumérico de 10 posiciones, 
pero en realidad le pasas una variable de 5, cuando asignes cualquier valor al 
parámetro de 10 posiciones, estará cambiado el valor de las cinco primeras del 
parámetro pasado y los cinco bytes contiguos (que puede ser cualquier cosa), 
por ejemplo un campo numérico decimal con zona de dos posiciones.

Este es uno de los errores más difíciles de detectar porque te va a tocar 
revisar todos los parámetros, sus tipos, el orden y, sobre todo, cuando 
exactamente se cambia el valor del campo (que puede ser de forma indirecta). 
Esto último es lo más difícil.

Nuestros programa pueden (involuntariamente) modificar el valor de una variable 
sin hacer referencia a ella. Es más, en unas ejecuciones todo funciona y en 
otras no.

Esto es una verdadera historia de terror que yo he sufrido en mis propias 
carnes. ¡Menudo rollo para empezar el fin de semana!

Mira a ver si los tiros van por aquí. ¡Suerte!

Javier Mora

De: forum.help400-boun...@listas.combios.es 
[mailto:forum.help400-boun...@listas.combios.es] En nombre de Dpto. Informática 
(José Sánchez)
Enviado el: viernes, 1 de junio de 2018 17:07
Para: forum.help400
Asunto: RE: Error datos decimales

Me trae loco el tema….

Pasa por un CL anterior y creo que ahí pasa de Packed a decimal con zona, estoy 
investigando eso, que es mucho antes del pantallazo que mandé.

Lo que no entiendo es que con debug el valor es correcto en el primer call (no 
usa ese parámetro) y el breakpoint justo en el call del programa que falla ya 
está mal el valor.

Sino hay nada por en medio que modifique ese valor, ¿Dónde “leches“ ☺ está 
cambiando el valor?


José Sánchez
Dpto.Informática

Productos Climax, S.A
Pol. Ind. Sector Mollet C/Llobregat Nº 1
08150 - Parets del Valles (Barcelona)
Teléfono: +34 935621311
Fax: +34 935621413
www.productosclimax.com<http://www.productosclimax.com/>

Follow us:
    [Descripción: YouTube-logo-full_color baja] 
<https://www.youtube.com/user/productosclimax>              [Descripción: 
descarga baja] <https://www.facebook.com/productosclimax>


[Descripción: Descripción: image001]   [Descripción: logo motos baja]

De: 
forum.help400-boun...@listas.combios.es<mailto:forum.help400-boun...@listas.combios.es>
 
[mailto:forum.help400-boun...@listas.combios.es<mailto:forum.help400-boun...@listas.combios.es>]
 En nombre de Javier Mora
Enviado el: viernes, 1 de junio de 2018 16:35
Para: forum.help400
Asunto: RE: Error datos decimales

¿El parámetro numérico está definido en el PARM?

Si es así, ten en cuenta que las llamadas a programas siempre esperan los 
parámetros numéricos en empaquetado y cuando se definen en la hoja C o en el 
PARM se convierten en decimal con zona.

Revisa también que el parámetro tamaño del parámetro formal coincida con el 
parámetro utilizado en la llamada.

Saludos,

Javier Mora

De: 
forum.help400-boun...@listas.combios.es<mailto:forum.help400-boun...@listas.combios.es>
 
[mailto:forum.help400-boun...@listas.combios.es<mailto:forum.help400-boun...@listas.combios.es>]
 En nombre de Dpto. Informática (José Sánchez)
Enviado el: viernes, 1 de junio de 2018 16:04
Para: forum.help400
Asunto: Error datos decimales

Buenas, tengo un programa que recibe varios parámetros, uno de ellos numérico 
de 2 posiciones. Mando mail al foro porque llevo rato depurando y ya no se que 
mirar.

Al ejecutarlo me da error de datos decimales. Lo he depurado todo y no veo 
donde ese parámetro cambia su valor.

Justo antes de ejecutarlo, ejecuto otro programa(ODP001) y el valor es correcto 
al depurarlo. Cuando acaba, ejecuto el programa ODP002 y el valor ya está mal. 
No está usando la QRPLOBJ, ejecuta el correcto.

[cid:image005.jpg@01D3F9D2.2873C340]

José Sánchez
Dpto.Informática

Productos Climax, S.A
Pol. Ind. Sector Mollet C/Llobregat Nº 1
08150 - Parets del Valles (Barcelona)
Teléfono: +34 935621311
Fax: +34 935621413
www.productosclimax.com<http://www.productosclimax.com/>

Follow us:
    [Descripción: YouTube-logo-full_color baja] 
<https://www.youtube.com/user/productosclimax>              [Descripción: 
descarga baja] <https://www.facebook.com/productosclimax>


[Descripción: Descripción: image001]   [Descripción: logo motos baja]



 Nota de Confidencialidad

Este mensaje se envía desde el sistema de correo electrónico de la empresa 
Productos Climax, S.A.. Podría contener por lo tanto secretos de empresa y otra 
información confidencial tutelados por las leyes de la Unión Europea y otros 
Estados. Si Vd. lo recibiera por error o sin ser una de las personas indicadas 
en el encabezamiento, deberá destruirlo sin copiarlo ni revelarlo o cualquier 
otra acción relacionada con el contenido del mensaje e informar inmediatamente 
por correo electrónico al emisor del mensaje. Las personas y entidades que 
violen sus deberes de confidencialidad podrán ser perseguidas ante los 
Tribunales de Justicia al amparo de la legislación civil, penal y 
administrativa nacional e internacional. Gracias por su colaboración.


Política de Privacidad

En base a la Ley 34/2002 de Servicios de la Sociedad de la Información y de 
Comercio Electrónico (LSSICE), en vigor desde el 12 de octubre de 2002 y de la 
Ley Orgánica 15/1999 del 13/12/1999 de Protección de Datos Personales, le 
comunicamos que su dirección de correo electrónico forma parte de nuestro 
fichero automatizado, al objeto de continuar enviándole ofertas de nuestros 
servicios y / o el mantenimiento de las comunicaciones en nuestras relaciones 
contractuales. En virtud de las Leyes antes mencionadas, tiene derecho de 
oposición, acceso, rectificación y cancelación de sus datos. Le recordamos que 
sus datos nunca son suministrados a terceros bajo ningún concepto, siendo 
únicamente utilizados para el envío de nuestras comunicaciones con Vd.




 Nota de Confidencialidad

Este mensaje se envía desde el sistema de correo electrónico de la empresa 
Productos Climax, S.A.. Podría contener por lo tanto secretos de empresa y otra 
información confidencial tutelados por las leyes de la Unión Europea y otros 
Estados. Si Vd. lo recibiera por error o sin ser una de las personas indicadas 
en el encabezamiento, deberá destruirlo sin copiarlo ni revelarlo o cualquier 
otra acción relacionada con el contenido del mensaje e informar inmediatamente 
por correo electrónico al emisor del mensaje. Las personas y entidades que 
violen sus deberes de confidencialidad podrán ser perseguidas ante los 
Tribunales de Justicia al amparo de la legislación civil, penal y 
administrativa nacional e internacional. Gracias por su colaboración.


Política de Privacidad

En base a la Ley 34/2002 de Servicios de la Sociedad de la Información y de 
Comercio Electrónico (LSSICE), en vigor desde el 12 de octubre de 2002 y de la 
Ley Orgánica 15/1999 del 13/12/1999 de Protección de Datos Personales, le 
comunicamos que su dirección de correo electrónico forma parte de nuestro 
fichero automatizado, al objeto de continuar enviándole ofertas de nuestros 
servicios y / o el mantenimiento de las comunicaciones en nuestras relaciones 
contractuales. En virtud de las Leyes antes mencionadas, tiene derecho de 
oposición, acceso, rectificación y cancelación de sus datos. Le recordamos que 
sus datos nunca son suministrados a terceros bajo ningún concepto, siendo 
únicamente utilizados para el envío de nuestras comunicaciones con Vd.


____________________________________________________
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

Responder a