Ein fernes CICS-Programm vom EGL-generierten Java-Code oder vom Debugger aufrufen

Sie können ein CICS-Programm vom EGL-generierten Java™-Code oder vom EGL-Debugger aus fern aufrufen. Das aufgerufene Programm kann von EGL oder VisualAge Generator generiert oder in einer anderen Sprache geschrieben werden.

Die Eigenschaften im Verbindungsoptionsabschnitt und das Element "calllink" variieren zum Zeitpunkt des Debugging oder der Generierung je nach Merkmalen des aufgerufenen Programms. Insbesondere gilt:
Verhalten zur Ausführungszeit:
  1. Der EGL-Laufzeitcode verwendet den Verbindungsoptionsabschnitt, der zum Generieren des aufrufenden Programms verwendet wurde. Aus diesem Abschnitt wird der Name des aufgerufenen Programms und der zugehörige CICS-Transaktionscode entnommen.
  2. Der EGL-Laufzeitcode konvertiert die Daten zu EBCDIC anhand der Eigenschaft "conversionTable", die im Element "callLink" angegeben ist, sowie anhand der Datentypen der Felder, die an das aufgerufene Programm übergeben wurden.
  3. Der EGL-Laufzeitcode verwendet die Connectors von CICS Transaction Gateway, um die Transaktion zu starten sowie um den aufgerufenen Programmnamen und die Parameter zu identifizieren und an die CICS-Region zu übergeben. Der genaue Pfad hängt vom Wert von "remoteComType" ab: CICSECI, CICSEXCI, CICSJ2C oder CICSSSL.
  4. Die folgenden Ereignisse hängen von den Eigenschaftswerten im Element "calllink" ab:
    1. Wenn der Wert von "remotePgmType" EXTERNALLYDEFINED oder EGL und der Wert von "parmForm" COMMDATA ist, ruft das CICS-Spiegelprogramm das aufgerufene Programm direkt auf und der Laufzeitcode verwendet den COMMAREA, um Werte mit dem aufgerufenen Programm auszutauschen. (COMMDATA ist nur verfügbar, wenn jedes übergebene Argument eine Wertvariable oder ein Literal und keine Referenzvariable ist.)
    2. Wenn der Wert von "remotePgmType" EXTERNALLYDEFINED oder EGL und der Wert von "parmForm" COMMPTR ist, ruft das CICS-Spiegelprogramm das EGL-Catcher-Programm auf.

      Der Name des Catcher-Programms hängt von der Version des Client-Laufzeitcodes ab, der den Aufruf durchführt. Für die EGL-Version 7.0 oder höher lautet das Catcher-Programm ELACSV7. Für ältere Versionen von EGL (oder für VisualAge Generator) lautet das Catcher-Programm ELACSV.

    3. Wenn der Wert von "remotePgmType" EXTERNALLYDEFINED oder EGL und der Wert von "parmForm" CHANNEL ist, ruft das CICS-Spiegelprogramm das EGL-Catcher-Programm auf. In diesem Fall lautet der Name des Catcher-Programms jedoch ELACSV7C.
  5. Wenn ein Catcher-Programm verwendet wird, gelten die folgenden Anweisungen:
    • Wenn der Wert von "parmForm" COMMPTR ist, wandelt das Programm die aufrufenden Parameter in Zeiger um. In diesem Fall ruft das Catcher-Programm das aufgerufene Programm mit einer der beiden folgenden Möglichkeiten auf: durch einen dynamischen COBOL-Aufruf (wenn der Wert "remotePgmType" EGL ist) oder durch Verwendung des CICS-Befehls LINK (wenn der Wert "remotePgmType" EXTERNALLYDEFINED ist).
    • Wenn der Wert von "parmForm" CHANNEL ist, wird jeder Parameter in einem separaten Container übergeben, dessen Inhalt keine Zeiger enthält. In diesem Fall ruft das Catcher-Programm immer das aufgerufene Programm auf, indem der CICS-Befehl LINK verwendet wird.

    Das Catcher-Programm ruft das aufgerufene Programm mit einer der beiden folgenden Möglichkeiten auf: durch einen dynamischen COBOL-Aufruf (wenn der Wert "remotePgmType" EGL ist) oder durch Verwendung des CICS-Befehls LINK (wenn der Wert "remotePgmType" EXTERNALLYDEFINED ist).

  6. Das aufgerufene Programm wird ausgeführt und gibt die Daten über denselben Pfad zurück, über den es gestartet wurde: entweder direkt oder durch den EGL-Catcher.
  7. Der EGL-Laufzeitcode konvertiert die Daten zurück zur Codepage des aufrufenden Programms gemäß der Ländereinstellung der Clientmaschine und der Datentypen der Felder, die an das aufgerufene Programm übergeben wurden.
