View Full Version : Datumsrechnen
Hi
ich habe hier in einem RPGLE Pgm ein
C *YMD move DT2 RRDT2
DT2 ist ein Datumsfeld
D DT2 S D
lt Debug mit dem Inhalt 2009-03-15
RRDT2 ist ein Nuerisches Feld in einer DS, 8 stellig ohne NK-Stellen
nach dem move steht in RRDT2 00090315
d.h. die 2 fehlt
Das ist mir nicht klar, wer kann helfen ?
Danke,
Robi
Wenn mich nicht alles täuscht ist bei *YMD das Jahr nur 2stellig.
Versuch es anstatt dem move mit einem eval und %dec(DATUM)
d datum s d inz(*sys)
d xx s 8 0
c eval xx=%dec(datum)
lg
*YMD im Faktor1 besagt, dass das numerische Zieldatum im Format YYMMDD ausgegeben werden soll. Soll das Zieldatum im Format YYYYMMDD ausgegeben werden, lass entweder den Faktor1 leer oder gibt *ISO an.
Das gleiche gilt auch für den 2.Parameter, wenn Du die Built-In-Funktion %DEC zum Konvertieren verwendest.
Die Datumsformate *YMD, *MDY und *DMY haben immer ein 2-stelliges Jahr. Die Datumsformate mit dem 4-stelligen Jahr sind *ISO, *EUR, *USA, *JIS
Birgitta
Hi,
klar, deine Lösung geht, danke.
Trotzdem versteh ich es nicht.
In dem Pgm wird vorher ein 8-stelliges numerisches Feld mit 20090709 über
*YMD move RRDT1 DT1 übertragen und kommt (im Datumsfeld) auch als 2009-07-09 an.
Und umgekehrt schneidet er 2 Stellen ab ?
ganz schön dämlich
Na ja, es geht ja wieder. Danke
Gruß
Robi
@Birgitta
Danke für die Erklärung!
Das liegt daran, dass ein Datumfeld das Jahr immer 4-stellig enthält.
Durch *YMD wird das Jahr auf 2 Stellen gekürzt und nach der alten Regel "Jahr < 40, dann + 2000 sonst + 1900" ergänzt.