CICS-Knotenfehlerprogramm und Freigabe aller Ressourcen bei Zeitüberschreitung einer Natural-Sitzung

Eine aktive Natural-Sitzung nutzt CICS-Ressourcen wie Thread-Speicher, Roll Facility-Einträge (d.h. Datensätze in einem VSAM RRDS File, in einer CICS-Zwischenspeicherwarteschlange oder im Hauptspeicher) sowie Roll Server Slots. Diese Ressourcen werden von der Natural CICS-Schnittstelle zugeordnet und korrekt freigegeben, sobald eine von der Natural CICS-Schnittstelle kontrollierte Sitzung normal oder abnormal beendet wird.

Falls eine Natural-Sitzung nicht von der Natural CICS-Schnittstelle kontrolliert wird, hilft ein Knotenfehlerprogramm (Node Error Program, NEP) bei der korrekten Freigabe der belegten Ressourcen.

In diesem Kapitel werden das CICS-Knotenfehlerprogramm und Aspekte von Zeitüberschreitungen (Timeouts) behandelt.

Die folgenden Themen werden behandelt:

Siehe auch:

  • Informationen zur Installation eines CICS-Knotenfehlerprogramms (Node Error Program) finden Sie im entsprechenden Abschnitt unter Installing Natural CICS Interface on z/OS in der Natural Installation-Dokumentation.


Sitzungsbeendigung erfolgt nicht unter Kontrolle der Natural CICS-Schnittstelle

In den folgenden Situationen erhält die Natural CICS-Schnittstelle beim Beenden der Sitzung keine Kontrolle und kann daher die von der Sitzung noch belegt gehaltenen Ressourcen nicht ordnungsgemäß freigeben:

  1. Ein Nicht-Natural-Programm, das von Natural aufgerufen wird, gibt ein -Kommando aus, um die CICS Task abnormal zu beenden.

  2. Einige CICS-Monitoring-Produkte bieten Tools zum Bereinigen von CICS Tasks an, so dass ein von der Anwendung gesetzter Exit zur abnormalen Beendigung umgangen werden kann.

  3. Ein Benutzer trennt ein Terminal von der CICS Region (durch Ausschalten des Geräts oder Verwendung einer geeigneten Session Manager-Funktion), während die entsprechende Natural-Sitzung in CICS zu diesem Zeitpunkt nicht aktiv ist (pseudo-konversationelle Bildschirm-Ein-/Ausgabe).

  4. Ein Benutzer war in der Natural-Terminalsitzung für den Zeitraum inaktiv, der mit dem TIMEOUT-Parameter im CICS-Segment des RACF-Benutzerprofils angegeben wurde.

Wiederherstellungsmechanismen

Die Natural CICS-Schnittstelle bietet einige Wiederherstellungsmechanismen zur Rückerholung aus solchen Situationen zu erholen.

Beispiel:

Immer wenn eine neue Natural-Sitzung gestartet werden soll, prüft Natural, ob eine andere Sitzung mit der gleichen Terminalkennung aktiv ist. Wenn eine solche Sitzung existiert, wird sie logisch beendet, und alle ihre Ressourcen werden freigegeben, bevor die neue Sitzung gestartet wird.

Wenn jedoch COMARET=OFF im Makro NTCICSP gesetzt ist, werden die Informationen zur Wiederaufnahme einer Natural-Sitzung in einem CICS-Zwischenspeicherdatensatz gespeichert, in dem die Terminalkennung Teil des Namens der Speicherwarteschlange ist. Dies hat zur Folge, dass ein anderer CICS-Benutzer, der versucht, eine Natural-Sitzung mit dieser Terminalkennung zu starten, die alte Sitzung fortsetzt, anstatt eine neue Sitzung zu starten. Es wird daher dringend empfohlen, COMARET=ON zu setzen.

