Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Sunday, May 24, 2009

Error de Datos Decimales








Los campos declarados numéricos en archivos y programas serán chequeados por el OS/400 para verificar si contienen números validos, cuando la data cargada en ellos es utilizada en el programa. Si estos campos no tienen números validos, se produce un: Error de Datos Decimales: Data Decimal Error y al menos que el error sea monitoreado en el programa, el programa fallará.

Por ejemplo si recibes información de otro computador a través de un archivo, este podría venir con data errónea, si el campo numérico contiene blancos, caracteres especiales o caracteres alfabéticos. Cuando el archivo es abierto en el programa y el registro contiene data inválida no se produce un error. Pero si el campo que contiene data invalida es leído en el programa cuando es el primer operando de una operación MOVE o alguna operación DIV, SUB, ADD, MULT o si está es el dato origen en una operación EVAL (es decir si es el operando a la derecha). También una operación WRITE o UPDATE verificará data inválida y el programa caerá.

Si frecuentemente recibes archivos que contienen data inválida y necesitas corregir la data puedes declarar los campos como carácter y usar TESTN o CHECK para verificar
Que el campo contiene números validos y si la data es correcta o no.

Algunas veces el problema ocurre cuando el campo numérico es “solapado” (overlaid) con una definición numérica en la estructura de datos. Por ejemplo si tienes un empaquetado numérico (packed) y el programador define el campo como ZONED en la estructura de datos el campo contendrá data que es inválida para un campo zoned aún cuando sea validad para un campo empaquetado (packed)
Cuando declaras una estructura de datos con campos numéricos el inicializarla en la declaración evita que se produzcan errores de data decimal.

Cuando el programa RPG no contiene una rutina de monitoreo de errores, es posible que el programa falle y quede en manos del operador del sistema la responsabilidad de responder al error con: C= cancelar, D=Dump G= Go.
Es recomendable tener una rutina de monitoreo de error y provocar un DUMP forzado en el programa para poder analizar cual campo o variable contiene data inválida.

Eso lo vamos a ver en el siguiente artículo.


Si te pareció interesante, reenvialo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor:  Ing. Liliana Suárez

2 comments:

-=OcToPvS=- said...

tengo un mensaje 'error de datos decimales', supongo que es porque en el programa una variable esta definida como decimal y en la base de datos como numerica.

Unknown said...

Hola Octopus, de campo numerico a campo numerico no se produce error de datos decimales solo porque uno esté definido como decimal y otro sea numerico. El error podría producirse si uno es empaquetado y el otro no. Hay que ver tambien si el archivo tiene el campo con data inválida o si hay una DS (Data Structure) que tiene un subcampo involucrado.

Liliana Suárez