【问题标题】:Sockets and COBOL套接字和 COBOL
【发布时间】:2010-04-12 21:00:16
【问题描述】:

我在一家仍然使用 COBOL 进行所有组织工作的医院获得了一份工作,整个(现在 20 TB)数据库(这是一个自制的,猜猜看,COBOL)自过去 45 年(左右)。

这就是我的故事。现在回答我的问题:

目前,所有套接字(据我所见)都是由 COBOL 程序实现的,将它们的数据写入文件。然后这些文件由 C++ 程序(这是 1980 年代后期添加的一个附加模块)读取,并使用发送到数据库的 C++ 套接字。

现在这个解决方案已经停止工作,因为他们正在将数据库从 COBOL 移动到 COBOL,是的 - 他们没有使用 MySQL 左右 - 他们实现了一个新数据库 - 再次在 COBOL 中。我问在我之前在那里工作的那个人(他现在大约 70 岁)为什么会有人这样做,他告诉我他非常擅长 COBOL,以至于他不想用任何其他语言编写它。

到目前为止一切顺利,现在我的问题:

  • 如何在 COBOL 中实现套接字连接?我需要为外部 COBOL 数据库创建一个接口,例如,192.168.1.23:283

【问题讨论】:

  • 你真的很同情我。有人在这里犯了一个大错误,他们需要将这些数据移植出去,让这个 70 岁的老人优雅地退休。他们离开的时间越长,要解决这个问题就会花费他们一大笔钱。
  • 问题就像...... COBOL 从存在中消失了......就像每个人都想把它从他们的眼睛里弄出来一样。我什至找不到官方文档左右。我很无奈,不知道如何在其中实现套接字..
  • 我想我能帮上忙……但我需要更多信息。 COBOL 程序在哪里托管?什么是执行环境(Micro Focus、IMS over IBM OS/2、CICS over zOS)、编译器等。但这里的主要信息是:你不能在 cobol 中实现套接字,你不能在 C/C++ 中实现它。你必须依赖你的环境才能做到这一点。
  • 我会说“套接字是不可能的。该死!我猜我们将不得不使用 MySQL..”
  • COBOL 并没有从存在中消失。逛逛(在此处插入主要银行)的计算机部门。

标签: sockets network-programming cobol


【解决方案1】:

您需要提供有关您的操作系统和编译器的更多信息。

如果您在 IBM z/OS 上使用支持语言环境的编译器,则只需从 z/OS 通信服务调用 EZASOCK 函数。这些调用在他们的参考文献中有很好的记录,并且有很好的 Cobol 示例。

其他平台会有其他选择。

在大多数情况下,您可以只“调用”一个用您需要的任何语言编写的外部模块,但也可以是 DLL 或 sharedLib 或其他任何语言。

您能否详细介绍一下您的环境?

为什么不直接从 Cobol 程序写入数据库?

【讨论】:

    【解决方案2】:

    IBM 大型机有两个可以从 COBOL 使用的套接字 API。 一种用于 CICS 程序(其中有特殊的线程安全和环境注意事项),另一种用于普通 Batch 或 IMS 程序。

    已实现完整的 TCP/IP 功能,其可靠性足以处理符合 MVA 标准的信用卡协议(我知道,因为我已经做到了)。

    【讨论】:

      【解决方案3】:

      大多数 COBOL 编译器都允许您链接和调用对象模块或 DLL。正如卡蒂所说,我知道我可以提供帮助,但需要更多信息。我以前从 Windows 到 DEC 都这样做过,所以我知道可以做到。

      【讨论】:

        【解决方案4】:

        请记住,Google 是您的朋友。

        答案在很大程度上取决于您的执行环境。

        IBM 确实声称拥有可从 COBOL 调用的 Sockets API,作为 CICS for z/OS 的一部分。

        Micro Focus 似乎有些东西。

        【讨论】:

        • 您可以(几乎)总是从 COBOL 调用外部子例程。如果 OP 可以提及环境,我相信这里有人可以提供帮助
        猜你喜欢
        • 1970-01-01
        • 2016-08-01
        • 2021-11-16
        • 2016-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        相关资源
        最近更新 更多