CX_DATE::StartOfPeriod
Beschreibung:
Diese Funktion gibt das Startdatum (genauer: Referenzdatum) einer Datumsperiode zurück. Im
Gegensatz zur Funktion RealStartOfPeriod wird nicht immer das älteste
Datum zurückgegeben. Wird diese Funktion beispielsweise für die
Datumsperiode "7.4.1996 - 5.4.1996" aufgerufen, so wird der "7.4.1996"
zurückgegeben.
Das Startdatum wird immer durch ein Tagesdatum beschrieben.
Wird die StartOfPeriod auf NULL gesetzt, so ist die Datumsperiode automatisch
unendlich.
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 Startdatums ein Tagesdatum verwandt werden, das nicht zu dieser Klasse gehört.
In diesem Fall stimmt das Datum, das bei StartOfPeriod zurückgegeben wird, nicht
mit dem überein, das zuvor mit SetStartOfPeriod oder
MoveStartOfPeriod gesetzt wurde (siehe 2. Beispiel).
Code-Beispiele:
1. In dem Beispiel-Programm wird der Periodenbeginn 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(StartOfPeriod)
// liefere das Startdatum der Periode
Das Ausführen dieses Skriptes erzeugt das Tagesdatum "3.10.1990". Das
Objekt, welches sich auf dem Stack befindet, kann mit dem Befehl String in einen (im Gegensatz zum Objekt lesbaren) String umgewandelt werden.
2. Im folgenden Beispiel wird das gesetzte (interne) Startdatum nicht
StartOfPeriod, 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
"3.10.1990" date Put
// setze das Tagesdatum
date sdate Call(SetStartOfPeriod)
// setze das Enddatum der Periode
10days WORKINGDAY sdate Call(SetNetDuration) // setze die Dauer auf 10
Arbeitstage
sdate Call(StartOfPeriod)
// liefere das Startdatum der Periode
Das Skript liefert "4.10.1990" obwohl die Datumsperiode über den
"3.10.1990" definiert ist.
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_DATE oder CX_SPAN_DATE | das Datum(-sobjekt) |
Stack(Out) | Top | CX_DATE | das Startdatum |