Lade...
 

CX_DATE::StartOfPeriod

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
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_DATE oder CX_SPAN_DATE das Datum(-sobjekt)
Stack(Out) Top CX_DATE das Startdatum
Funktionsaufruf: Call(StartOfPeriod)