是否有任何阻碍现代语言和 COBOL 之间的互操作性?

2 interop cobol programming-languages

我正在阅读有关人们如何在使用仍然使用 COBOL 的政府系统时难以找到使用 COBOL 的人。我还在阅读有关 Fortran(一种比 COBOL 早两年开发的语言)如何通过正确的库与 C、C++、R 和 Python 互操作的信息

这允许 Fortran 脚本在某种程度上与现代编程语言一起工作,甚至可以用现代编程语言创建可以与 Fortran 代码一起工作的脚本,使 Fortran 新手更容易使用它。是否有任何特定问题阻止 COBOL 与其他编程语言(如 SQL(用于类似于 COBOL 的数据库)具有类似的互操作性),这将使通常不会学习 COBOL 的现代程序员更容易使用它?

Sim*_*sch 7

Q1:现代语言和 COBOL 之间是否存在互操作性?

A1:与上述类似的简短回答:不,实际上经常这样做。

但这可能取决于为读者定义的“现代语言”是什么。即使使用“真正的”COBOL(不是一些“闪亮的”[可能被读作“混合”]“托管 COBOL”),您在大多数情况下也可以自由地直接调用任何 C 函数,因此或多或少可以调用任何东西(至少使用C 包装器),也可以像在操作系统上一样调用二进制文件(`CALL 'SYSTEM' USING 'some-executabe-or-script "param1" "param2"' 是一个常见的扩展)。

要直接调用任何“本机代码”(如Win32POSIX),您显然必须确保使用正确的参数定义,但 COBOL 2002+ 具有类似USAGE SIGNED-LONG,USAGE POINTER和类似的东西(扩展名USAGE COMP-5在这个地方也很常见)。

此外,通常还有直接的方式与套接字服务器、HTTP(S)、XML、JSON 等进行互操作;并且许多 COBOL 实现还允许将ASSIGN(行)顺序文件传输到管道,也允许以这种方式与其他程序交互。


问题 2:是否有任何特定问题阻止 COBOL 与 [...] SQL 具有 [...] 互操作性?

A2:不是,而且SQL是COBOL中直接使用的一个很常见的: EXEC SQL

很多人会说SQL不是“编程语言”。它是一种查询语言,可用于不同的环境,包括 COBOL。根据所使用的环境,EXEC SQL可以直接集成到 COBOL 环境中,或者使用将代码调整为普通 COBOL 的预解析器(通常是CALL一些“本机”代码,参见 Q1)。

Q3:[...东西] 这会让通常不会学习 COBOL 的现代程序员更容易使用它吗?

...这是一个完全不同的问题,无论“现代程序员”是什么。

对于程序员来说,了解一种编程语言完全取决于程序员和资源(如时间、手册、教程、导师)——以及程序员的意愿。许多人实际上并不“想”学习 COBOL(出于我听过但不理解或不同意的原因),其他人错过了一些资源(GnuCOBOL提供免费编译器,几乎所有 COBOL 编译器都有他们的手册在线提供,COBOL 的 ISO 工作组也在线发布标准草案;您通常可以在 COBOL 讨论论坛或邮件列表中找到导师以及许多示例)。

有一两件事,往往 特殊与COBOL不是语言本身,而是它的(而不是一个GUI“主机”与作业控制语言“JCL”点击或外壳使用)和/或软件使用的环境实际上是用 COBOL 编码的;几十年来维护的每个软件都有“特殊方式”,如果您遇到“实际上多年未维护的十年旧代码”,您会遇到更多麻烦/乐趣(这不是 COBOL 特有的,但使用 COBOL,您可能会更频繁地遇到此软件)。