Eine LOGON-Exit-Routine wird, falls vorhanden, in folgenden Fällen aufgerufen:
Im Dialogbetrieb vor der Initialisierung der Task, wenn der Benutzer eine unzulässige Benutzerkennung, Abrechnungsnummer oder ein falsches LOGON-Kennwort eingegeben hat.
Die Exit-Routine kann z. B. feststellen, von welcher Datenstation das LOGON abgeschickt wurde.Nach Bearbeitung eines Stapel- oder Dialog-LOGON.
Die Exit-Routine kann veranlassen, dass z.B. die Task beendet/abgebrochen wird oder Systemverwalterprozeduren aufgerufen werden.Bei einem ENTER-JOB- oder ENTER-PROCEDURE-Kommando eines Benutzers (nicht beim Operator-ENTER!), wenn falsche Benutzerkennung, Abrechnungsnummer oder falsches Kennwort angegeben wurden.
Die Exit-Routine kann z.B. feststellen, von welcher Datenstation das ENTER-JOB- oder ENTER-PROCEDURE-Kommando im Dialog gegeben wurde.Nach erfolgreicher Bearbeitung eines ENTER-JOB- oder ENTER-PROCEDURE-Kommandos.
Die Exit-Routine kann z.B. die Aufruferdaten mit den ENTER-Daten vergleichen und falls nötig, den ENTER-Auftrag abweisen
Folgende Informationen werden an die Exit-Routine übergeben:
R1 = A(EX030-Parameterbereich) R12 = A(TPR Program Manager) R13 = A(Sicherungsbereich der rufenden Komponente) R14 = A(indirekter Rücksprung) R15 = A(Exit-Routine)
Rückkehrinformation an die rufende Systemkomponente wird im Parameterbereich übergeben.
Ein vom Betriebssystem bereits akzeptiertes LOGON- bzw. ENTER-JOB-Kommando kann von der Exit-Routine mit Returncode X'01' noch zurückgewiesen werden. Der Returncode sollte mit der Form MF=M des EX030-Makros übergeben werden: EX030 MF=M,PARAM=...,RC=*ACCEPT/*REJECT
Der Benutzer erhält dann folgende Meldung:
% JMS0152 ZUGANG ZUM SYSTEM DURCH 'LOGON-EXIT-ROUTINE' ABGEWIESEN
Hinweise
Register 12, 13 und 14 dürfen von der Exit-Routine nicht zerstört werden.
Wird ein SET-LOGON-PARAMETERS, ENTER-PROCEDURE oder ENTER-JOB-Kommando mit falschen Benutzerdaten abgesetzt
(JMSXLEJS=JMSXLEIU,JMSXLEIP,JMSXLEIA), so hat der Returncode keinen Einfluss mehr; das Kommando wird in jedem Fall mit der entsprechenden Fehlermeldung abgewiesen.Bei ENTER-Aufträgen wird die LOGON-Verarbeitung, die zum Aufruf der Exit-Routine führt, nach der SPOOLIN-Phase durchgeführt.
Es wird empfohlen in LOGON-Exit-Routinen keinen Dialog zu führen.
EX030 MF=D MFTST MF=D,PREFIX=J,MACID=MSX,ALIGN=F, C DMACID=MSX,SUPPORT=(E,D,C,M,L),DNAME=MSXLE JMSXLE DSECT , *,##### PREFIX=J, MACID=MSX ##### * exit parameterarea description JMSXLER0 DS XL6 reserved JMSXLERC DS H (main) return code * decision of the exit routine JMSXLEAC EQU 0 accept job JMSXLERJ EQU 1 reject job * JMSXLEJP DS A pointer to JTBP JMSXLEJS DS FL1 job state * descibes the acceptance state of the job at the time the exit is * called JMSXLEJA EQU 0 job accepted JMSXLEIU EQU 4 job rejected (invalid user * id) JMSXLEIP EQU 8 job rejected (invalid * password) JMSXLEIA EQU 12 job rejected (invalid account * JMSXLECL DS FL1 instance calling the exit * descibes which instance calls the exit JMSXLEDL EQU 0 dialog logon JMSXLEBL EQU 4 batch logon JMSXLEEV EQU 8 enter validation JMSXLERL EQU 12 rlogin * JMSXLER2 DS XL2 reserved JMSX# EQU *-JMSXLER0
Das Feld JMSXLEJP enthält die Adresse des JTBP eines Auftrags, der gerade definiert oder gestartet werden soll. Änderungen in dieser Datenstruktur sind verboten. Eine DSECT des JTBP erhält man mit dem Makroaufruf $JTBP.
Nur bei Aktivierung der Exit-Routine während der Initialisierung einer Batch-Task zur Ausführung eines Stapelauftrags (JMSXLECL=JMSXLEBL) ist der JTBP vollständig.
Für einen akzeptierten Enterjob (JMSXLECL=JMSXLEEV) ist die TSN im JTBP noch nicht festgelegt.
Das LOGON-Kennwort ist nur versorgt, wenn die Exit-Routine nach negativer Prüfung der Zutrittsberechtigung aktiviert wird (JMSXLEJS=JMSXLEIU,JMSXLEIP,JMSXLEIA).
Bei Aktivierung der Exit-Routine während der Initialisierung einer akzeptierten Dialog- oder Batch-Task (JMSXLEJS=JMSXLEJA, JMSXLECL=JMSXLEDL, JMSXLEBL), können die wesentlichen Daten über die anlaufende Task mit dem Makro JOBINFO besorgt werden (Handbuch „Makroaufrufe an den Ablaufteil“ [9]).