NOPUCS1N - Auf Kalender und Zeitpläne zugreifen

Dieser Abschnitt behandelt folgende Themen:


Auf Daten in Kalendern und Zeitplänen zugreifen

Sie können mittels des folgenden Aufrufs innerhalb Ihrer Natural-Anwendung auf Kalenderdaten oder Zeitpläne zugreifen:

CALLNAT 'NOPUCS1N'
  P-FUNCTION P-RC P-OBJECT-TYPE P-OWNER P-OBJECT P-DATE-A8

Bedeutung der Parameter:

Parameter Format/Länge Verwendung
P-FUNCTION  A1 ein Funktions-Code:
A Kalender oder Zeitplan löschen
B Kalender hinzufügen
C Verwendeten Kalender ermitteln.
D Verwendeten Zeitplan ermitteln.
N Nächstes gesetztes Datum ermitteln, ausgehend von einem Start-Datum.
P Vorheriges gesetztes Datum ermitteln, ausgehend von einem Start-Datum.
R Datum zurücksetzen. Datum wird aus dem Kalender oder Zeitplan entfernt.
S Datum setzen. Datum wird dem Kalender oder Zeitplan hinzugefügt.
T Datum testen. Wenn das Datum innerhalb eines Kalenders oder eines Zeitplans existiert: RC enthält 0, sonst 1.
1 Setzen aller Daten in der Tabelle (Kalendar oder Zeitplan).
2 Zurücksetzen aller Daten in der Tabelle (Kalendar oder Zeitplan). Zeitplan).
P-RC  N3 aus Rückgabe-Code:
0 Funktion ok, oder: Datum ist gesetzt.
1 Datum ist nicht gesetzt.
2 Objekt nicht gefunden.
3 Bei der Definition verwendetes Objekt.
4 Schon vorhandenes Objekt.
101 Ungültiger Funktions-Code.
102 Parameter fehlt (fehlen).
103 Ungültige Parameter-Kombination.
104 Ungültiger Objekt-Typ.
105 Ungültiges Datum.
106 Tabelle expliziter Daten ist voll.
- - - 121 Eigentümer exisitiert nicht.
P-OBJECT-TYPE  A1 ein Objekt-Typ:
N Netzwerk
C Kalender
H Zeitplan-Historie
S Zeitplan
P-OWNER  A10 ein Eigentümer des Objekts.
aus Die Funktionen C und D: Eigentümer des ausgewählten Objekts.
P-OBJECT  A10 ein

Name des Objekts: Eigentümer-Name bzw. Zeitplan-Name.

Wenn P-FUNCTION gleich N, P oder T ist und wenn ein Kalender als Objekt erwartet wird:

  • es darf der reservierte Kalendername =EOR=WORK7 benutzt werden. Dieser Pseudo-Kalender ist für jedes Jahr gültig und in ihm sind alle Tage als Arbeitstage definiert.

  • Der Wert von P-OWNER ist in diesem Fall bedeutungslos.

aus Funktions-Codes C und D: Name des ausgewählten Objekts.
P-DATE-A8  A8 ein Datum im Format: JJJJMMTT

ALL bedeutet in diesem Feld "alle Jahre". Dieser Wert gilt bei Löschungen.

aus Funktions-Codes N und P: das gefundene Datum.

Anmerkungen:

  1. Nur Funktion T (Datum testen) ist für Objekt-Typ H (Zeitplan-Historie) erlaubt.
  2. Zeitplan-Historie ist normalerweise vorhanden für das aktuelle Jahr und für die zwei vorigen Jahre.
  3. Zeitplan-Daten können für das aktuelle Jahr und für das nächste Jahr gesetzt werden.
  4. In Kalendern bedeutet ein gesetztes Datum "Arbeitstag" und ein nicht gesetztes Datum "Feiertag". Die Funktionen N und P funktionieren auch über Jahreswechsel hinweg. Einschränkungen: Bei Zeitplänen sind nur das aktuelle und das vorherige Jahr verfügbar.
  5. Kalender müssen für alle Jahre definiert sein, in denen gesucht wird.
  6. Funktion A löscht die Kalender- bzw. Zeitplan-Master, wenn P-OBJECT-TYPE = 'C' bzw 'S'. Falls der Kalender bzw. Zeitplan für das aktuelle Jahr ist und falls er in einem Zeitplan bzw. Netzwerk referenziert wird, dann wird der P-RC Wert 3 (Objekt wird in Definitionen verwendet) zurückgeliefert. Kalender für zurückliegende Jahre werden ohne Referenzierungsprüfung gelöscht.
  7. Wenn ein Kalender gelöscht wird (P-FUNCTION='A' und P-OBJECT-TYPE='C'), dann soll der Wert von P-DATE-A8 entweder die Form YYYY oder YYYYMMDD oder die Konstante 'ALL' haben. Der Wert 'ALL' bedeutet, dass der Kalender für alle definierten Jahre gelöscht wird.

Beispiel für die Benutzung von NOPUCS1N

Das Programm ermittelt den jeweils ersten Montag im Monat für das Jahr 2008 und setzt anschließend den Netzwerk-REQUEST/NET001 für die ermittelten Tage auf den Zeitplan.

* DETECT FIRST MONDAY IN MONTHS
*
DEFINE DATA
LOCAL
1 #YYYYMMDD (A8)
1 REDEFINE #YYYYMMDD
 2 #YYYY    (N4)
 2 #MM      (N2)
 2 #DD      (N2)
1 #D1      (D)
1 #WD      (A1)
1 #OWNER   (A10) INIT <'REQUEST'> /* Owner   
1 #OBJECT  (A10) INIT <'NET001'>  /* Network 
1 #RC3     (N3)
END-DEFINE
*
#YYYY := 2010                     /* Year    
F1. FOR #MM = 01 TO 12
 RESET #DD
 R1. REPEAT
  ADD 1 TO #DD
  MOVE EDITED #YYYYMMDD TO #D1 (EM=YYYYMMDD)
  MOVE EDITED #D1 (EM=O) TO #WD
  WRITE #D1 (EM=YYYYMMDD) #WD
  UNTIL #WD = '1'      /* R1.
 END-REPEAT        /* R1.
 WRITE #D1 (EM=YYYYMMDD' 'N(10))
*
* CALL NOP SCHEDULE API TO SET THESE DAYS
*
 CALLNAT 'NOPUCS1N'
  'S' #RC3 'S' #OWNER #OBJECT #YYYYMMDD
 WRITE #YYYYMMDD #RC3
END-FOR      /* F1.
END TRANSACTION
END