Anmelden

View Full Version : Datumsprobleme



muadeep
07-07-04, 11:36
Hallo zusammen! ;-)

Vieleicht weiss jemand Rat!

D TageS DS
D Tag1 d DatFmt(*ISO) Inz(d'2000-01-01')
D Tag2 d DatFmt(*ISO) Inz(d'2000-01-06')
D Tag3 d DatFmt(*ISO) Inz(d'2000-04-21')

D TageXX d Dim(16) Overlay(TageS)

D BaseDate S d Inz(d'2004-01-02')
D Today S d DatFmt(*EUR)
D Jahr S 4S 0

jetzt würde ich gerne in der "DS" oder aber in die Feldgruppe "TageXX" mit der Jahreszahl aus "BaseDate" (=2004) bzw. der Jahreszahl(=2004) aus "Today" überschreiben!
Die Monate und Tage sollen in der "DS" bzw. der Feldgruppe
so wie sie sind erhalten bleiben!

Fuerchau
07-07-04, 11:51
D JahrXX 4 overlay(Tagexx)

Du erhältst ein Array von JahrXX(1) bis JahrXX(16), also nicht noch mal DIM(n).

Ich würde allerdings nicht zwischen *ISO und *EUR wechseln.

muadeep
07-07-04, 12:16
vielen Dank für die schnell Antwort!

mir ist aber immer noch nicht ganz klar, wie ich jetzt das
Datum in der "JahrXX" mit 2004 überschreiben kann?

geht das dann nur mit "MoveL" oder auch mit "Eval" bzw. mit BIF's?

Ist es auch möglich, für z.B. "Text2" das Monat und den Tag zu ändern?

B.Hauser
07-07-04, 12:25
Hallo,

automatisch kann man das Datum nicht ersetzen, da sind schon ein paar Statements notwendig

Hier ein Beispiel:


D DSTage DS
D Tag1 D DatFmt(*ISO) inz(D'2000-01-01')
D Tag2 D DatFmt(*ISO) inz(D'2000-01-06')
D Tag3 D DatFmt(*ISO) inz(D'2000-04-21')
D ArrayTag D overlay(DsTage) dim(3)

D Today S D inz(*sys)
D BaseDate S D inz(D'2003-01-01')

D Year S 5U 0
D ArrYear S 5U 0 Dim(%elem(ArrayTag))
/Free
Year = %SubDt(Tag1: *Y);
Tag1 = Tag1 + %Years(%SubDt(Today: *Y)) - %Years(year);

ArrYear = %SubDt(ArrayTag: *Y);
ArrayTag = ArrayTag + %Years(%Subdt(Today: *Y)) - %Years(ArrYear);

/End-Free

muadeep
07-07-04, 13:38
hab gleich dazu nochmal eine Frage:

D TageS DS
D Tag1 d DatFmt(*ISO) Inz(d'2000-01-01')
D Tag2 d DatFmt(*ISO) Inz(d'2000-01-06')
D Tag3 d DatFmt(*ISO) Inz(d'2000-04-21')

D TageXX d Dim(16) Overlay(TageS)
D JahrXX 4 overlay(TageXX)

D BaseDate S d Inz(d'2004-01-02')
D Today S d DatFmt(*EUR)
D Jahr S 4S 0

D DS Inz
D WorkDate 1 10d DatFmt(*ISO)
D WorkDay 9 10 0

Ich möchte jetzt mit dem Feld "WorkDate" über %Lookup prüfen, ob das Datum in der Feldgruppe "TageXX" vorhanden ist!

C If %Lookup(WorkDate:TageXX) = *null
:
C EndIf

Leider bekomme ich jetzt immer beim Umwandeln des Programm's folgende Fehlermeldung:

1 Operanden sind mit der Art des Operators nicht kompatibel

wie muß das SuchArgument "WorkDate" aufgebaut sein, über %lookup in der Feldgruppe zu suchen?

B.Hauser
07-07-04, 13:41
Die Built-in-Function %Lookup() liefert bei nicht gefunden *Zeros und nicht *NULL zurück!

Birgitta

Fuerchau
07-07-04, 16:55
Für Monat und Tag kannst du auch entsprechende Overlays definieren:
d MonatX 2 overlay(TageXX:6)
d TagX 2 overlay(TageXX:9)

die Felder können dann ganz normal referiert und gesetzt werden (eval, move).

muadeep
08-07-04, 08:29
Vielen dank für eure schnell Hilfe!

mfg