CX_PERIODIC_DATE::Import
Beschreibung:
Mit dieser Funktion wird die Beschreibung eines periodischen Datums importiert.
Code-Beispiel:
In dem Beispiel-Programm wird das periodische Datum "an jedem vorletzten Montag im Monat" generiert.
Var(value, pdate)
CreateTransObject(CX_VALUE) -> value
"1 Tage" value Put
CreateTransObject(CX_PERIODIC_DATE) -> pdate
366 value 98 1 0 0 pdate Call(Import)
// Der ViewImport mittels Put funktioniert identisch, nur dass die Parameter als ein String übergeben werden 195275:
"366 \"1 Tage\" 98 1 0 0" pdate Put
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_PERIODIC_DATE | das periodische Datum(-sobjekt) |
Top-1 | INTEGER | Start | |
Top-2 | INTEGER | Häufigkeit | |
Top-3 | INTEGER | Bezugszeitraum | |
Top-4 | INTEGER | Position | |
Top-5 | CX_VALUE | Einzelperioden-Dauer | |
Top-6 | INTEGER | Tag-Codierung | |
Stack(Out) | Top | - | - |
Die einzelnen Parameter haben dabei folgende Bedeutung:
Position | Bedeutung des Parameters |
---|---|
Top | das periodische Datumsobjekt, das verändert werden soll |
Top-1 | Unter Start ist ein Startdatum, -monat bzw. -tag für die Häufigkeit zu verstehen. Für ein periodisches Datum kann im Normalfall ein Startdatum gesetzt werden, ab dem es gültig sein soll. Dabei muss der Wert des Datums, der mit der Funktion ValueOfDate ermittelt werden kann, übergeben werden. Soll hingegen eine Periode wie "jeder n.te in einem Jahr" codiert werden, so muss ein Startmonat gewählt werden, auf den sich die relative Angabe beziehen kann. Soll beispielsweise "jeder zweite 15.te in einem Jahr" codiert werden und wird in diesem Beispiel der Januar (= "1") als Startmonat gewählt, so erhält man die Periode: "15.1, 15.3, ..., 15.11". Wählt man im Gegensatz dazu den Februar (= "2") als Startmonat, so hat die Periode folgendes Aussehen: "15.2, 15.4, ..., 15.12". Wird die Periode "jeder zweite Montag im Monat" codiert, so wird äquivalent vorgegangen, wobei sich die Angabe nicht mehr auf einen Monat, sondern auf einen Wochentag bezieht. Dieser Parameter enthält also entweder einen Starttag, Startmonat oder ein Startdatum, das in der internen Darstellung als INTEGER-Wert übergeben werden muss. |
Top-2 |
Unter der Häufigkeit ist die relative Position eines Tages zu verstehen. |
Top-3 | Der Bezugszeitraum, auf die sich die Häufigkeit bzw. Position beziehen soll, darf einen der folgenden Werte annehmen: "0" = Startdatum, "1" = Monat, "2" = Jahr. |
Top-4 | Die genaue Position des Tages, wobei gleichzeitig keine relative Position (= Häufigkeit) angegeben werden darf, d.h. dieser Parameter muss eine "0" enthalten. Soll beispielsweise "der dritte 15.te eines Jahres" gespeichert werden, so wird in diesem Parameter eine "3" übergeben. Als zusätzliche Codierung stehen "der letzte einer Periode" und "der vorletzte einer Periode" zur Verfügung, so dass Aussagen wie "der letzte Montag in jedem Montag" beschreibbar sind. Der "letzte" wird dabei durch die "99", der "vorletzte" durch die "98", repräsentiert. |
Top-5 | Unter der Einzelperioden-Dauer ist die Anzahl der zusätzlichen Tage ab dem Starttag zu verstehen. Soll z.B. "der 15.te bis 17.te" abgebildet werden, so wird der 15.te mit einer Dauer von 2 (zusätzlichen) Tagen gespeichert. Da die Dauer als CX_VALUE übergeben wird, kann auch eine andere Einheit als "Tag", wie z.B. "Woche", gewählt werden. |
Top-6 |
Die Codierung des Tages: (Siehe Seitenende für eine übersichtliche Tabelle). |
Alle periodischen Daten, die mit Hilfe dieser Parameter abgebildet werden können, sind der folgenden Tabelle zu entnehmen. Dabei wurde der Parameter Einzelperioden-Dauer nicht einbezogen, da er keine Auswirkung auf den Typ eines periodischen Datums hat.
Datumstyp | Start | Häufig- keit |
Bezugs- zeitraum |
Position | Tag |
---|---|---|---|---|---|
jeder n.te Tag ab dem Datum | Datum | n > 0 | 0 | 0 | 0..28 + [10512 | 11024 | 12048 | 14096] |
jeder n.te Tag im Jahr ab dem k.ten Monat im Jahr | 1<=k<=12 | n > 0 | 2 | 0 | 0..28 + [10512 | 11024 | 12048 | 14096] |
der m.te Tag in jedem Jahr (Tag > 28nur dann, falls m=1) | - | 0 | 2 | 1<=m<=12 | 0..365 + [10512 | 11024 | 12048 | 14096] |
jeder n.te Wochentag ab dem Datum | Datum | n > 0 | 0 | 0 | 366..492 + [512 | 1024 | 2048 | 4096] |
jeder n.te Wochentag im Monat ab dem k .ten gleichen Wochentag in demselben Monat | 1<=k<=5 | n > 0 | 1 | 0 | 366..492 + [512 | 1024 | 2048 | 4096] |
jeder n.te Wochentag im Jahr ab dem k.ten gleichen Wochentag in demselben Jahr | 1<=k<=53 | n > 0 | 2 | 0 | 366..492 + [512 | 1024 | 2048 | 4096] |
der m.te Wochentag in jedem Monat | - | 0 | 1 | 1<=m<=5 | 366..492 + [512 | 1024 | 2048 | 4096] |
der m.te Wochentag in jedem Jahr | - | 0 | 2 | 1<=m<=53 | 366..492 + [512 | 1024 | 2048 | 4096] |
der (vor-)letzte Wochentag im m.ten Monat | 1<=m<=12 | 0 | 1 | 98, 99 | 366=Mo 367=Di 369=Mi 373=Do 381=Fr 397=Sa 429=So |
"Feiertags" | 1 | 1 | 0 | 0 | 1516 |
Ist in der Spalte Start ein "-" eingetragen ist, so bedeutet dieses, dass nur ein Pseudo-Wert übergeben werden muss, da der Parameter nicht zur Abbildung des periodischen Datums benötigt wird.
Der letzte Eintrag der Tabelle "Feiertags" stellt einen Spezialfall dar. Dieses periodische Datum wurde als "An jedem Tag der Woche, der auch ein Feiertag ist" codiert.
Erläuterungen zu den Parametern
Für die Parameter sind die erlaubten Werte entweder direkt oder als Bereich angegeben. Im Fall der Tag-Codierung erfolgt ein formelmäßige Beschreibung, mit dem Konstrukt Start..Ende + [ Wert 1 | Wert 2 | Wert 3 | Wert 4 ]. Dabei repräsentieren Start und Ende den Bereich, aus dem die Tag-Codierung einen Wert annehmen kann.
Die Werte in den eckigen Klammern stellen optionale Größen dar, die bei Einbezug von Feiertagen in das periodische Datum zum gewählten Wert hinzuaddiert werden müssen, wobei nur einer dieser Werte hinzugezählt werden darf.
Tabelle zur Codierung des Tages
Werte | Bedeutung |
1 | Montag |
2 | Dienstag |
4 | Mittwoch |
8 | Donnerstag |
16 | Freitag |
32 | Samstag |
64 | Sonntag |
Werte | Bedeutung |
512 und 10512* | "Oder"-Feiertag |
1024 und 11024* | "Und"-Feiertag |
2048 und 12048* | "Oder nicht"-Feiertag |
4096 und 14096* | "Und nicht"-Feiertag |
*Die Wahl des richtigen der beiden Werte erfolgt in der Positions-Erklärung unter Top-6.
Funktionsaufruf: Call(Import)