Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Programmierregeln für Exit-Routinen

&pagelevel(4)&pagelevel

Da Exit-Routinen wie die rufenden Systemkomponenten im privilegierten Zustand ablaufen, sollten sie mit besonderer Sorgfalt programmiert werden. Insbesondere können die Verwendung von TU-Makros oder andere Programmierfehler einen Task-Abbruch oder gar einen Systemausfall zur Folge haben. Fehler in Exit-Routinen werden wie Systemfehler behandelt. Die im folgenden Abschnitt aufgeführten Regeln und Einschränkungen sind unbedingt zu beachten:

  • Exit-Routinen müssen in XS-Umgebung AMODE ANY und RMODE ANY enthalten und den XS-Programmierregeln genügen (siehe "Beispiel für eine Basisroutine mit Subroutinen").

  • Exit-Routinen müssen reentrant und read only programmiert sein.

  • Der CSECT-/ENTRY-Name einer Exit-Routine ist frei wählbar. Die verwendeten CSECT-/ENTRY-Namen müssen systemweit eindeutig sein.

  • Probleme der Aufrufverschachtelung, Parallelbenutzung oder Rekursion müssen durch die Exit-Routine selbst abgefangen werden. Wir verweisen auf das Programmierbeispiel für Exit-Routinen.

  • Existiert für eine Funktion sowohl ein TU-SVC als auch eine privilegierte Schnittstelle (z.B. REQM, $REQM), muss die Exit-Routine den privilegierten Aufruf verwenden, Ausnahme: PRNT (siehe Hinweise zu SPOOLOUT-Exit).

  • Felder in Systemtabellen (s. Anhang), die als „unused“ oder „reserved“ gekennzeichnet sind, dürfen von Exit-Routinen nicht verwendet werden. Sofern die Exit-Routine Task- bzw. Jobinformationen benötigt, empfehlen wir dringend, die Makros $TINF bzw. $RDUID, $JINBAS, $JINTSK, JOBINFO zu verwenden. Die entsprechenden Informationen können so problemlos aus den der Exit-Routine eigenen Parameterbereichen abgeholt bzw. abgefragt werden.

  • Privilegierte Maschinenbefehle dürfen nicht verwendet werden.

  • Die Exit-Routine darf für Systemtasks (interrupt driven tasks) keine Behandlung durchführen (entsprechendes Bit im TCB über Zugriffsmethode $EZOTYP abfragen).

  • Bei Dateibehandlung in Exit-Routinen muss eine eröffnete Datei unbedingt von dieser Routine auch wieder geschlossen werden, sonst führt es zu Komplikationen.

  • Exit-Routinen laufen im privilegierten Zustand TPR (Task Privileged); sie können auf eigenes Risiko privilegierte Systemschnittstellen verwenden.

  • Exit-Routinen werden zu einem Zeitpunkt aktiviert, zu dem im System kein „LOCK“- Zustand vorliegt.

  • Exit-Routinen dürfen die Gleitpunktregister benutzen, wenn diese vor Verwendung sichergestellt und danach wieder zurückgeladen werden.

  • Bei Verwendung von Makros, die die Einschalungsmakros ##BAL und ##BALR benutzen, müssen diese mit der Assembler-Anweisung OPSYN nach BAS bzw. BASR umgelenkt werden.