Anmelden

View Full Version : RNQ0907 abfangen?



FNeurieser
15-02-22, 10:32
Hallo und guten Tag allerseits

ich habe hier eine Datei deren Satzaufbau mittels unterschiedlichen Satzarten für Datenübermittlung genutzt wird.

Die Strukturen sind dabe vorgegeben und können auch nicht geändert werden.

Nun habe ich das Problem, dass ein gewiefter Kollege nicht alle Felder für die Übertragung korrekt befüllt hat, sondern vielmehr Daten mittels cpyf und fmtopt(*nochk) hineinkopiert.

Dadurch passiert es, dass ein numerisches Feld Blanks enthält. Das Ausgangsfeld (S0815XFEMPF) ist mit 11/4 ZONED definiert und ebenso das Zielfeld (XEEMPF)

Ich habe nun im Programm versucht das Feld mittels monitor abzufangen:



monitor;
XEEMPF = %dec(S0815XFEMPF:11:4);
on-error 105;
XEEMPF = *zeros;
endmon;


bekokmme aber folgende Meldung:

Dezimaldatenfehler aufgetreten (C G D F)
Ursache . . . . : RPG-Prozedur TRANSFER in Programm PGMLIB/TRANSFER
hat bei Anweisung 1109 einen Dezimaldatenfehler gefunden. Ein gepackter oder
gezonter Wert enthält keine gültigen numerischen Daten. Eine Ziffer und/oder
das Vorzeichen ist ungültig.

Eigentlich dachte ich, dass ich das damit abfangen kann und er mir das Zielfeld mit Nullen auffüllt?

Danke für Eure Rückmeldungen.

PS: Hat sich inzwischen erledigt. Ich hatte den falschen Fehlercode: Für Dezimaldatenfehler lautet er 907.

Danke

Fuerchau
15-02-22, 12:41
Wie kommst du auf Error 105 bei einem MCH12xx Fehler?

Du kannst aber mal folgendes probieren:
https://www.ibm.com/docs/en/i/7.2?topic=keywords-fixnbrnozoned-noinputpacked

BRoemer
15-02-22, 13:14
https://www.ibm.com/docs/en/i/7.1?topic=structure-program-status-codes

FNeurieser
15-02-22, 14:16
Servus Fuerchau,

ich habe ja schon geschrieben, dass ich das auf 907 korrigiert habe und damit funktioniert es.

Ich muss das über monitor lösen da ich wissen muss bei welchem Datensatz (sprich Artikel) er den Fehler liefert um diesen korrigieren zu lassen.

Danke jedenfalls u. LG
Franz-Georg

Fuerchau
15-02-22, 14:30
Das passiert halt, während man schreibt und du den Eintrag parallel änderst;-).