Lade...
 

CX_DATE::EndOfPeriod

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.

Beispiel).

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