Anmelden

View Full Version : Dezimaldatenfehler ???



Seiten : [1] 2

FNeurieser
11-08-11, 09:03
Hallo,

ich habe da eine Frage:

Von einer SAP-Maschine bekomme ich eine Datei die ein numerisches Feld (9/2) mit folgendem Wert enthält "00000a420". Ja genau, richtig gelesen. Ein a in einem numerischen Feld - keine Ahnung wie die dazu kommen. Aber jetzt zu meinem Problem.

In einem ILE Prog steht folgender Code:


C z-add woehwert test12 11 2


woehwert ist das Feld mit dem "a" im Wert.

Normalerweise würde ja jetzt die i5 schreien "DEZIMALDATENFEHLER!!!", aber genau das passiert nicht.

Es wurde bei der Programmumwandlung beim Paramater "FIXNBR *NONE" angegeben.

Kann mir einer erklären, warum ich hier keine Fehlermeldung bekomme!!!

Auch wenn das Feld folgenden Inhalt hat, erhalte ich keine Fehlermeldung:

00000-420
00000 420

Irgendwer eine Idee???

PS: als OS verwenden wir V5R4, da derzeit ein Umstieg auf V7 noch nicht möglich ist.

Pikachu
11-08-11, 10:03
RPGLEHSPEC oder DFTLEHSPEC ?

Was für H-Spezifikationen stehen denn in der Umwandlungsliste?

FNeurieser
11-08-11, 10:08
@Pikachu


H DECEDIT('0,') DATEDIT(*ymd-)

Robi
11-08-11, 10:12
Was steht den nach dem z-add in testf12?
und was steht hex in woehwert?
Robi

Pikachu
11-08-11, 10:16
Zoned-Decimal Format (http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/topic/com.ibm.etools.iseries.langref.doc/c0925086184.htm#HDRZODECFO)

"In zoned-decimal format, each digit in a decimal number includes a zone portion; however, only the low-order zone portion serves as the sign."

Und da ein kleines a = X'81' in EBCDIC, wird das zu einer 1 inmitten einer gezonten Zahl.

SAP kann euch auch ein kleines j (X'91' in EBCDIC) an dieser Stelle schicken. ;)

FNeurieser
11-08-11, 10:23
@robi

nach dem z-add steht in testf12 der Wert 1420.

hexwert von woehwert:

000a42000
FFF8FFFFF
000142000

FNeurieser
11-08-11, 10:25
@pikachu,

schon klar, aber wie kann man erreichen dass in so einem Fall "Dezimaldatenfehler" gemeldet wird???

Pikachu
11-08-11, 10:32
Du könntest die "Zahl" in ein Zeichenfeld einlesen und dann mit TESTN prüfen.

Robi
11-08-11, 11:25
Ich kenne SAP nicht,
hast du denn geklährt ob das ein Fehler ist oder die dir tatsächlich 1420,00 melden wollen?

B.Hauser
11-08-11, 12:06
@pikachu,

schon klar, aber wie kann man erreichen dass in so einem Fall "Dezimaldatenfehler" gemeldet wird???

Hast Du schon mal versucht EVAL (ggf. in Verbindung mit einer Built-In-Function) anstatt des Z-ADD zu verwenden?

Birgitta