View Full Version : Datumsberechnung
Hallo zusammen,
ich möchte ein Feld (Num, 8 Stellen, 20080930) 14 Tage aufaddieren. Wie mache ich das am besten, damit auch der Monat etc. richtig addiert wird.
Kann mir dabei jemand helfen?
Wie sieht es mit ADDDUR aus?
Danke im voraus..
Carsten
geht am besten mit den built in functions, etwa:
d isodate s d datfmt(*iso)
und dann zur Berechnung:
isodate = %date(numdat:*iso);
isodate = Isodate + %days(zahl);
numdat = %dec(%xlate('-':' ':%char(isodate)):8:0));
Karl-Heinz
In etwa so.
D DATUM S 8P 0 INZ(20080925)
D DATUM1 S D DATFMT(*ISO)
D
C *ISO MOVE DATUM DATUM1
C ADDDUR 14:*DAYS DATUM1
C *ISO MOVE DATUM1 DATUM
C
C SETON LR
... oder (ab V5R3)
/Free
NewDatNum = %Dec(%Date(DatNum:*ISO)
+ %Days(Zahl): *ISO);
/End-Free
ADDDUR wird im RPG free format nicht unterstützt, deshalb wurden in Release V5R1 eine Reihe von neuen Built-In-Functions (u.a. auch %Days()) zur Datumsrechnung bereitgestellt.
@Karl-Heinz
%XLATE kann man sich auch vor V5R3 sparen, in dem man beim Konvertieren in eine alphanumerische Darstellung das Format angibt. Die folgende 0 im Format bedeutet ohne Datumstrennzeichen.
/Free
numdat = %dec(%char(isodate: *ISO0):8:0);
/End-Free
Birgitta