Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

SYSCMD-Exit (080)

&pagelevel(3)&pagelevel

Dieser Exit wird jedes Mal bei der Eingabe eines Systemkommandos durchlaufen, sofern die Task aktiviert ist.

Drei Fälle der Kommandoeingabe werden unterschieden:

  • im Dialog von der Datensichtstation (interaktiver Modus)

  • aus einer katalogisierten Datei (SPOOLIN, ENTER-JOB, CALL-PROCEDURE) oder im Stapelbetrieb

  • aus einem TU-Programm über die MCLP-Schnittstelle (siehe Handbuch „Makroaufrufe an den Ablaufteil“ [9])

Mithilfe der Exit-Routine kann der Kommandofluss aller aktiven Tasks während der OPEN-Session überwacht werden.

Die Exit-Routine kann

  • das eingegebene Kommando unverändert akzeptieren (Returncode EX080CAC)

  • das Kommando abweisen (Returncode EX080CRJ)

  • das Kommando verändern oder ersetzen (Returncode EX080CRO)

  • ein neues oder mehrere Kommandos einfügen (Returncodes EX080CRS/EX080CLR)

Die Rückinformation der Exit-Routine muss im Feld EX080RC des Parameterbereichs EX080 hinterlegt werden. Die Adresse des Parameterbereichs wird im R1 an die Exit-Routine übergeben.

Folgende Informationen werden an die Exit-Routine übergeben:

R1 = A(EX080-Parameterbereich)
R12 = A(TPR Program Manager)
R13 = A(Sicherungsbereich der rufenden Komponente)
R14 = A(indirekter Rücksprung)
R15 =A(Exit-Routine)

Hinweise

  • Register 12, 13 und 14 dürfen von der Exit-Routine nicht zerstört werden.

  • Die SYSCMD-Exit-Routine sollte Kommandos, die über die verschiedenen Wege eingegeben werden, dennoch gleich verarbeiten.

  • Wird die Exit-Routine deaktiviert, während ein Kommando durch mehrere ersetzt wird, wird der Dummy-Kommandosatz /REMARK SYSCMD EXIT NO MORE ACTIVE DURING PROCESSING an das Benutzerprogramm gesendet.

  • Werden in einer Prozedur Kommandos mit /SKIP-COMMANDS übergangen, wird für jedes übergangene Kommando die Exit-Routine gerufen. Das Gleiche gilt, wenn durch Spinoff (Suche nach STEP, LOGOFF, SET-JOB-STEP) Kommandos übergangen werden.

  • In CALL-PROCEDURE-Prozeduren ist die Variablensubstitution zum Zeitpunkt des Exit-Aufrufs bereits durchgeführt.

  • Das Sprungziel bei Sprungmarken wird zweimal zur Verfügung gestellt.

  • Die Rückinformation an die rufende Systemkomponente muss im Feld EX080RC des Parameterbereichs hinterlegt werden.

 

DSECT

         EX080 D
EX080PL  DSECT
*-
*-       INPUT  INFORMATION
*-
EX080IND DC    AL1(0)                  SOURCE OF COMMANDS
EX080TER EQU   1                       -CMD READ FROM A TERMINAL
EX080FIL EQU   2                       -CMD READ FROM A JCL FILE
EX080MCL EQU   4                       -CMD READ VIA MCLP
EX080TRN EQU   8                       -CMD READ VIA TRCMD          999
EX080BUF EQU   16                      -CMD FOUND IN BS2000 BUFFER  999
*-
EX080BIT DC    X'00'                   BIT_INFO                     900
EX080SDF EQU   X'80'                   -INPUT IN SDF STRUCTURED FORM002
EX080SD2 EQU   X'40'                   -INPUT IN NEW SDF STRUCT FORM120
EX080STR EQU   X'00'                   -INPUT IN STRING MODE        900
*-
EX080UNU DC    2X'00'                                               900
*-
EX080IR  DC    A(0)                    A (INPUT RECORD)
*-
*-       OUTPUT INFORMATION
*-
EX080RC  DC    AL1(0)                  SYSCMD EXIT'S RETURN CODE
EX80CAC  EQU   0                       -CMD REC ACCEPTED
EX80CRJ  EQU   4                       -CMD REC REJECTED
EX80CRO  EQU   8                       -CMD REC REPLACED BY ONE
EX80CRS  EQU   12                      -CMD REC REPLACED BY SEVERAL
EX80CLR  EQU   16                      -LAST CMD REC REPLACED
         DC    3X'00'                  UNUSED IN VER=710
*-
EX080RR  DC    A(0)                    A (RETURNED RECORD)
*-
*-       ADDITIONAL INPUT  INFORMATION
*-
EX080ILR DC    A(0)                    A (LOWER CASE INPUT RECORD)
EX080STD DC    A(0)                    A (STD FORM)
EX080PLL EQU   *-EX080PL               LENGTH OF SYSCMD EXIT  P/L

Erklärung der Felder

EX080IND

