2012-04-04 3 views
2

Ich habe ein COBOL-Programm, das Daten von einem Web-Service erhalten muss. Ohne CICS zu verwenden, was sind meine besten Optionen? Ich dachte, dass ein C-Programm den Webdienst lesen und in einer Datei speichern könnte, dann könnte der COBOL diese Datei lesen. Kann COBOL einen Webservice anrufen? Die Daten sind ungefähr 300mb groß.Wie kann z/OS einen Webservice anrufen?

+0

Gibt es einen bestimmten Grund, warum CICS verboten hier ist? Der Zugriff auf CICS-Services über einen Batch-Job ist sehr einfach. – zarchasmpgmr

Antwort

0

Vielleicht werfen Sie einen Blick auf this article. Es schlägt vor, eine C/C++ - Wrapper-Oberfläche für den Web-Service zu erstellen. Obwohl dieser Artikel für iSeries gedacht ist, können Sie unter zSeries unter Verwendung von BPXBATCH unter Verwendung von BPXBATCH etwas sehr ähnliches implementieren. Sie schlagen im Grunde vor, einen C-Wrapper zwischen Ihrem COBOL-Code und dem C++ - Code zu verwenden, der mit dem Web-Service verbunden ist. Diese Lösung ermöglicht es COBOL, eine C-Funktion auf relativ einfache Weise aufzurufen. Die C-Funktion ahmt das C++ - Verhalten nach, indem sie den Aufruf des Web-Service mit einem C++ - Proxy implementiert.

0

Wenn Sie Java auf Ihrer Site verwenden können, ist Java möglicherweise ein Aufruf von einem Cobol-Programm, um auf den Webdienst zuzugreifen. Abschnitt überprüft Angenommen, Ihre Verwendung von Enterprise COBOL 6.44 von Java Stand-alone Applications on z/OS Volume II

+0

Ich stehe dabei zwar korrigiert, aber ... ich denke, es ist möglich, COBOL-Subroutinen (Methoden) aus einer Java-Anwendung aufzurufen, aber nicht umgekehrt. Java muss unter JNI ausgeführt werden, aber COBOL benötigt es nur, wenn es von Java aus aufgerufen wird. Wenn der Prozess auf oberster Ebene nicht unter JNI (dh Java) ausgeführt wird, können Prozesse niedrigerer Ebene, die ihn erfordern, nicht aufgerufen werden. Dies ist der Grund, warum OO COBOL-Hauptstrecken unter z/os, na ja, nicht existieren (sie können nur von einem Java-Programm aufgerufen werden). – NealB

5

Nutzung der IBM TCP/IP 'EZASOKET' Module

Ich arbeite für ein Unternehmen mit einem z/OS-System meist COBOL ausgeführt wird, Batch (JCL) und CICS. Um Webservices aufzurufen, haben wir ein Modul geschrieben, um HTTP 1.0 mittels TCP/IP zu implementieren. Mit Modulen

  • EZASOKET
    • GETHOSTBYNAME
    • STECK
    • CONNECT
    • WRITE
    • FCNTL
    • LESEN
    • SCHLIEßEN
    • SELECTEX

Zusatzmodule:

  • EZACIC04 EBCDIC übersetzt
  • EZACIC05 nach ASCII übersetzt ASCII zu EBCDIC
  • EZACIC06 convert Zeichen Bit
  • EZACIC08 dekodieren IP-Adresse
Maske

Seit ich das für meine Firma geschrieben habe, kann ich den Code nicht einfach rausgeben. Aber als Referenz brauchte ich 3 Tage, um das Modul zu schreiben, und das war mit einem Beispiel, um damit zu beginnen, das eine teilweise hacky Art machte, es zu tun.

Sie müssen die Referenzen von IBM durchlesen, um zu wissen, wie Sie die EZA-Module verwenden.

2

Es ist möglich, Java von COBOL-Programme auf z/OS zu nennen.
Wir haben es in unserer Firma getan.

  1. Sie müssen angeben, dass es RECURSIVE ist
  2. Sie haben die Klassen zu importieren

Klasse HelloJ ist
"com.ibm.zos.batch.container.test.HelloJ"
Klasse JavaException ist "java.lang.Exception"
Klasse BCDTranHelper ist
"com.ibm.batch.spi.UserControlledTransactionHelper".

  1. Die müssen Sie JNI enthalten. LINKAGE ABSCHNITT. COPY JNI

* * * Dann können Sie Java von COBOL in Ihrem PROCEDURE DIVISION mit aufzurufen:
Invoke HelloJ "sayHello"

Schauen Sie auch auf Java Exception Check * zu sehen, wie zu handhaben die Ausnahmen.

Dies ist sehr nützlich, wenn Sie einen Web-Service von Ihrem COBOL-Programm auf z/os aufrufen möchten.

siehe diesen Link für weitere Details.

http://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.iean500%2Fcodeexm.htm

Verwandte Themen