Beispiel:
  1. Der CICS-Systemprogrammierer erstellt die Transaktion TRNX und ordnet sie dem CICS-Spiegelprogramm DFHMIRS zu. Der Transaktionsname muss mit dem Namen identisch sein, der in der "calllink"-Eigenschaft "serverID" angegeben wurde. Die Merkmale dieser Transaktion werden im folgenden Abschnitt beschrieben: "'serverID' im Element 'callLink'".
  2. Unter CICS erwartet das vorhandene Nicht-EGL-Programm PGMX Argumente in Form von Zeigern im COMMAREA.
  3. Ihr Java-Programm enthält eine Anweisung, um PGMX aufzurufen.
  4. In dem zum Generieren des aufrufenden Programms verwendeten Erstellungsdeskriptor verweist die Erstellungsdeskriptoroption "linkage" auf den Verbindungsoptionsabschnitt "pgmLinkage".
  5. Gehen Sie in diesem Verbindungsoptionsabschnitt wie folgt vor:
    1. Legen Sie das Element "callLink" und die Eigenschaft "serverID" auf den entsprechenden Transaktionscode (in diesem Fall auf TRNX) fest.
    2. Legen Sie die Eigenschaft "remoteComType" auf CICSECI, CICSJ2C oder CICSSSL fest, um anzugeben, dass sich das Programm in der CICS-Umgebung befindet.
  6. Der EGL-Laufzeitcode konvertiert zur Ausführungszeit die Daten und sendet dann den Transaktionscode (TRNX), den Programmnamen (ELACSV7, da dieser Aufruf die Verwendung des EGL-Catcher-Programms erfordert) und die Parameter (einschließlich des Namens des aufgerufenen Zielprogramms) an CICS Transaction Gateway.
  7. CICS Transaction Gateway ruft TRNX auf dem CICS-Server auf. Diese Transaktion ist dem CICS-Spiegelprogramm DFHMIRS zugeordnet.
  8. Das CICS-Spiegelprogramm ruft das EGL-Catcher-Programm ELACSV7 auf (unter der Voraussetzung, dass der EGL-Java-Laufzeitcode die Version 7.0 oder höher hat).
  9. Das EGL-Catcher-Programm empfängt die Parameter als Werte, konvertiert die Werte, die über das Netz in einen Zeiger pro Parameter übergeben werden, und ruft PGMX auf.
  10. Wenn PGMX beendet wurde, wird die Steuerung zurück an das Catcher-Programm gegeben, das die Zeiger zu den zurückgegebenen Daten empfängt und einen Puffer für die Datenwerte erzeugt, die an das aufgerufene Programm zurückgegeben werden.
  11. Das Catcher-Programm kehrt zum Spiegelprogramm zurück, das die Daten über CICS Transaction Gateway zurück zum EGL-Java-Laufzeitcode sendet.
  12. Der EGL-Java-Laufzeitcode empfängt diese Werte, konvertiert sie in die entsprechende Ländereinstellung und führt die Ausführung des aufrufenden Programms fort.

Feedback