Zitat Zitat von TobiasHe
Hallo zusammen!

Ich hänge gerade in RPG an einem sehr seltsamen Datumsproblem! Vielleicht (bzw. so wie ich euch kenne "bestimmt") weiß ja jemand ne Lösung:

In habe in ein RPG-Programm unter anderem 2 Dateien gebunden!

Datei A:
Die eine Datei ist als externe Datenstruktur eingebunden und wird per SQL auf einer anderen AS400 gefüllt.

Ddslbmkk000 E DS extname(lbmkk000)
Prefix(ak)

Datei B:
Die 2. Datei ist eine extern beschriebene Datei auf der lokalen AS400, aus der Daten per READE ausgelesen werden.

ordrhdr01 uf e K disk Prefix(hd)

In beiden Dateien ist ein Datumsfeld vom Typ "DATE" vorhanden und ich möchte nun das Feld aus Datei B in Datei A schieben!
Soweit alles kein Thema! Zumindest eigentlich....

Ich fülle nun das Feld in der Datenstrukter (akAUFDATHS = hdAUFDATHS und machen den SQL-INSERT auf Datei A!

Beim SQL fällt das Programm auf die Nase! Meldung: "Die Jahresangabe eines Datums- oder Zeitmarkenwerts liegt nicht innerhalb des korrekten Bereichs"

Habe dann mal nen Dump gemacht und mir die Felder angesehen:
Feld aus Datei A: 0001-01-01
Feld aus Datei B: 01.01.0001

Im Header habe ich für das Datumsformat noch folgenden Eintrag gemacht: H DATFMT(*EUR)

Wieso ist das Datumformat in den Dateien unterschiedlich??
Hat das was mit SQL zu tun und ich muss das Feld erst umstellen?

Besten Dank schon mal....

Tobias Heinemann
Das Problem ist, dass SQL das Datums-Format, das in den D- oder H-Bestimmungen angegeben ist überhaupt nicht interessiert.
Das Datums-Format, das SQL verwendet kann wie folgt gesetzt werden:
1. Im interaktiven SQL über F13 Sitzungs-Attribute ändern
2. Im iSeries Navigator über Verbindung --> JDBC Setup --> Format
3. Im Compile-Befehl CRTSQLxxxI Option DATFMT
4. In Embedded SQL oder SQL/PL über SET OPTION

Ich nehme an, dass der SQL-Befehl im RPG-Programm als embedded SQL abgesetzt wird.
In diesem Fall würde ich empfehlen folgendes SQL-statement einzubinden.

C/EXEC SQL Set Option DatFmt = *ISO
C/END-EXEC

Wichtig ist, dass das SQL-Datums-Format ein 4-stelliges Jahr verarbeitet. Welches ist egal.

Birgitta