CX_DATE::EndOfPeriod
Beschreibung:
Diese Funktion gibt das Enddatum einer Datumsperiode zurück. Im Gegensatz zur Funktion RealEndOfPeriod wird nicht
immer das jüngste Datum zurückgegeben. Wird diese Funktion beispielsweise für die Datumsperiode "7.4.1996 - 5.4.1996" aufgerufen,
so wird der "5.4.1996" zurückgegeben.
Das Enddatum wird immer durch ein Tagesdatum beschrieben.
Wird die EndOfPeriod auf NULL gesetzt, so ist die Datumsperiode zumindest
halbseitig unbeschränkt. Je nach dem vorigen Werten der Datumsperiode ist diese
dann eine von, eine bis oder endlose Datumsperiode.
Enthält die Datumsperiode eine Netto-Dauer, d.h. die Dauer
umfasst nur Tage
einer bestimmten Klasse, z.B. nur Arbeitstage (WORKINGDAY), so kann beim
Setzen
des Enddatums ein Tagesdatum verwandt werden, das nicht zu dieser Klasse gehört.
In diesem Fall stimmt das Datum, das bei EndOfPeriod zurückgegeben wird, nicht
mit dem überein, das zuvor mit SetEndOfPeriod oder MoveEndOfPeriod
gesetzt wurde (siehe 2.
Code-Beispiele:
1. In dem Beispiel-Programm wird das Periodenende der Datumsperiode "vom 3.10.1990 bis zum 5.10.1990" berechnet.
Var(date, sdate)
// deklariere Variable
CreateTransObject(CX_DATE) -> date // erzeuge ein Tagesdatum
CreateTransObject(CX_SPAN_DATE) -> sdate // erzeuge eine Datumsperiode
"3.10.1990" sdate Put
// setze das Startdatum der Periode
"5.10.1990" date Put
// setze das Tagesdatum
date sdate Call(SetEndOfPeriod)
// setze das Enddatum der Periode
sdate Call(EndOfPeriod)
// liefere das Enddatum der Periode
Das Ausführen dieses Skriptes erzeugt das Tagesdatum "5.10.1990".
2. Im folgenden Beispiel wird das gesetzte Periodenende nicht
das gesetzte, da es kein WORKINGDAY ist.
Var(date, sdate)
// deklariere Variable
CreateTransObject(CX_DATE) -> date
// erzeuge ein Tagesdatum
CreateTransObject(CX_SPAN_DATE) -> sdate // erzeuge eine Datumsperiode
10days WORKINGDAY sdate Call(SetNetDuration) // setze die Dauer auf 10
Arbeitstage
"3.10.1990" date Put
// setze das Tagesdatum
date sdate Call(MoveEndOfPeriod)
// setze das Enddatum der Periode (bei Beibehaltung der Dauer)
sdate Call(EndOfPeriod)
// liefere das Enddatum der Periode
Das Skript liefert "4.10.1990" obwohl die Datumsperiode zum Ende
"3.10.1990" verschoben wurde.
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_DATE oder CX_SPAN_DATE | das Datum(-sobjekt) |
Stack(Out) | Top | CX_DATE | das Enddatum |