Allgemeines
Anwendungsgebiet: | Starten, Unterbrechen und Beenden; siehe "Starten, Unterbrechen und Beenden"; STXIT-Verfahren; siehe "STXIT-Verfahren mit Contingency-Verarbeitung" |
Makrotyp: | S-Typ, MF-Format 1: Standardform/L-/E-Form; siehe "S-Typ-Makroaufrufe" |
Makrobeschreibung
Mit dem Makro SETIC kann ein Zeitintervall für die CPU-Zeit und/oder die Realzeit definiert und das Ereignis Sommer-/Winterzeitwechsel angezeigt werden. Nach Ablauf des Zeitintervalls wird ein Unterbrechungsereignis „CPU-Zeitintervall abgelaufen“ bzw. „Realzeitintervall abgelaufen“ oder „Sommer-/Winterzeitwechsel“ signalisiert und eine im aufrufenden Programm zugeordnete STXIT-Routine aktiviert (siehe Makro STXIT). Ansonsten wird das Programm beendet.
Funktionsweise
Der Ablaufteil setzt Intervallzeitgeber mit den im SETIC-Aufruf angegebenen Werten. Sobald diese Werte erreicht sind, wird das Benutzerprogramm unterbrochen. Das System generiert das Ereignis X'20' für „CPU-Zeit-Intervall abgelaufen“ und/oder X'A0' für „Realzeit-Intervall abgelaufen“, und/oder X'20' für „Sommer-/Winterzeitwechsel“, und das Programm verzweigt - falls mit STXIT angegeben - zur Unterbrechungsroutine für die entsprechenden Zeitgeber. Wenn keine solche Unterbrechungsroutine durch den STXIT-Aufruf angegeben wurde, wird das Programm bei Auftreten einer Zeitgeber-Unterbrechung beendet.
Nachdem die Unterbrechung ausgelöst worden ist, wird der Zeitgeber vom Ablaufteil wieder auf den im SETIC-Aufruf angegebenen Wert gesetzt. Die Unterbrechungen finden in den angegebenen Intervallen bzw. zu den angegebenen Tageszeiten so lange statt, bis durch einen weiteren SETIC-Aufruf das Zeitintervall geändert oder durch Angabe des Wertes Null ausgeschaltet wird. Mit der Angabe REPEAT=NO kann eine Wiederholung der Intervalle unterdrückt werden.
Wenn sich die Task bei Ablauf des Realzeitintervalls gerade in einem PASS/VPASS-War-tezustand befindet, dann wird dieser Wartezustand nicht unterbrochen. Es wird erst nach Beendigung des Wartezustands zur angegebenen STXIT-Routine verzweigt.
Makroaufrufformat und Operandenbeschreibung
SETIC |
[CPUTIM=adr / (r)] [{,REALTIM={adr / (r)} / ,TOD={adr / (r)}}] [,CHWSTIM=YES / NO] ,REPEAT=YES / NO [,PARMOD=24 / 31] [,MF=L / (E,..)] |
CPUTIM=
macht Angaben über das CPU-Zeitintervall (Ereigniscode X'20').
adr
symbolische Adresse des Feldes, das die Angabe für ein CPU-Zeitintervall enthält. Es sind zwei Feldformate möglich:
Das Feld adr ist ein Wort lang und enthält die Zeitangabe als Binärzahl, die als Anzahl Millisekunden interpretiert wird.
Das Feld adr ist 6 Byte lang und enthält die Zeitangabe im Format hhmmss - Stunden, Minuten, Sekunden (EBCDIC-Code).
Maximaler Wert für Stunden: 24
Maximaler Wert für Minuten und Sekunden: 59
Wenn die angegebene Zeit abläuft, wird die Steuerung der Routine übergeben, die durch den STXIT-Makro definiert wurde (Operand TIMER).
(r)
r = Register mit dem Adresswert des Feldes adr.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
PARMOD=
steuert die Makroauflösung. Es wird entweder die 24-Bit- oder die 31-Bit-Schnittstelle generiert.
Wenn PARMOD nicht spezifiziert wird, erfolgt die Makroauflösung entsprechend der Angabe für den Makro GPARMOD oder der Voreinstellung für den Assembler (= 24-Bit-Schnittstelle).
24
Die 24-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 24-Bit-Adressen (Adressraum <= 16 MB).
31
Die 31-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 31-Bit-Adressen (Adressraum <= 2 GB).
REALTIM=
macht Angaben über das Realzeit-Intervall (Ereigniscode X'A0').
adr
symbolische Adresse des Feldes, das die Angabe für ein Realzeitintervall enthält. Es sind zwei Feldformate möglich:
Das Feld adr ist ein Wort lang und enthält die Zeitangabe als Binärzahl, die als Millisekundenangabe interpretiert wird.
Das Feld adr ist 6 Byte lang und enthält die Zeitangabe im Format hhmmss - Stunden, Minuten, Sekunden (EBCDIC-Code).
Maximaler Wert für Stunden: 24
Maximaler Wert für Minuten und Sekunden: 59
Die Angabe des Wertes „0“ wird als „24 Stunden“ interpretiert.
Wenn die angegebene Zeit abläuft, wird die Steuerung der Routine übergeben, die im STXIT-Makro angegeben wurde (Operand RTIMER).
(r)
r = Register, mit dem Adresswert des Feldes adr.
REPEAT=
gibt an, ob das angegebene Intervall nach Ablauf wieder gesetzt werden soll.
YES
Dasselbe Intervall soll wieder gesetzt werden, nachdem es abgelaufen ist. Dieser Operand wird nur zusammen mit den Operanden CPUTIM, REALTIM oder TOD ausgewertet. Bei Angabe von TOD wird es alle 24 Stunden wiederholt. Bei Angabe von REALTIM werden alle Werte < 50msec auf 50msec gesetzt.
Der Sommer-/Winterzeitwechsel (und umgekehrt) wird immer mit REPEAT=YES realisiert.
NO
Das Intervall wird nicht wieder gesetzt.
TOD=
macht Tageszeitangaben für einen Realzeitgeber, basierend auf einer 24-Stunden-Uhr (Ereigniscode X'A0'). Die Angabe erfolgt im Format hhmmss - Stunden, Minuten, Sekunden (EBCDIC-Code). An der angegebenen Tageszeit wird die Steuerung der im STXIT-Makro angegebenen Routine übergeben (Operand RTIMER).
adr
symbolische Adresse eines 6 Byte langen Feldes für die Tageszeitangabe.
(r)
r = Register mit dem Adresswert des Feldes adr.
CHWSTIM=
zeigt das Ereignis Sommer-/Winterzeitwechsel (oder umgekehrt) an (Ereigniscode X'C0'). Wenn das Ereignis stattfindet, wird die Steuerung der im STXIT-Makro angegebenen Routine übergeben (Operand RTIMER).
YES
Das Ereignis wird angezeigt, d.h. die STXIT-Routine wird - falls definiert - gestartet.
NO
Das Ereignis wird nicht angezeigt.
Rückinformation und Fehleranzeigen
R15:
+---------------+ | | | | | | | | | | | |a|a| +---------------+
Über die Ausführung des Makros SETIC wird im Register R15 rechtsbündig ein Returncode übergeben.
X'aa' | Erläuterung |
X'00' | Normale Ausführung. |
X'04' | Funktion nicht ausgeführt. Ungültige Operanden. |
X'08' | Funktion nicht ausgeführt. Ungültige Zeitangabe. |