Art der Kommandoeingabe

EX080TER

Kommandoeingabe von der Datenstation

EX080FIL

Kommandoeingabe aus einer JCL-Date

EX080MCL

Kommandoeingabe über MCLP aus einem Benutzerprogramm

EX080BIT

Indikator für SDF

EX080SDF

Eingabe in SDF-Struktur

EX080STR

Eingabe nicht in SDF-Struktur

EX080IR

Adresse des Eingabe-Kommandosatzes

EX080RC

Rückinformation

EX080CAC

Kommando akzeptiert

EX080CRJ

Kommando abgewiesen

EX080CRO

Kommando geändert oder ersetzt

EX080CRS

Kommando wird durch mehrere Kommandos ersetzt

EX080CLR

letzter Kommandosatz ersetzt

EX080RR

Adresse des Kommandosatzes, der an die rufende Systemkomponente zurückgegeben wird (bei Ändern/Ersetzen)

Erklärung der Returncodes im Feld EX080RC

Returncode X'04': Kommando zurückweisen (EX080RC=EX080CRJ)

Im Dialogbetrieb wird keine Systemmeldung ausgegeben; die Exit-Routine kann jedoch eine Meldung an den Benutzer senden

Bei Kommandoeingabe aus einer katalogisierten Datei (PROC A oder PROC C bzw. entsprechende SDF-Kommandos) wird folgende Meldung ausgegeben:

/REMARK COMMAND REJECTED BY THE SYSTEM ADMINISTRATOR

Im Stapelbetrieb wird die gleiche Meldung in die Protokolldatei aufgenommen.

Returncode X'08': Kommando ersetzen oder ändern (EX080RC=EX080CRO)

Die Exit-Routine muss das neue oder geänderte Kommando selbst aufbauen und die Adresse des Kommandosatzes im Feld EX080RR des Parameterbereichs an die rufende Systemkomponente übergeben.

Aufbau des Kommandosatzes (sofern nicht normierter SDF-Übergabebereich)

0

2

4

SL-1

SL


Kommando mit Operanden

SL = Satzlänge

Der Kommandosatz darf keinen ISAM-Schlüssel, kein Fortsetzungszeichen und keine symbolischen Parameter (&...) enthalten. Die Satzlänge darf verändert werden.

  • Im Dialogbetrieb erfolgt keine Systemmeldung.

  • Bei Kommandoeingabe aus einer katalogisierten Datei wird das neue oder geänderte Kommando ausgegeben bzw. in die Protokolldatei geschrieben.

  • Bei Kommandoeingabe über MCLP muss das ersetzende Kommando ebenfalls MCLP-zulässig sein, sonst wird der Returncode X'14' (= ungültiges Kommando) an das Benutzerprogramm zurückgeben. Es darf weder DO-, CALL-, LOAD-, LOGOFF-, ABEND- oder EXECUTE-Kommando zurückgegeben oder ein anders Kommando über MCLP aufgerufen werden, da dann das Anwenderprogramm sofort entladen wird. – Tritt bei Abarbeitung des neuen Kommandos ein Fehler auf, wird X'10' (unzulässiges Kommando) an das Anwenderprogramm gemeldet.

Returncodes X'0C'/X'10': ein Kommandos durch mehrere Kommandos ersetzen
(EX080RC=EX080CRS/EX080CLR)

Gibt die Exit-Routine einen Kommandosatz an das System zurück (siehe RC = X'08') und setzt gleichzeitig im Feld EX080RC den Returncode auf X'0C' (= EX080CRS), erhält sie sofort die Steuerung zurück und kann einen weiteren Kommandosatz übergeben. Ab dem zweiten Aufruf nach Returncode X'0C', ist die Adresse des Eingabe-Kommandosatzes (Feld EX080IR des Parameterbereichs) auf null gesetzt. Wenn die Exit-Routine das letzte Kommando zurückgibt, muss sie den Returncode im Parameterbereich auf X'10' (=EX080CLR) setzen.

  • Im Dialogbetrieb erfolgt keine Systemmeldung, wenn ein Kommando durch mehrere ersetzt wurde.

  • Im Stapelbetrieb werden die ersetzenden Kommandos in die Protokolldatei geschrieben.

  • Bei Kommandoeingabe über MCLP sind die Hinweise zu beachten, die den Returncode '08' betreffen. Die o.g. Kommandos dürfen auch nicht in einer Kommandofolge zurückgegeben werden, da dann das Anwenderprogramm sofort entladen wird. Wenn im Anwenderprogramm ein Puffer für die Aufnahme der Bearbeitungsergebnisse des MCLP-Kommandos zur Verfügung gestellt wird, muss dieser Puffer die Ergebnisse der gesamten Kommandofolge aufnehmen können. Es ist zu erwarten, dass viele Anwenderprogramme, die MCLP-Aufrufe benutzen, nicht mehr korrekt ablaufen, wenn die Exit-Routine ein Kommando durch mehrere ersetzt!