Lade...
 

CX_SPAN_DATE::AddNetDay

CX_SPAN_DATE::AddNetDay

Beschreibung:

Wie bei AddDay kann mit Hilfe dieser Funktion eine bestimmte Anzahl an Tag auf ein Datum addiert werden. Diese Anzahl kann dabei auch negativ sein.

Es werden jedoch so viele Tage addiert, dass das Datum um die gegebene Anzahl an Tagen des übergebenen Netto-Typs verschoben wird.
Steht also, z.B., das Datum auf einem Freitag und wird 1 Arbeitstag addiert, so wird das Datum insgesamt um 3 Tage verschoben, um das Wochenende auszulassen. Im Ergebnis steht das Datum dann auf dem folgenden Montag.

Für eine Datumsperiode versucht die Funktion die gesamte Datumsperiode ohne Unterbrechung zu zuweisen.

Wenn die Datumsperiode 5 Werktage (von Montag bis Freitag) beträgt und sie soll um 2 Tage verschoben werden, so wird die Funktion 2 Tage auf das Enddatum rechnen und prüfen, ob von diesem Tag an 5 Werktage ohne Unterbrechung vorhanden sind. Ist dies nicht der Fall, so wird solange geprüft, bis eine Datumsperiode gefunden wurde, in der 5 Werktage ohne Unterbrechung vorhanden sind

(Unterbrechungen sind in diesem Beispiel Feiertage und Wochenenden).

 

Code-Beispiel:

In dem Beispiel-Programm werden auf das Tagesdatum "2.10.1990" ein Arbeitstag addiert.

Var(date)                          // deklariere eine Variable
CreateTransObject(CX_DATE) -> date // generiere das heutige Tagesdatum
"2.10.1990" date Put               // schreibe das neue Datum in das Datumsobjekt
1 WORKINGDAY date Call(AddNetDay)  // addiere einen Arbeitstag hinzu
date                               // das Ergebnis auf den Stack

Das Ausführen dieses Skriptes erzeugt den Wert "4.10.1990". Der

3.10.1990 wurde also als Nicht-Arbeitstag ausgelassen.

 

In diesem Beispiel Programm werden auf die Datumsperiode "10.6.2013-14.6.2013" zwei Arbeitstage addierrt.

Var(date)                               // deklariere eine Variable
CreateTransObject(CX_SPAN_DATE) -> date // generiere das heutige Tagesdatum

"10.06.2013-14.6.2013" date Put         // schreibe die neue Datumsperiode in das Datumsobjekt
2 WORKINGDAY date Call(AddNetDay)       // addiere zwei Arbeitstage hinzu
date                                   

// das Ergebnis auf den Stack

Das Ausführen dieses Skriptes erzeugt die Datumsperiode

"24.6.2013-28.6.2013". Die Woche "17.6.2013-21.6.2013" wird ausgelassen, weil das Enddatum plus 2 Werktage den Dienstag (18.6.2013) entspricht und die Funktion kann keine 5 Werktage von diesem Datum ohne Unterbrechung zu weisen.

Das Ergebnis ist die erste Datumsperiode, die die Bedingung erfüllt.

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_DATE oder CX_SPAN_DATE das Datum(-sobjekt)
Top-1 INTEGER Konstante des Netto-Typs
  Top-2 INTEGER Die Anzahl der zu addierenden Tage
Stack(Out) Top    
Funktionsaufruf: Call(AddNetDay)