Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Zeitlimitierungen im BS2000

&pagelevel(4)&pagelevel

Im BS2000 existieren drei verschieden Zeitlimitierungen, die den Benutzer im Teilnehmerbetrieb betreffen:
Eine benutzerkennungs-spezifische, eine task-spezifische und eine programmlaufspezifische Zeitbegrenzung.

Eine benutzerkennungs-spezifische Zeitbegrenzung legt die Systembetreuung im Benutzereintrag fest. Von diesem festgelegten Zeitkontingent rechnet das Abrechnungssystem des BS2000 bei Taskbeendigung die verbrauchte CPU-Zeit ab.

Für eine Task kann beim Starten die maximale CPU-Zeit (Task-Time-Limit: TTL) angegeben werden. Die maximal angebbare CPU-Zeit ist das Minimum aus dem Zeitkontingent des Benutzereintrags und dem Maximalwert aus der Jobklassendefinition. Ohne Angabe einer maximalen CPU-Zeit wird der Standardwert aus der Jobklassendefinition oder gegebenenfalls das kleinere Zeitkontingent des Benutzereintrags als maximale CPU-Zeit der Task übernommen. Benutzer, die im Benutzereintrag das Privileg No-Time-Limit besitzen, und die Benutzerkennung TSOS können Tasks ohne Zeitbegrenzung starten (NTL-Tasks). In einer Jobklasse, in deren Jobklassendefinition der Standardwert für die maximale CPU-Zeit nicht begrenzt ist (CPU-LIMIT wird in der Ausgabe des Kommandos SHOW-JOB-CLASS mit DEFAULT=NO-LIMIT und MAXIMUM=NO-LIMIT angezeigt), können auch Benutzer ohne einen entsprechenden Benutzereintrag Tasks ohne Zeitbegrenzung starten.

Da das Zeitkontingent im Benutzereintrag erst bei Beendigung der Task aktualisiert wird, kann die maximale CPU-Zeit (und ggf. die tatsächlich verbrauchte) mehrerer Tasks einer Benutzerkennung zusammen das Zeitkontingent überschreiten.

Bei dem Laden oder Starten eines Programms kann für den jeweiligen Programmlauf eine maximale Programmlaufzeit angegeben werden (Program-Time-Limit: PTL).

Bezüglich der maximalen CPU-Zeit der Task (TTL) und der maximalen Programmlaufzeit (PTL) verhalten sich Dialog- und Batchaufträge unterschiedlich. Die folgende Beschreibung betrachtet zunächst den Normalfall, d.h. die CPU-Zeit eines Dialogauftrags wird nicht über den Systemparameter DIATTL begrenzt (entspricht der Voreinstellung DIATTL=N):

TTL im Batchauftrag erreicht

Beim Starten des Batchauftrags kann der Benutzer im Kommando ENTER-JOB bzw. ENTER-PROCEDURE eine Zeitbegrenzung (TTL) angeben. Hat der Batchauftrag die maximale CPU-Zeit verbraucht, wird die Meldung EXC0070 an der Konsole ausgegeben. Die Systembetreuung hat jetzt maximal 20 Minuten Zeit, um mit dem Kommando CHANGE-TASK-CPU-LIMIT die maximale CPU-Zeit des Batchauftrags zu erhöhen. Damit kann verhindert werden, dass wichtige Batchaufträge wegen Überschreitens des TTL vorzeitig beendigt werden.

Wird die maximale CPU-Zeit des Batchauftrags innerhalb der Wartezeit von 20 Minuten nicht erhöht, wird der Batchauftrag beendet. Dabei sind folgende zwei Fälle zu unterscheiden:

  1. Wurde das TTL während der Abarbeitung von BS2000-Kommandos erreicht, wird die Task mit der Meldung CMD1011 beendet.

  2. Wurde das TTL während eines Programmlaufes erreicht, wird die Meldung EXC0072 ausgegeben und ggf. eine STXIT-Routine abgearbeitet, die jedoch maximal 30 CPU-Sekunden verbrauchen darf. Nach Abarbeitung der STXIT-Routine bzw. spätestens nach 30 CPU-Sekunden wird das Programm mit der Meldung EXC0073 beendet. Anschließend wird die Task beendet.

PTL im Batchauftrag erreicht

Wurde das PTL während eines Programmlaufes im Batchauftrag erreicht, wird die Meldung EXC0072 ausgegeben und ggf. eine dafür definierte STXIT-Routine abgearbeitet, die jedoch maximal 30 CPU-Sekunden verbrauchen darf. Nach Abarbeitung der STXIT-Routine bzw. spätestens nach 30 CPU-Sekunden wird das Programm mit der Meldung EXC0073 beendet und Spin-Off ausgelöst. Ist eine Fehlerbehandlung vorgesehen ist, beginnt die weitere Bearbeitung bei dem nächsten SET-JOB-SET- bzw. IF-BLOCK-ERROR-Kommando. Anderenfalls endet die Bearbeitung bei dem nächsten EXIT-JOB- bzw. LOGOFF-Kommando.

PTL bzw. TTL im Dialogauftrag erreicht

Eine Zeitbegrenzung kann der Benutzer im Kommando SET-LOGON-PARAMETERS angeben. Bei Überschreiten eines Zeitlimits kann der Benutzer grundsätzlich weiterarbeiten.
Bei Überschreiten des TTL wird, wenn kein Programm geladen ist, die Meldung EXC0067 ausgegeben und der Benutzer kann 30 CPU-Sekunden weiterarbeiten, bis sich der Vorgang wiederholt.
Wenn ein Programm geladen ist, gilt bei Überschreiten des TTL bzw. PTL: Im Prozedur-Modus wird die Meldung EXC0068 ausgegeben und die Ausführung fortgesetzt. Die Zeitbegrenzung wird um 100 CPU-Sekunden hochgesetzt, d.h. danach wiederholt sich der Vorgang.
Im interaktiven Dialog wird die Meldung EXC0075 ausgegeben. Der Benutzer kann angeben, ob er die Ausführung fortsetzen oder beenden will. Wird die Ausführung fortgesetzt, wiederholt sich der Vorgang nach 30 CPU-Sekunden.

Verhalten bei Änderung der Voreinstellung des Systemparameters DIATTL

Mit den Einstellungen DIATTL=Y bzw. DIATTL=Q kann die Systembetreuung die CPU-Zeit einer Dialogtask begrenzen. Diese Einstellungen bewirken folgende Änderungen des zuvor beschriebenen Verhaltens:

DIATTL=Y

Der Dialogauftrag wird mit Task-Time-Runout beendet.

Bei Überschreiten des TTL wird zunächst die Meldung EXC0076 ausgegeben. Falls ein Programmlauf mit STXIT für Timeout vorliegt, wird diese STXIT-Routine noch nach Ablauf der mit der Meldung eingeräumten Zeit gestartet. Der STXIT-Routine werden standardmäßig noch einmal 30 CPU-Sekunden zugestanden.

DIATTL=Q (quick and quiet)

Der Dialogauftrag wird wie bei DIATTL=Y mit Task-Time-Runout beendet.

Zusätzlich werden sowohl für einen Dialog als auch für einen Batchauftrag die Zeitzuschläge bzw. Wartezeiten, die sonst für TTL und PTL gelten, auf eine Sekunde verkürzt („quick“). Außerdem wird bei einem Batchauftrag die Meldung EXC0070 an der Konsole unterdrückt („quiet“).