Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

Nichtunterbrechbarkeit

&pagelevel(3)&pagelevel

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