PDA

View Full Version : Problem bei %date(Feld:*???)



AndreasH
12-08-03, 15:51
Hallo Forum,
das folgende Miniprogramm liefert mir einen RNQ0103 Fehler (Empfängerwert zu klein)
H DATFMT(*ISO)
D Feld_1 S 8S 0 INZ(20030813)
D datum S D DATFMT(*ISO)
C EVAL Datum=%date(Feld_1:*YMD)
C eval *inlr = *on

Ich hab schon als Parameter 2 *CYMD ausprobiert, mit dem gleichen Ergebnis.
Ich mag nicht glauben, dass die %DATE() Funktion nur mit 6-stelligen Datumsfeldern umgehen kann.
Bei Kodierung von
H DATFMT(*ISO)
D Feld_1 S 8S 0 INZ(030813)
D datum S D DATFMT(*ISO)
C EVAL Datum=%date(Feld_1:*YMD)
C eval *inlr = *on
läuft es problemlos, aber ich muss auch Werte kleiner Jahr 2000 bearbeiten können
Was mach ich falsch??
danke für alle Antworten

B.Hauser
12-08-03, 17:04
Hallo Andreas,

du hast die Datums-Formate durcheinander geschmissen.
Das Datum in deinem 1. Beispiel hat nicht das Format *YMD sondern *ISO

Folgende Formate haben ein 4-stelliges Jahr:
*ISO (2003-08-11)
*EUR (11.08.2003)
*USA (08/11/2003)
*JIS (2003-08-11)

Foldgende Formate haben ein 2-stelliges Jahr
*YMD (03-08-11)
*DMY (11.08.03)
*MDY (08/11703)

Bei numerischen Feldern entfallen die Trennzeichen natürlich.
(Wenn Du überigens Alpha-Felder mit Datum ohne Trennzeichen hast, setze einfach eine Null hinter das Format *ISO0)

Wenn Du ein numerisches Feld, das ein Datum mit einem 4-stelliges Jahr enthält auf ein Datum mit einem 2-stelligen Jahr prüfst, erhälst Du zwangsläufig einen Fehler.

Wenn Du in Deinem 1. Beispiel *YMD durch *ISO ersetzst, wird der Fehler nicht mehr auftreten.
Leider können diese Formate nicht als Variable verwendet werden.
Wenn also beide Fälle vorkommen können, musst Du 2 Abfragen machen und den Fehler mit einer Monitor Group abfangen.

Birgitta

AndreasH
13-08-03, 08:06
Es läuft :)
vielen Dank Birgitta

Gruß