我有一个需要从 Web 服务获取数据的 COBOL 程序。如果不使用 CICS,我最好的选择是什么?我认为 C 程序可以读取 Web 服务并将其保存到文件中,然后 COBOL 可以读取该文件。COBOL 可以调用 Web 服务吗?数据大小约为 300mb。
5 回答
Use the IBM TCP/IP 'EZASOKET' modules
I work for a company with a z/OS system running mostly COBOL, batch (JCL) and CICS. To call webservices, we wrote a module to implement HTTP 1.0 using TCP/IP. With modules
- EZASOKET
- GETHOSTBYNAME
- SOCKET
- CONNECT
- WRITE
- FCNTL
- READ
- CLOSE
- SELECTEX
supplementary modules:
- EZACIC04 translates EBCDIC to ASCII
- EZACIC05 translates ASCII to EBCDIC
- EZACIC06 convert character to bit mask
- EZACIC08 decode IP address
Since I wrote this for my company, I can't just give out the code. But for reference, it took me 3 days to write the module, and that was with an example to start with that did a partial hacky way of doing it.
You'll need to read through IBM's references to know how to use the EZA modules.
可以从 z/os 上的 COBOL 程序调用 java。
我们公司已经做到了。
- 您必须指定它是 RECURSIVE
- 你必须导入类
HelloJ 类是
“com.ibm.zos.batch.container.test.HelloJ”
JavaException 类是“java.lang.Exception”
BCDTranHelper 类是
“com.ibm.batch.spi.UserControlledTransactionHelper”。
- 你必须包括 JNI。链接部分。复制 JNI
* * *然后您可以在您的 PROCEDURE DIVISION 中从 COBOL 调用 java:
Invoke HelloJ "sayHello"
另请查看 Java Exception Check * 以了解如何处理异常。
如果您想从 z/os 上的 COBOL 程序调用 Web 服务,这将非常有用。
有关更多详细信息,请参阅此链接。
http://pic.dhe.ibm.com/infocenter/zos/v1r13/index.jsp?topic=%2Fcom.ibm.zos.r13.iean500%2Fcodeexm.htm
也许看看这篇文章。它建议为 Web 服务创建一个 C/C++ 包装器接口。虽然本文是针对 iSeries 的,但您可能能够在 zSeries 下使用 BPXBATCH 实现非常相似的东西
基本上,他们建议在您的 COBOL 代码和与 Web 服务接口的 C++ 代码之间使用 C 包装器。此解决方案允许 COBOL 以相对直接的方式调用 C 函数。C 函数通过使用 C++ 代理实现对 Web 服务的调用来模仿 C++ 行为。
如果您可以在您的站点使用 Java 从 cobol 程序调用 Java 来访问 Web 服务,则可能是一种选择。假设您使用 Enterprise cobol,请查看z/OS Volume II 上的 Java 独立应用程序的第 6.44 节
如果您使用的是 z/OS 2.1 或更高版本,请使用 z/OS 客户端 Web 支持工具包。
查看SYS1.SAMPLIB(HWTHXCB1)中的 Cobol 示例。
如果您的 Cobol 在 DB2 DSN 命令下运行,您还可以使用 SOAPHTTP* 标量函数。