Das Asynchron-Teilprogramm MSGTAC wird aufgerufen, wenn
openUTM eine Knnn- oder Pnnn-Meldung ausgibt und
für diese Meldung als Meldungsziel MSGTAC eingetragen ist.
Wie MSGTAC als Meldungsziel eingetragen wird und wie übergebene Meldungen aufgebaut sind, ist im openUTM-Handbuch „Meldungen, Test und Diagnose“ beschrieben.
Der Vorgang MSGTAC wird von openUTM mit der Administrationsberechtigung und allen Keys der Anwendung ausgestattet, also mit dem Maximum an Berechtigungen.
Wird das MSGTAC-Teilprogramm mit KCRCCC >= 70Z abgebrochen, so wird es von openUTM für den weiteren Anwendungslauf gesperrt (STATUS=OFF). Es muss dann explizit vom Administrator freigegeben werden (STATUS=ON). Dies gilt nicht für einen Programmabbruch wegen programmiertem PEND ER/FR.
openUTM schreibt die Meldungen für das Meldungsziel MSGTAC auf den Pagepool. Solange der Warnlevel 2 des Pagepools nicht überschritten wird, ist sichergestellt, dass keine dieser Meldungen verloren geht.
Ausnahme: Die Meldungen, die das Über- bzw. Unterschreiten des Warnlevels anzeigen, können nicht in allen Fällen dem MSGTAC-Teilprogramm zugestellt werden.
Programmierhinweise
Das Asynchron-Programm MSGTAC liest die Meldung mit einem FGET-Aufruf in den Nachrichtenbereich des Teilprogramms. Die FGET-Aufrufe sollten dabei so lange wiederholt werden, bis der Returncode 10Z gesetzt wurde, so dass alle anstehenden Meldungen in einem Teilprogrammlauf gelesen werden.
Für jede UTM-Meldung steht eine Datenstruktur zur Verfügung, die im Teilprogramm zur Interpretation des Nachrichteninhaltes verwendet werden kann, für C/C++ sind diese in der Include-Datei kcmsg.h enthalten, für COBOL im COPY-Element KCMSGC.
Das MSGTAC-Teilprogramm läuft als Asynchron-Vorgang unter der internen UTM-Benutzerkennung KDCMSGUS mit KSET=MASTER und PERMIT=ADMIN.
Der MSGTAC-Vorgang darf nur aus einem Teilprogrammlauf bestehen.
In einem Teilprogrammlauf muss mindestens eine Meldung mit FGET gelesen werden, da das Teilprogramm sonst abnormal beendet wird.
Der Vorgang wird intern mit dem Administrator-TAC KDCMSGTC gestartet.
openUTM versorgt den KB-Kopf wie folgt:
Felder im KB-Kopf
Einträge bei MSGTAC
COBOL
C/C++
KCBENID
kcuserid
KDCMSGUS
KCTACVG
kccv_tac
KDCMSGTC
KCTACAL
kcpr_tac
KDCMSGTC
KCLOGTER
kclogter
KDCMSGLT
KCTERMN
kctermn
MT
Das MSGTAC-Teilprogramm kann die Programmschnittstelle zur Administration verwenden und es kann die Administrationskommandos absetzen. Insbesondere darf das MSGTAC-Teilprogramm die KDCS-Aufrufe DADM und PADM zur Administration von DPUT-Nachrichten und Druckern absetzen, siehe openUTM-Handbuch „Anwendungen administrieren“.
Generierungshinweise
Es darf pro Anwendung nur ein MSGTAC-Teilprogramm geben.
Das MSGTAC-Teilprogramm muss in der TAC-Anweisung definiert werden mit
TAC KDCMSGTC,PROGRAM=... .
Beispiel für ein MSGTAC-Teilprogramm
Das MSGTAC-Teilprogramm NOHACK soll nicht berechtigte Benutzer daran hindern, sich an eine UTM-Anwendung anzuschließen. Wenn mehr als 3-mal über einen LTERM-Partner ein Anmelde-Versuch mit ungültiger Benutzerkennung, falschem Passwort oder falschem Ausweis versucht wird, soll die Verbindung zum Terminal abgebrochen werden. Dazu müssen Sie zusätzliche Vorbereitungen treffen (siehe auch openUTM-Handbuch „Meldungen, Test und Diagnose“).
Vorbereitungen:
UTM-Tool KDCMMOD aufrufen.
GEN-Kommando absetzen; dabei ist der Name des Meldungsmoduls anzugeben.
Mittels MODMSG-Kommandos für die Meldungen K008, K033 und K094 als zusätzliches Meldungsziel MSGTAC definieren.
Das bisher entstandene Quellprogramm übersetzen und zusammen mit der Anwendung binden.
In der KDCDEF-Anweisung MESSAGE das Meldungsmodul definieren.
KDCPTRMA in TAC-Anweisung definieren.
Elegantere Lösung: Sie können die Angaben von Punkt 2. und 3. in eine Datei schreiben und diese dann als Eingabedatei für Punkt 1. verwenden.
Realisierung des MSGTAC-Teilprogramms:
Das MSGTAC-Teilprogramm NOHACK zählt die Anzahl der Fehlversuche in einem TLS. Akzeptiert openUTM die Anmeldung an die Anwendung (Meldung K008 oder K033), so wird dieser TLS wieder gelöscht.
Falls nach drei ungültigen Anmeldeversuchen der 4. Versuch wieder fehlerhaft ist, so soll das entsprechende Terminal über "asynchrone Administration" abgemeldet werden. Dies geschieht mit einem FPUT-Aufruf mit KCRN = "KDCPTRMA" und einem Nachrichtenbereich mit dem Inhalt PTERM=pterm, ACT=DIS (siehe auch openUTM-Handbuch „Anwendungen administrieren“).
Das Administrationskommando wird dann mit LPUT in der Benutzer-Protokolldatei protokolliert und der TLS gelöscht. Ein Beispiel in C finden Sie in Abschnitt "Beispiel: Event-Service MSGTAC" bzw. in COBOL in Abschnitt "Beispiel für ein Asynchron-Teilprogramm MSGTAC".Die K-Meldungen werden jeweils mit FGET vom MSGTAC-Teilprogramm gelesen. Nach der "Verarbeitung" einer K-Meldung wird mit FGET sofort die nächste K-Meldung gelesen, innerhalb desselben Teilprogrammlaufs. Eine Liste der K-Meldungen finden Sie im openUTM-Handbuch „Meldungen, Test und Diagnose“.