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.