Freigeben über


Linkmodell für Anforderungsmeldungen für TCP-Transaktionen

Das TCP-TRM-Link-Modell (Transaction Request Message) ermöglicht das Übergeben von Daten und Parametern zwischen TI und dem Server-TP über COMMAREA. Das Modell ermöglicht es auch einer Concurrent Server-Instanz, eine Verknüpfung mit einem CICS-DPL-Programm herzustellen. Der Standardlistener für TCP/IP verwendet zwei Netzwerkaustauschvorgänge, um ein einzelnes Transaktionsprogramm auszuführen, und erfordert Folgendes vom Client:

  • Senden einer Transaction Request Message (TRM) an den Standardlistener

  • Empfangen einer TRM-Antwort vom Anwendungsprogramm

  • Senden des Datenstroms der Anwendungsanforderung an das Servertransaktionsprogramm

  • Empfangen der Antwortdaten der Anwendung vom Servertransaktionsprogramm

    Das TCP-TRM-Link-Modell basiert auf dem CICS Concurrent Server-Modell. Das TCP-TRM-Link-Modell ist eine Microsoft-Variante, die die Ausführung von DPL-Serveranwendungsprogrammen innerhalb der CICS-Umgebung unterstützt und mit dem CICS LU6.2 Link-Programmiermodell kompatibel ist.

    Die folgende Abbildung fasst den Workflow zwischen dem Client, dem CICS-Standardlistener, der Concurrent Server-Instanz und dem Mainframetransaktionsprogramm zusammen. Die Zahlen in Klammern geben die ungefähre Reihenfolge an, in der Ereignisse auftreten. Nach der Abbildung folgt eine ausführliche Beschreibung der Ereignisse.

    Abbildung, die den Prozess zeigt, mit dem der Client den Standardlistener startet.
    Prozess, mit dem der Client den Standardlistener startet, der den Aufruf an die Concurrent Server-Instanz übergibt; diese sendet Daten an den Client und empfängt Daten vom Client, die der Server dann zur Verarbeitung durch die Geschäftslogik an das CICS-DPL-Programm übergibt

