RE: Error datos decimales

2018-06-01 Por tema Javier Mora
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

Follow us:
[Descripción: YouTube-logo-full_color baja] 
  [Descripción: 
descarga baja] 


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

De: 
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]
 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


Re: Error datos decimales

2018-06-01 Por tema José Bermúdez
Una solución fácil pasalo carácter y luego lo pasas en el programa a numérico 


Un saludo
José Bermúdez.
Dep informática.
Alcoholes Montplet, S.A
Enviado desde mi smartphone Samsung Galaxy.
 Mensaje original De: "Dpto. Informática (José Sánchez)" 
 Fecha: 1/6/18  4:04 p. m.  (GMT+01:00) 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.  José SánchezDpto.Informática Productos Climax, S.A
    Pol. Ind. Sector Mollet 
C/Llobregat Nº 1   08150 - Parets del 
Valles (Barcelona)Teléfono: +34 935621311Fax: +34 935621413 
www.productosclimax.com Follow us:       
Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 © Publicaciones Help400, S.L.

RE: Error datos decimales

2018-06-01 Por tema José Sánchez
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“ J 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



*Follow us:*

[image: Descripción: YouTube-logo-full_color baja]
 [image:
Descripción: descarga baja] 





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



*De:* 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] *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.





*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



*Follow us:*

[image: Descripción: YouTube-logo-full_color baja]
 [image:
Descripción: descarga baja] 





[image: Descripción: Descripción: image001]   [image: 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 

RE: Error datos decimales

2018-06-01 Por tema Javier Mora
¿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] 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@01D3F9C6.7FB474D0]

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

Follow us:
[Descripción: YouTube-logo-full_color baja] 
  [Descripción: 
descarga baja] 


[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.



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

Error datos decimales

2018-06-01 Por tema José Sánchez
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.





*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



*Follow us:*

[image: Descripción: YouTube-logo-full_color baja]
 [image:
Descripción: descarga baja] 





[image: Descripción: Descripción: image001]   [image: 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.


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