从Java读取cobol数据结构

有没有办法在Java程序中读取cobol数据? 更具体地说,我面临以下情况:

我有一个具有固定长度数据记录的文件。 数据定义以Cobol副本完成。 我想到的是一个考虑到拷贝书的图书馆能够阅读这些记录。

理想情况下,应该可以基于副本信息生成基本的java类和结构。 在稍后的步骤中,将解析数据线并将数据填充到那些生成的类的对象中。

你知道一个提供这种function的图书馆吗? 或者任何其他技术来应对读取cobol数据的问题?


有一些商业工具提供此function。 然而,它们非常昂贵。 您是否知道任何开源替代方案或不同工具的组合来提供整个function? 例如,cb2xml读取copybook结构并将它们转换为xml。 稍后的步骤是基于cb2xml xml信息生成记录阅读器。 或者使用可配置的记录阅读器。 你知道cobol记录阅读器(解码器)吗?

您可以查看JRecord – http://sourceforge.net/projects/jrecord/或cb2java http://sourceforge.net/projects/cb2java/都允许您访问cobol文件,但都不会生成完整的类。


2011年1月更新

既然原答案:

  • JRecord继续发展。 现在有一个JRecord Code generator既可以作为独立程序使用,也可以作为Recordeditor使用 。 此Code Generator将从Cobol Copybook构建JRecord JRecord代码。 请参阅RecordEditor Jrecord CodeGen
  • cb2java的开发已经停止
  • cobol2j已经写好了。 一年没有更新。
  • Legstar还有几年没有发表任何内容

2017年8月更新

RecordEditor有一个Generate选项,用于从Cobol Copybook生成Java / JRecord代码。 有关详细信息,请参阅RecordEditor代码生成说明 。

2018年1月更新

在这个问题/答案中有一些关于生成Java~JRecord代码的信息:

如何从Cobol副本生成java~jrecord代码

是。 我以前做过那个。 我使用ODBC连接到COBOL文件,然后使用jdbc:odbc桥,我使用元数据信息生成类,读取数据并将其全部移植到Oracle。

这是一个关于如何使用JDBC访问元数据信息的很好的教程。 这是另一个。

请记住,您不需要JDBC:ODBC桥接方法。 如果您可以获得连接到Cobol DataSource的本机JDBC驱动程序,那就更好了。 在这方面,我还使用了IBM本机驱动程序。 不记得这个名字。 很久以前了。

似乎有一些商业解决方案 。 或者,您可以使用cb2xml将副本转换为XML,然后使用您需要的任何机制将XML导入Java。

我已经使用Bruce的JRecord(来自sourceforge)包来完成我的项目。 只花了几天的时间才学会使用它并为我节省了数月的工作量,以便在我自己推出一个不那么通用的解决方案。 我高度推荐它。

Microfocus提供了一种从Java调用OO COBOL的方法。

“你可以在OO COBOL中编写类,可以从Java程序中调用它们,就像它们是Java类一样。你可以通过提供一个Java包装类来实现,它为OO COBOL类中的每个方法提供了一个函数.Net Express Class和方法向导通过在COBOL代码的同时生成Java代码,使您更容易。“

他们还提供了一个名为Enterprise Server的工具,它允许COBOL与Web服务进行交互。

如果您有COBOL程序A,该工具允许您将A的接口部分公开为Web服务。

当然,因为A现在有一个Web服务,任何其他类型的程序(命令行,Windows应用程序,Java,ASP等)现在也可以调用它,从而将COBOL数据传递给Java程序。

BEA过去常常使用名为JAM的产品与大型机COBOL程序进行通信。 它包括一个工具,可以读取副本并生成相应的Java POD类和数据转换代码。

我不知道这是否仍然可用,当我离开BEA时,我忘记了它。

Rational Application Developer可以读取COBOL源代码并生成Java类。 生成的类具有访问COBOL数据结构的各个部分的方法。 生成的类与J2EE Con​​nector Architecture兼容。 要在项目中创建类,请选择File,New,Other,然后在J2C下选择CICS / IMS Java Data Binding向导。 点击下一步。 选择COBOL到Java进行映射。 选择您的COBOL文件。 选择要生成Java类的结构,然后单击Finish,然后单击“完成”。 当然,您可以选择一些我没有提及的选项。 有关更多信息,请搜索J2C的帮助。

看看Javolution Struct 。

然后,您可以使用宏将COBOL数据转换为Struct