CICS bietet die NEP-Exit-Schnittstelle (NEP = Node Error Program) DFHZNEP, die aufgerufen wird, wenn ein Benutzer ein Terminal aus der CICS-Region abmeldet. Die Sitzung geht verloren, wenn der Benutzer die Terminalverbindung trennt, während die entsprechende Natural-Sitzung in CICS nicht aktiv ist. Sie können dann mit DFHZNEP das Natural-spezifische Knotenfehlerprogramm NCIZNEP ausführen und die verlorene Sitzung beenden. Dieses Programm wird mit der Natural CICS-Schnittstelle ausgeliefert (siehe auch Natural CICS-Beispielprogramme).

Wird eine aktive und laufende Natural-Sitzung abgebrochen

  • mit CEMT SET TASK(...) FORCEPURGE,

  • mit CEKL SET TASK(...) FORCEPURGE,

  • durch ein CICS-Monitoring-Produkt,

  • durch Beendigung der Natural-Sitzung mittels der Funktion Flush Session der SYSTP Utility,

dann wird die entsprechende CICS-Task sofort mit CICS Abend AKEH beendet, ohne dass NCIZNEP zur Sitzungsbereinigung ausgeführt wird.

NCIZNEP einrichten

CICS stellt das Standard-Knotenfehlerprogramm (NEP) DFHZNEP zur Verfügung, das aufgerufen wird, wenn ein Benutzer die Verbindung zwischen einem Terminal und der CICS-Region trennt. Darüber hinaus bietet CICS das Beispielprogramm DFHZNEPX, das für eine benutzerdefinierte Fehlerbehandlung bestimmt ist, um vom Benutzer bereitgestellte Fehlerverarbeitungsprogramm aufzurufen.

Die Natural CICS-Schnittstelle bietet das Natural-spezifische-Knotenfehlerprogramm NCIZNEP. Sie können das Beispiel-Knotenfehlerprogramm XNCINEP2 verwenden, um DFHZNEP einzurichten und NCIZNEP auszuführen, um eine verlorengegangene Sitzung zu beenden. XNCINEP2 kann anstelle des Beispielprogramms DFHZNEPX verwendet werden.

Das Beispielprogramm XNCINEP2 führt folgende Funktionen aus:

  • Es ermöglicht es einem Fehlerverarbeitungsprogramm, die Kontrolle für alle möglichen, an DFHZNEP übergebenen Fehlercodes zu erhalten. Wenn XNCINEP2 die Kontrolle erhält, gibt es eine CICS-Trace-Anfrage aus, die anzeigt, mit welchen Fehlercodes DFHZNEP bei bestimmten Aktionen aufgerufen wurde und welche TCTTE-Fehlerinformationen damit zusammenhängen.

  • Ruft über EXEC CICS LINK das NCIZNEP-Modul auf, das eine Natural-Sitzungsbereinigung durchführt.

Das Beispielprogramm XNCINEP2 wird in der Quellcode-Library der Natural CICS-Schnittstelle mitgeliefert. Wenn DFHZNEPX bereits angepasst wurde, können Sie den entsprechenden Quellcode von XNCINEP2 nach DFHZNEPX kopieren und ihn an geeigneter Stelle vor dem abschließenden EXEC CICS RETURN-Aufruf in DFHZNEPX einfügen, wobei andere Produkte oder Komponenten zu berücksichtigen sind, für die eine Fehlerverarbeitung durchgeführt wird.

NCIZNEP-Funktionalität

Das Programm NCIZNEP versucht, eine Sitzung asynchron wiederaufzunehmen und anschließend logisch zu beenden, und zwar auf der Grundlage der Sitzungs-Neustartinformationen (NEXTTRANSID und Neustartdaten in COMMAREA- oder im CICS-Zwischenspeicher) einer Terminalsitzung mit anstehender pseudo-konversationeller Bildschirm-Ein-/Ausgabe.

Nach Beendigung bereinigt NCIZNEP die Parametereingabe und teilt dem Aufrufer (in der Regel DFHZNEP) mit, ob es seine Arbeit erfolgreich abgeschlossen hat, und startet die Bereinigungs-Task für die Natural-Sitzung.

