PDA

View Full Version : Datumsberechnung



IBSCPO
01-10-08, 10:04
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

Khholm
01-10-08, 10:11
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

Pikachu
01-10-08, 10:31
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

B.Hauser
01-10-08, 10:42
... 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