sql-server - 有没有办法从 z/OS 大型机访问 Sql 服务器并在 IBM 3270 终端仿真中得到结果?

标签 sql-server cobol mainframe zos 3270

是否有任何方法(可能很便宜)从 z/OS 大型机(COBOL 程序)访问 Microsoft Sql Server 并在 3270 终端仿真中获得结果?
我知道 3270 是一个相当古老的系统,但在银行 CED 中,仍然很受欢迎。

最佳答案

这取决于您实际想要做什么。我对你的问题的理解是,你希望有一个基于大型机的进程访问 SQL Server 数据库,然后对结果执行某些操作,可能涉及 3270 终端。

如果你可以使用Unix系统服务,你可以编译一个TDS库,如FreeTDS然后使用 C 程序对结果执行您想要的操作。如果您想变得更复杂,可以通过使用 IBM C、SAS C 或 Dignus C/C++ 编译代码来从 native z/OS 环境运行连接。 。我可以推荐 Dignus,我已经用它来构建与 z/OS 上的其他语言交互的代码。 Dignus 头文件和运行时库(根据内存)具有一些 FreeBSD 血统,这有助于简化移植。

使用这种方法,您可以获得一个加载模块,您可以从系统的其他部分调用该模块来完成工作,您可以将代码与系统的其他部分链接,或者您可以提交一个作业并获取输出。

如果你想使用Java,你可以使用类似jTDS的东西并编写 Java 代码来完成您需要的操作。我没有在 z/OS 上使用过 Java,因此无法提供具体建议,但我在其他平台上使用过 jTDS,并且对结果很满意。

更新:

您可以导出 C 函数作为加载模块的入口点,然后从 Cobol 调用它。 C/C++实现需要处理Cobol数据结构;它们是明确定义且可预测的,因此这不是问题。根据您需要的灵 active ,您可以将查询编译为 C 代码,并且只拥有一个执行预定义查询并具有用于检索结果的接口(interface)的函数,或者您可以在提供查询的地方拥有更复杂的东西来自 Cobol 程序。

我已经使用这种方法向 Adabas/Natural 开发人员提供 API 函数,效果很好。 Dignus 编译器有一种机制,可以让调用者提供运行时库的句柄,以便您可以从调用程序管理 C 运行时环境的生命周期。

对于 C/C++ 开发人员来说,这应该相当简单。如果您的开发人员都是 Cobol 开发人员,事情可能会有点棘手。

网关方法是可能的,并且我确信周围有网关产品,但我不能推荐。我见过一些我不推荐的蹩脚的,但这并不意味着某个地方没有好的。

为了完整起见,我将提及在 Cobol 中实现 TDS 协议(protocol)的可能性。不过,听起来像是残酷而常见的惩罚。

关于sql-server - 有没有办法从 z/OS 大型机访问 Sql 服务器并在 IBM 3270 终端仿真中得到结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2220191/

相关文章:

sql-server - 使用 SQL Server 创建区分大小写的数据库

sql - SQL 中的 Row_Number 排名

sql-server - SQL Server 中的证书过期后会发生什么?

COBOL搜索功能

dataset - 3.4 在主机中编辑画面

schema - 可以通过 DB2/z 加载/卸载来更改数据和模式吗?

select - 如何在卸载作业中为分隔符编写 DB2 SELECT 语句

sql-server - SCD2 + Merge 语句 + SQL Server

delphi - 将Delphi按位运算转换为Cobol

cobol - 如何删除连续文件中的最后3条记录