Wenn in einem CICS-System mehr als eine Natural-CICS-Schnittstellenversion aktiv ist, kann die vom aufgerufenen Natural-versionsspezifischen Knotenfehlerprogramm durchgeführte Bereinigungsverarbeitung fehlschlagen, weil die zu beendende Natural-Sitzung von einer anderen Natural-CICS-Schnittstellenversion gehostet wird. Nach Abschluss der Ausführung von NCIZNEP kann DFHZNEP prüfen, ob die Durchführung der Operation erfolgreich war. Wenn die Operation nicht erfolgreich war, ruft NCIZNEP ein anderes Knotenfehlerprogramm auf, das zu einer anderen Natural CICS-Schnittstellenversion Bezug hat.

Wenn ein Benutzer ein Terminal von der CICS-Region trennt, während die entsprechende Natural-Sitzung im CICS nicht aktiv ist, kann DFHZNEP mehr als einmal die Kontrolle für verschiedene interne Fehlercodes erhalten, da jeder interne Fehlercode mit einer bestimmten CICS-Fehlermeldung verbunden ist.

Wenn Sie möchten, dass NCIZNEP versucht, eine zurzeit aktive Natural-Sitzung, für die NCIZNEP die Kontrolle erhält, sofort zu löschen, geben Sie PURGE=YES für das NCIZNEP-Modul an. Siehe die Installationsprozedur für die Natural CICS-Schnittstelle und den Abschnitt CICS Startup Parameters in Installing Natural CICS Interface on z/OS in der Natural-Installation-Dokumentation.

Erfordernisse bei MRO/CICSPlex-Umgebungen

Allgemein ist bei MRO/CICSPlex-Umgebungen Folgendes erforderlich:

  • DFHZNEP und NCIZNEP müssen in der TOR installiert sein.

  • Das Modul NCIZNEP muss in CICS mit EXECKEY(CICS) definiert sein.

Bei MRO/CICSPlex-Umgebungen, in denen NCIZNEP eine zurzeit aktive Natural-Session löschen soll, sind die folgenden zusätzlichen Erfordernisse zu beachten:

  • Das Modul NCIZNEP muss auch in den mit einer TOR verbundenen CICS AORs definiert sein. Eine Natural-Sitzung kann nur in der AOR bereinigt werden, in der eine Transaktion zur Löschung der Task gestartet wird.

  • Für das Modul NCIZNEP muss in der CICS TOR und in den AORs eine Transaktionskennung mit den Attributen TASKDATAKEY(CICS) und PRIORITY(255) definiert werden.

  • Die Transaktionskennung muss außerdem mit dem Parameter NEPTRAN in den CICS-Startparametern für das Modul NCIZNEP angegeben werden. Beschreibung siehe Natural-Installation-Dokumentation unter Installing Natural CICS Interface on z/OS.

  • Die Natural-Transaktionen, für die Sie die aktiven Natural-Sitzungen löschen wollen, müssen in CICS mit dem Attribut SPURGE(YES) definiert werden.

Besondere Aspekte beim Adabas System Coordinator

Wenn Sie die Knotenfehlerprogramme NCIZNEP (für die Natural CICS-Schnittstelle) und CORNEP (für den Adabas System Coordinator) von DFHZNEP aus aufrufen wollen, sollten Sie berücksichtigen, dass sowohl NCIZNEP als auch CORNEP möglicherweise versuchen, in Bezug zu Adabas stehende Ressourcen zur gleichen Zeit freizugeben. Um Störungen durch gleichzeitige Ausführung zu vermeiden, müssen Sie NCIZNEP immer vor CORNEP aufrufen und die Startzeit von CORNEP leicht verzögern, um sicherzustellen, dass NCIZNEP beendet ist, bevor CORNEP mit der Ausführung beginnt.

