CX_SPAN_DATE::SetRealEndOfPeriod
Beschreibung:
Diese Funktion setzt ein neues "echtes" Enddatum für die Datumsperiode, wobei
der Start unverändert bleibt. Wird z.B. das Enddatum der Periode "7.5.1996 -
10.5.1996" auf den "13.5.1996" gesetzt, so wird die Datumsperiode
"10.5.1996 - 13.5.1996" erzeugt. Soll die Periodenlänge nicht verändert
werden, so ist die Funktion MoveRealEndOfPeriod zu
benutzen.
Anders als bei SetEndOfPeriod wird immer das ältere
Grenzdatum gesetzt. Dies kann (bei nicht positiver Periodenlänge) auch das
Setzen des StartOfPeriod zur
Folge haben.
Durch Übergabe eines Null-Objektes wird jüngere
Grenzdatum gelöscht. Die Datumsperiode wird damit halbseitig ungeschränkt (Typ
FROM im validEnum) oder unendlich (Typ ENDLESS,
falls bereits das RealStartOfPeriod NULL ist) .
Code-Beispiele:
1. In dem Beispiel-Programm wird eine Datumsperiode generiert und ihr
"echtes" Enddatum
auf den "3.10.1990" gesetzt. (Das "echte" Startdatum bleibt.)
Var(date, sdate)
// erzeuge die Daten
CreateTransObject(CX_SPAN_DATE) -> sdate
CreateTransObject(CX_DATE) -> date
"10.10.1990 - 1.10.1990" sdate Put
// setze Datumsperiode
"3.10.1990" date Put
// setze das neue Startdatum
date sdate Call(SetRealEndOfPeriod)
Als Ergebnis enthält sdate die Datumsperiode "3.10.1990 - 1.10.1990". Die Periodenlänge bleibt also negativ.
2. Nun wird aus einer Datumsperiode mit nicht positiver Periodenlänge
eines mit positiver, da für die Wahl des älteren Grenzdatums der Zustand vor dem setzen entscheidet.
Var(date, sdate)
// erzeuge die Daten
CreateTransObject(CX_SPAN_DATE) -> sdate
CreateTransObject(CX_DATE) -> date
"10.10.1990 - 3.10.1990" sdate Put
// setze Datumsperiode
"1.10.1990" date Put
// setze das neue Startdatum
date sdate Call(SetRealEndOfPeriod)
Als Ergebnis enthält sdate die Datumsperiode "1.10.1990 - 3.10.1990".
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_SPAN_DATE | das Datum(-sobjekt) |
Top-1 | CX_DATE oder Null | das neue Startdatum | |
Stack(Out) | Top | - | - |
Funktionsaufruf: Call(SetRealStartOfPeriod)