Freigeben über


Benutzerdatenmodell für Anforderungsmeldungen für TCP-Transaktionen

Das Programmiermodell für TCP-TRM-Benutzerdaten (Transaction Request Message) ermöglicht den direkten Austausch von Daten und Parametern zwischen TI und dem Host-TP. Das TCP-TRM-Benutzerdaten-Modell basiert auf dem CICS Concurrent Server-Modell. Der Standardlistener 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

    Die folgende Abbildung fasst den Workflow zwischen dem Client, dem CICS-Standardlistener und der Concurrent Server-Instanz 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 und dann Daten vom Client sendet und empfängt.
    Prozess, mit dem der Client den Standardlistener startet, der den Aufruf an die Concurrent Server-Instanz übergibt, die dann Daten an den Client sendet und von diesem empfängt

Übersicht über den Workflow für das TCP-TRM-Benutzerdaten-Programmiermodell

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

  1. Eine Anwendung ruft ein TI-.NET-Objekt auf, das entweder in Komponentendiensten oder im .NET Framework konfiguriert ist.

  2. Die TI-Laufzeit ruft den TI-Proxy auf.

  3. Der TI-Proxy führt Folgendes aus:

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

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

      Dann führt der TI-Proxy Folgendes aus:

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

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

    5. Übergibt die Nachricht 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 CICS-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 Programmsteuerungstabelle (Program Control Table, PCT) angezeigt wird, lautet EZACIC02.

  6. Die TI-Runtime formatiert die TRM und sendet sie an den Standardlistener. TI wartet 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, das durch die TRANID mithilfe von „EXEC CICS Start“ in der TRM identifiziert wird (Mscmtics.cbl-Beispielanwendung).

    „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. Sie 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 TI-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.

  1. 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, befindet sich der Standardlistener nicht mehr in der Schleife für die Anwendungsverarbeitung und kann auf andere eingehende Anforderungen lauschen.

  2. 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.

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

    1. Formatiert die 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.

  4. TI wertet das TRM aus und übergibt die Daten an die Concurrent Server-Instanz. TI sendet auch das Herunterfahren des Sockets, und TI wartet dann auf die Antwortdaten.

  5. Nachdem der Gleichzeitige Server die Anwendungsanforderungsdaten empfangen hat, führt der Server die Geschäftslogik für die Daten aus.

  6. Nachdem der Server die Verarbeitung der Anforderung abgeschlossen und die Antwort formuliert hat, bereitet er die Antwortdaten vor und sendet die Antwort dann direkt an den Client. Das Abschließen der Verarbeitung der Anwendungsdaten signalisiert das Ende der zweiten Austauschsequenz.

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

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

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

    2. Liest den Nachrichtenpuffer.

      Der TI-Proxy führt Folgendes aus:

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

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

  9. Die TI-Runtime sendet die konvertierten Daten zurück an die .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 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
TI-Runtime
Auswählen des geeigneten Programmiermodells
Programmiermodelle