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 in BS2000

In BS2000 existieren drei verschiedene Zeitlimitierungen, die den Benutzer im Teilnehmerbetrieb betreffen: Eine benutzerkennungs-spezifische, eine task-spezifische und eine programmlauf-spezifische Zeitbegrenzung.

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

Für eine Task kann beim Starten die maximale CPU-Zeit (Task-Time-Limit: TTL) angegeben werden.

  • Für Batch-Jobs gilt:
    Die maximal angebbare CPU-Zeit ist das Minimum aus dem Zeitkontingent des Benutzereintrags und dem Maximalwert aus der Job-Klassen-Definition.

  • Für Dialog-Jobs gilt:
    Die maximale CPU-Zeit wird mit dem Maximalwert aus der Job-Klassen-Definition vorgegeben, sofern der CPU-Zeit-Wert im Benutzereintrag noch größer Null ist.

Ohne Angabe einer maximalen CPU-Zeit wird der Standardwert aus der Job-Klassen-Definition 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).

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 Batch-Jobs unterschiedlich:

TTL bzw. PTL im Batch-Job erreicht

Hat der Batch-Job die maximale CPU-Zeit verbraucht und ist kein Programm geladen und war TTL < 300 Sekunden, so wird die Task mit folgender Meldung an der Konsole beendet:

EXC0736 ABNORMAL TASK TERMINATION.
        ERROR CODE '(CMD1011)': /HELP-MSG (CMD1011)

Hat der Batch-Job die maximale CPU-Zeit verbraucht und ist ein Programm geladen oder ist TTL >= 300 Sekunden, wird folgende Meldung an der Konsole ausgegeben:

EXC0070 Batch job with TSN (&00) has reached time runout.

Wenn der Systemparameter DIATTL=Q gesetzt ist (siehe "TTL bzw. PTL im Dialog-Job erreicht"), dann wird der Batch-Job beendet.

Sonst wird der Job jetzt für 20 min. angehalten, falls ein Programm geladen ist. Falls kein Programm geladen ist, wird das TTL des Jobs um 5 Minuten erhöht. Während dieser Wartezeit (5 CPU- bzw. 20 Zeit-Minuten) kann die Systembetreuung mit dem Kommando CHANGE-TASK-CPU-LIMIT die maximale CPU-Zeit des Batch-Jobs erhöhen und verhindern, dass wichtige Batch-Jobs wegen Zeitüberschreitung vorzeitig beendet werden.

Wird die maximale CPU-Zeit des Batch-Jobs innerhalb der Wartezeit von 5 bzw.
20 Minuten nicht erhöht, wird der Batch-Job (endgültig) beendet. Dabei sind folgende Fälle zu unterscheiden:

  1. Wurde das TTL bzw. PTL während eines Programmlaufes erreicht, wird die Meldung EXC0072 ausgegeben oder ggf. eine STXIT-Routine abgearbeitet, die maximal weitere 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 (TTL) oder Spin-Off ausgelöst (PTL).
    Ist eine Fehlerbehandlung vorgesehen, beginnt die weitere Bearbeitung bei dem nächsten SET-JOB-STEP- bzw. IF-BLOCK-ERROR-Kommando. Anderenfalls endet die Bearbeitung beim nächsten EXIT-JOB- bzw. LOGOFF-Kommando (PTL).

    EXC0072 TIME LIMIT FOR TASK/PROGRAM EXCEEDED. PROGRAM TERMINATED 
    EXC0073 MAXIMUM PROGRAM RUNTIME EXCEEDED. 'STXIT' ROUTINE OR 
            PROGRAM RUN USED UP 30 SECONDS. 
    
  2. Wurde das TTL während der Abarbeitung von BS2000-Kommandos erreicht, wird die Task mit folgender Meldung beendet:

    EXC0736 ABNORMAL TASK TERMINATION.
            ERROR CODE '(CMD1011)': /HELP-MSG (CMD1011)

TTL bzw. PTL im Dialog-Job erreicht

Im Normalfall ist die CPU-Zeit einer Dialogtask nicht begrenzt. Die Systembetreuung kann jedoch mit dem Systemparameter DIATTL (DIAlog Task Time Limit) die CPU-Zeit in Abhängigkeit vom TTL begrenzen. DIATTL kann die Werte Y, N und Q annehmen:

  1. DIATTL=N (Standard)
    Die Dialogtask wird mit Task-Time-Runout nicht beendet.

    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.

    EXC0067 CPU TIME SPECIFIED IN /SET-LOGON-PARAMETERS EXCEEDED.
            TASK CONTINUED

    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 30 CPU-Sekunden hochgesetzt, d.h. danach wiederholt sich der Vorgang.

      EXC0068 CPU TIME SPECIFIED AT PROGRAM START EXCEEDED. PROGRAM CONTINUED

    • Im interaktiven Dialog wird für ein Programm ohne definierte STXIT-Routine für die Ereignisklasse „Ende der Programmlaufzeit“ 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.

      EXC0075 TIME LIMIT FOR PROGRAM RUN EXCEEDED. PROGRAM TO BE CONTINUED?
              REPLY (Y=YES; N=NO)

    • In einem Programm mit einer solchen STXIT-Routine wird diese gestartet.
      Zur Abarbeitung der Routine werden der Task weitere 30 CPU-Sekunden zugestanden. Beendet die STXIT-Routine das Programm nicht, gibt sie die Kontrolle wieder an das Programm zurück. Sind die zugestandenen 30 CPU-Sekunden noch nicht aufgebraucht, läuft das Programm bis zur Überschreitung dieses neuen Zeitlimits weiter. Danach werden folgende zwei Meldungen ausgegeben:

      EXC0073 MAXIMUM PROGRAM RUNTIME EXCEEDED. 'STXIT' ROUTINE OR 
              PROGRAM RUN USED UP 30 SECONDS. 
      EXC0075 TIME LIMIT FOR PROGRAM RUN EXCEEDED. PROGRAM TO BE CONTINUED? 
              REPLY (Y=YES; N=NO)
      

      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.

  2. DIATTL=Y
    Die Dialogtask wird mit Task-Time-Runout beendet.

    Bei Überschreiten des TTL wird zunächst die Meldung EXC0076 ausgegeben:

    EXC0076 TASK CPU TIME LIMIT for DIALOG TASK exceeded.
            Task will be terminated after 30 sec extra CPU-time.

    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.

  3. DIATTL=Q (quick and quiet)
    Die Dialogtask wird mit Task-Time-Runout beendet (wie bei DIATTL=Y).

    Zusätzlich werden (auch für einen Batch-Job) sowohl für TTL wie auch für PTL alle zuvor erwähnten Zeitzuschläge bzw. Wartezeiten auf eine Sekunde verkürzt („quick“) sowie die auf eine Antwort wartende Meldung EXC0070 an der Konsole unterdrückt („quiet“).