Das TCP-TRM-Link-Programmiermodell funktioniert wie folgt:

  1. Eine Anwendung ruft eine Methode in einer TI-Komponente auf, die entweder in Komponentendiensten oder im .NET Framework konfiguriert ist.

  2. Die TI-Runtime ruft den TI Automation-Proxy auf.

  3. Wenn es sich bei der Anwendung um eine COM+-Komponente handelt, führt der TI Automation-Proxy Folgendes aus:

    1. Liest die Typbibliothek, die zuvor vom TI-Designer erstellt wurde.

    2. Ordnet die Automatisierungsdatentypen COBOL-Datentypen zu.

      Wenn es sich bei der Anwendung um eine .NET Framework-Assembly handelt, führt der TI Automation-Proxy Folgendes aus:

    3. Liest die Assembly und die Metadaten, die zuvor vom TI-Designer erstellt wurden.

    4. Ordnet die .NET Framework-Datentypen COBOL-Datentypen zu.

      Der TI Automation-Proxy führt dann Folgendes aus:

    5. Ruft die Konvertierungsroutinen auf, um die Anwendungsdaten in Mainframe-COBOL-Typen zu konvertieren.

    6. Erstellt den vereinfachten Datenstrompuffer, der die COBOL-Deklaration oder das COBOL-Copybook darstellt.

    7. Übergibt den Datenstrom an die TCP-Transportkomponente.

  4. Der TI-TCP-Transport sendet eine Verbindungsanforderung an den Standardlistener unter Verwendung der IP-Adresse (Internet Protocol) des Mainframecomputers und der Portadresse des Listeners.

  5. Der Standardlistener akzeptiert die Verbindungsanforderung und weist die TI-Runtime an, die TRM zu senden. Der Standardlistener wartet dann auf die TRM.

    Die TRM ist ein formatierter Datensatz, der das aufzurufende Server-TP anhand seiner TRANID identifiziert. Das Listener-TP ist ein spezielles Mainframe-TP. Seine Hauptfunktion ist das Empfangen von Server-TP-Aufrufen, die von Clientanwendungen gesendet werden, die TCP/IP ausführen.

    Die TRANID des von IBM bereitgestellten Standardlistener-TP ist CSKL. Der TP-Name des Listener-TP, wie er in der CICS-Programmsteuerungstabelle (Program Control Table, PCT) angezeigt wird, lautet EZACIC02.

  6. Die TI-Runtime formatiert entweder eine standardmäßige oder eine benutzerdefinierte TRM und sendet sie an den Standardlistener. Die TI-Runtime wartet dann auf die TRM-Antwort.

  7. Der Standardlistener empfängt die TRM, sendet der TI-Runtime eine Empfangsbestätigung und liest dann den Inhalt der TRM. Der Listener interpretiert die Informationen in der TRM und extrahiert die Transaktions-ID des Concurrent Server-Programms, das die Anforderung verarbeiten soll.

  8. Der Standardlistener startet das Concurrent Server-TP-Programm (Mscmtics.cbl-Beispielanwendung), das durch die TRANID mithilfe von „EXEC CICS Start“ in der TRM identifiziert wird.

    „Mscmtics.cbl“ ist die Microsoft-TP-Beispieldatei, die zum Übergeben von Daten zwischen TI und dem Server-TP mit COMMAREA verwendet wird. Die Beispiel-TP-Datei „Mscmtics.cbl“ wurde von Microsoft entwickelt und wird als Teil der Host Integration Server-Software bereitgestellt. Sie befindet sich hier: $\Microsoft Host Integration Server\SDK\Samples\Comti\ProgrammingSpecifics\Tcp. Der Code muss vor der Verwendung dieses Modells auf dem Mainframecomputer kompiliert, verknüpft und installiert werden.

    Hinweis

    Wenn der Standardlistener die Concurrent Server-Instanz nicht starten kann, formatiert der Listener eine Fehlermeldung und sendet sie zurück an den COMTI-TCP-Transport. Mögliche Gründe, warum der Listener nicht gestartet werden kann:

    Abgelehnte Verbindung aufgrund eingeschränkter CICS-Ressourcen (z. B. eine Überschreitung der maximalen Anzahl von CICS-Tasks oder Concurrent Server-Aufgaben)

    Ungültige oder deaktivierte TRANID für die Concurrent Server-Instanz

    Ungültiges, deaktiviertes oder nicht verfügbares Concurrent Server-Programm, das der Transaktions-ID zugeordnet ist

    Hinweis

    Die Fehlermeldung des CICS-Listeners ist zeichenbasiert und beginnt immer mit den Buchstaben EZY. Die Länge der Fehlermeldung ist variabel, und das Ende der Meldung wird durch den Socket bestimmt, der vom CICS-Listener geschlossen wird. Der Standardlistener ruft die Anwendungsprotokollschnittstelle (Application Protocol Interface, API) für den Socket in der Hostumgebung auf. Der Standardlistener kann die TRM-Antwort nicht senden. Die TRM-Antwort repräsentiert einen Synchronisierungsprozess, der dem Transaktionsprogramm Zeit für den Start einräumt, bevor die Anwendungsanforderungsdaten vom Client gesendet werden. Dieser Synchronisierungsprozess ist aufgrund interner Aspekte der CICS-Architektur erforderlich (es gibt keine Garantie dafür, wann ein Transaktionsprogramm gestartet wird, nachdem die Anforderung erfolgt ist).

    Nachdem der CICS-Standardlistener den Startbefehl für die Concurrent Server-Transaktion ausgegeben hat, wird der Standardlistener für die Anwendungsverarbeitung nicht mehr benötigt und kann auf andere eingehende Anforderungen lauschen.

  9. Wenn die Concurrent Server-Instanz ausgeführt wird, liest sie die vom Standardlistener gesendete Transaktionsanfangsnachricht (Transaction Initial Message, TIM).

    Die TIM beschreibt die TCP/IP-Umgebung, in der der Server ausgeführt wird, und enthält die TCP/IP-Socketinformationen, die die Concurrent Server-Instanz für die Kommunikation mit dem COMTI-TCP-Transport und dem Clientnachrichtenheader verwendet, um sein Ausführungsverhalten anzupassen. Der Header enthält den Namen des Serverprogramms, mit dem die Verknüpfung hergestellt werden soll.

  10. Die Concurrent Server-Instanz führt Folgendes aus:

    1. Formatiert die standardmäßige oder benutzerdefinierte TRM-Antwort.

    2. Sendet eine TRM-Antwort an den TI-TCP-Transport mit der Information, dass die Anwendungsanforderungsdaten jetzt gesendet werden können.

    3. Gibt eine Empfangsnachricht aus und wartet auf die Anwendungsanforderungsdaten.

      Das Senden der TRM-Antwort schließt den ersten Teil der standardmäßigen Listeneraustauschsequenz ab.

  11. Die TI-Runtime wertet die TRM aus und übergibt die Daten mithilfe eines standardmäßigen EXEC CICS Link-Aufrufs über CICS COMMAREA an das Concurrent Server-Programm. Die TI-Runtime sendet auch ein Herunterfahren des Sockets (d. h. 2 Byte) und wartet dann auf die Antwortdaten.

  12. Nachdem die Concurrent Server-Instanz die Anwendungsanforderungsdaten empfangen hat, stellt sie eine Verknüpfung mit dem zuständigen Anwendungsprogramm her, das im Clientnachrichtenheader der TRM angegeben ist. Der CICS EXEC CICS LINK-Befehl wird verwendet, um die tatsächliche Serveranwendung zu starten. Der LINK-Befehl übergibt die vom COMTI-TCP-Transport empfangenen Anwendungsdaten an den gemeinsamen Speicherbereich (COMMAREA) und führt die Geschäftslogik für die Daten aus. Die gesamte Geschäftslogik ist im Server-TP definiert.

  13. Nachdem das Serveranwendungsprogramm die Verarbeitung der Anforderung abgeschlossen und die Antwort formuliert hat, gibt es einen EXEC CICS RETURN-Befehl aus, um die Steuerung wieder an das Concurrent Server-Programm (Mscmtics.cbl) zu übergeben. Das Server-TP bereitet die Antwortdaten zusammen mit einer standardmäßigen oder benutzerdefinierten TRM vor, akzeptiert die Daten aus COMMAREA und sendet die Antwortdaten der Anwendung dann über COMMAREA zurück an den TI-TCP-Transport. Das Abschließen der Verarbeitung der Anwendungsdaten signalisiert das Ende der zweiten Austauschsequenz.

  14. Die Concurrent Server-Instanz schließt den Socket.

  15. Der TI Automation-Proxy empfängt die Antwortdaten und verarbeitet die Antwort. Der TI Automation-Proxy führt Folgendes aus:

    1. Empfängt die Nachricht von der TCP-Transportkomponente.

    2. Liest den Nachrichtenpuffer.

      Wenn es sich bei der Anwendung um eine COM+-Komponente handelt, führt der TI Automation-Proxy Folgendes aus:

    3. Ordnet die COBOL-Datentypen Automatisierungsdatentypen zu.

    4. Ruft die Konvertierungsroutinen auf, um die Mainframe-COBOL-Typen in Anwendungsdaten zu konvertieren.

      Wenn es sich bei der Anwendung um eine .NET Framework-Assembly handelt, führt der TI Automation-Proxy Folgendes aus:

    5. Ordnet die COBOL-Datentypen .NET Framework-Datentypen zu.

    6. Ruft die Konvertierungsroutinen auf, um die Mainframe-COBOL-Typen in Anwendungsdaten zu konvertieren.

  16. Die TI-Runtime sendet die konvertierten Daten zurück an die COM- oder .NET Framework-Anwendung, die die Methode aufgerufen hat.

    Um dieses Modell zu implementieren, müssen Sie TI eine IP-Adresse, eine Portnummer und einen CICS-Programmnamen angeben, um die Anwendung auszuführen, die vom Concurrent Server-Programm (Mscmtics.cbl) übergeben wird. Das Modell erfordert die Installation des von IBM bereitgestellten Standardlisteners (EZACIC02) in CICS. Der CICS-IBM-Standardlistener verwendet von IBM bereitgestellte Standardeinstellungen.

    Host Integration Server enthält Beispielcode, der zeigt, wie das TCP TRM Link-Programmiermodell implementiert wird. Der Beispielcode befindet sich hier: \Installationsverzeichnis\SDK\Samples\AppInt. Starten Sie Microsoft Visual Studio, öffnen Sie das gewünschte Tutorial, und befolgen Sie die Anweisungen in der Readme-Datei.

    Informationen zum Konfigurieren des Mainframes und zum Schreiben von Serveranwendungen für TCP/IP finden Sie im „TCP/IP V3R2 for MVS: CICS TCP/IP Socket Interface Guide“ (IBM-Dokument #SC31-7131).

Weitere Informationen

Komponenten von Transaction Integrator
Transaktionsanforderungsnachrichten
Konvertieren von Datentypen von Automation zu z/OS COBOL]
Konvertieren von Datentypen von z/OS COBOL in Automation
CICS-Komponenten
Auswählen des geeigneten Programmiermodells
Programmiermodelle