Prozeduren und Programme gegen Unterbrechung sichern
Durch die Operandeneinstellung INTERRUPT-ALLOWED=*NO bei SET-PROCEDURE-OPTIONS bzw. MODIFY-PROCEDURE-OPTIONS wird eine Prozedur gegen Unterbrechungen von Kommando-Eingaben im Dialog-Modus geschützt.
Wenn ein Programm in einer Prozedur aktiviert wird, muss die Prozedur auch vor unkontrollierten Kommando-Eingaben geschützt werden: z.B. wenn das Programm Daten oder Anweisungen verabeitet und einige davon das Programm veranlassen, Kommandos auszuführen (CMD-Makro) oder eine Unterbrechung verursachen (BKPT-Makro), die bei der Prozedur nicht vorgesehen ist.
Beispiel
/SET-PROCEDURE-OPTIONS ...,INTERRUPT-ALLOWED=NO
/ASSIGN-SYSDTA TO=*PRIMARY
/START-LMS
----------> Dialog am Terminal:
//
//...
//END
/MODIFY-JOB-SWITCHES ON=(4,5)
/START-EDT
----------> Dialog am Terminal:
*
* ...
*
/EXIT-PROC
Ist eine Prozedur vor Unterbrechung geschützt, so wird normalerweise auch ein in dieser Prozedur ablaufendes Programm gegen Unterbrechung durch die Funktionstaste geschützt. Ist im Programm jedoch eine STXIT-Routine für -Unterbrechung definiert (ESCPBRK), so wird das Ereignis -Unterbrechung an diese STXIT-Routine durchgereicht. Die Verantwortung für die Behandlung dieses Ereignisses liegt dann beim Programm. Allerdings führt das zu Problemen, wenn das Programm mit einem BKPT-Makro reagiert.
Beispiel
/SET-PROCEDURE-OPTIONS ...,INTERRUPT-ALLOWED=NO
/START-EXECUTABLE-PROGRAM ...
// <-----------[K2]
[K2]-STXIT> Ausgabe PC
BKPT
"Zurück zur Kommandoebene"
/EXIT-PROCEDURE


