【问题标题】:How can z/OS call a web service? [closed]z/OS 如何调用 Web 服务? [关闭]
【发布时间】:2012-04-04 13:17:20
【问题描述】:

我有一个需要从 Web 服务获取数据的 COBOL 程序。如果不使用 CICS,我最好的选择是什么?我认为 C 程序可以读取 Web 服务并将其保存到文件中,然后 COBOL 可以读取该文件。 COBOL 可以调用 Web 服务吗?数据大小约为 300mb。

【问题讨论】:

  • CICS 在这里被禁止有什么特别的原因吗?从批处理作业访问 CICS 服务非常容易。

标签: web-services cobol mainframe zos


【解决方案1】:

使用 IBM TCP/IP 'EZASOKET' 模块

我在一家拥有 z/OS 系统的公司工作,该系统主要运行 COBOL、批处理 (JCL) 和 CICS。为了调用 web 服务,我们编写了一个模块来使用 TCP/IP 实现 HTTP 1.0。带模块

  • EZASOKET
    • GETHOSTBYNAME
    • 插座
    • 连接
    • FCNTL
    • 阅读
    • 关闭
    • SELECTEX

补充模块:

  • EZACIC04 将 EBCDIC 转换为 ASCII
  • EZACIC05 将 ASCII 转换为 EBCDIC
  • EZACIC06 将字符转换为位掩码
  • EZACIC08 解码 IP 地址

因为我是为我的公司编写的,所以我不能只给出代码。但是作为参考,我花了 3 天时间来编写模块,并且从一个示例开始,它做了一个部分 hacky 的方式。

您需要通读 IBM 的参考资料以了解如何使用 EZA 模块。

【讨论】:

    【解决方案2】:

    可以从 z/os 上的 COBOL 程序调用 java。
    我们公司已经做到了。

    1. 你必须指定它是递归的
    2. 你必须导入类

    HelloJ 类是
    “com.ibm.zos.batch.container.test.HelloJ”
    JavaException 类是“java.lang.Exception”
    BCDTranHelper 类是
    “com.ibm.batch.spi.UserControlledTransactionHelper”。

    1. 您必须包含 JNI。 链接部分。 复制 JNI

    ***然后您可以在您的 PROCEDURE DIVISION 中从 COBOL 调用 java:
    调用 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

    【讨论】:

      【解决方案3】:

      也许看看this article。它建议为 Web 服务创建一个 C/C++ 包装器接口。虽然本文是针对 iSeries 的,但您也许可以在 zSeries 下使用 BPXBATCH 实现非常相似的东西

      基本上,他们建议在您的 COBOL 代码和与 Web 服务接口的 C++ 代码之间使用 C 包装器。此解决方案允许 COBOL 以相对直接的方式调用 C 函数。 C 函数通过使用 C++ 代理实现对 Web 服务的调用来模仿 C++ 行为。

      【讨论】:

        【解决方案4】:

        如果您可以在您的站点上使用 Java,则可以选择从 cobol 程序调用 Java 来访问 Web 服务。假设您使用 Enterprise cobol,请查看 Java Stand-alone Applications on z/OS Volume II 的第 6.44 节

        【讨论】:

        • 我会对此进行更正,但是...我认为可以从 Java 应用程序调用 COBOL 子例程(方法),但反之则不行。 Java 需要在 JNI 下运行,而 COBOL 只有在从 Java 调用时才需要它。如果没有在 JNI 下运行的顶级进程(即 Java),则无法调用需要它的较低级别的进程。这就是为什么 z/os 下的 OO COBOL 主线不存在(它们只能从 Java 程序中调用)。
        【解决方案5】:

        如果您使用的是 z/OS 2.1 或更高版本,请使用 z/OS 客户端 Web 启用工具包。

        查看 SYS1.SAMPLIB(HWTHXCB1) 中的 Cobol 示例。

        如果您的 Cobol 在 DB2 DSN 命令下运行,您还可以使用 SOAPHTTP* 标量函数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-18
          • 2011-01-30
          相关资源
          最近更新 更多