Weitere Informationen siehe Adabas System Coordinator Installation-Dokumentation.

Behandlung von Zeitüberschreitungen (Timeouts)

Wird eine Benutzersitzung durch Zeitüberschreitung (Timeout) beendet, werden die von der Natural-Sitzung gehaltenen Ressourcen vom CICS nicht freigegeben. Eine Benutzersitzung wird beispielsweise wegen Zeitüberschreitung beendet, wenn der Benutzer in der Natural-Terminalsitzung für den Zeitraum inaktiv war, der mit dem Parameter TIMEOUT im CICS-Segment des RACF-Benutzerprofils festgelegt wurde.

Im Falle einer Zeitüberschreitung aufgrund der Einstellung des Parameters TIMEOUT im RACF-Benutzerprofil wird die von CICS durchgeführte Aktion durch den Wert des Systeminitialisierungsparameters GNTRAN bestimmt. Natural-Ressourcen werden nicht ordnungsgemäß freigegeben, wenn entweder GNTRAN=NO gesetzt ist oder das ausgeführte "Good Night"-Programm das NCIZNEP-Modul nicht aufruft.

Beginn der AnweisungslisteUm sicherzustellen, dass alle von Natural belegten Ressourcen ordnungsgemäß freigegeben werden:

  1. Geben Sie für den Parameter GNTRAN eine CICS-Transaktionskennung an, bei der das PROGRAM-Attribut XNCIGNIT angibt.

  2. Verwenden Sie das Beispiel-Knotenfehlerprogramm XNCIGNIT, das in der Quellcode-Library der Natural CICS-Schnittstelle enthalten ist (siehe auch Natural CICS-Beispielprogramme), und definieren Sie es in CICS.

    XNCIGNIT muss assembliert und mit den CICS EXEC-Schnittstellenmodulen DFHELII und DFHEAI0 verlinkt werden.

    XNCIGNIT ruft über EXEC CICS LINK das Modul NCIZNEP auf, das eine Natural-Sitzungsbereinigung durchführt.

Bei MRO/CICSPlex-Umgebungen müssen Sie die folgenden Schritte durchführen:

  • Definieren und installieren Sie in der TOR das Beispielprogramm XNCIGNIT und die CICS-Transaktionskennung, für die das PROGRAM-Attribut XNCIGNIT angibt.

  • Fügen Sie im Beispielprogramm XNCIGNIT für Knotenfehler den Parameter SYSIDSYSID zum Statement EXEC CICS LINK hinzu, das NCIZNEP ausführt. SYSID muss den Systemnamen einer AOR angeben, die sich auf die TOR bezieht. Sie können eine beliebige AOR angeben, da eine CICS-Task für eine Sitzung in einer AOR nicht aktiv ist, wenn die Sitzung eine Zeitüberschreitung auslöst.

API USR4006N zum Abrufen oder Abbrechen von Sitzungen

Die Anwendungsprogrammierschnittstelle (API) USR4006N ermöglicht das Abrufen oder Abbrechen von Natural-Sitzungen auf der Grundlage von Auswahlkriterien, beispielsweise der Dauer der Inaktivität von Terminalsitzungen.

Es kann vorkommen, dass alle Sitzungen sequenziell gelesen werden, um eine oder mehrere Sitzungen zu finden, die einem bestimmten Kriterium entsprechen, da USR4006N nicht in der Lage ist, Sitzungen zufällig nach einem bestimmten Kriterium auszuwählen. Wir empfehlen Ihnen daher, USR4006N nur gelegentlich auszuführen, und auch nur dann, wenn Sie alle Natural-Sitzungen, die ein bestimmtes Kriterium erfüllen, in einem einzigen Durchgang entfernen möchten. Alternativ können Sie das Modul NCIZNEP und das Knotenfehler-Beispielprogramm XNCIGNIT verwenden, welche nur auf eine einzige Natural-Sitzung wirken und nicht auf alle Sitzungen zugreifen müssen.