有没有办法在Java程序中读取cobol数据?更具体地说,我面临以下情况:
我有一个包含固定长度数据记录的文件。数据定义以Cobol副本完成。我想到的是一个考虑到拷贝书的图书馆能够阅读这些记录。
理想情况下,应该可以根据副本信息生成基本的java类和结构。在稍后的步骤中,将解析数据线并将数据填充到那些生成的类的对象中。
您知道提供此类功能的库吗?或者任何其他技术来解决读取cobol数据的问题?
有一些商业工具可以提供此功能。然而,它们非常昂贵。您是否知道任何开源替代方案或不同工具的组合来提供整个功能?例如,cb2xml读取copybook结构并将它们转换为xml。稍后的步骤是基于cb2xml xml信息生成记录阅读器。或者使用可配置的记录阅读器。你知道cobol记录阅读器(解码器)吗?
答案 0 :(得分:19)
你可以看一下JRecord - http://sourceforge.net/projects/jrecord/ 或者cb2java http://sourceforge.net/projects/cb2java/都允许您访问cobol文件 但两者都不会产生完整的课程。
2011年1月更新
自原答案:
JRecord Code generator
可用
无论是独立程序还是Recordeditor。
此Code Generator
将从Cobol Copybook构建JRecord JRecord
代码。
请参阅RecordEditor Jrecord CodeGen RecordEditor有一个Generate选项,用于生成 Java / JRecord 代码 来自Cobol Copybook。 有关详细信息,请参阅RecordEditor Code Generation notes。
在这个问题/答案中有一些关于生成 Java~JRecord 代码的信息:
答案 1 :(得分:4)
是。我以前做过那个。我使用ODBC连接到COBOL文件,然后使用jdbc:odbc桥,我使用元数据信息生成类,读取数据并将其全部移植到Oracle。
Here是一个很好的教程,介绍如何使用JDBC访问元数据信息。 Here是另一个。
请记住,您不需要JDBC:ODBC桥接方法。如果您可以获得连接到Cobol DataSource的本机JDBC驱动程序,那就更好了。在这方面,我还使用了IBM本机驱动程序。不记得这个名字。很久以前。
答案 2 :(得分:2)
这似乎有一些commercial solutions。或者,您可以使用cb2xml将副本转换为XML,然后使用您需要的任何机制将XML导入Java。
答案 3 :(得分:2)
我使用了Bruce的JRecord(来自sourceforge)包来完成我的项目。学习使用它只花了几天时间,并且在我自己推出一个不那么通用的解决方案上省了几个月的工作。我高度推荐它。
答案 4 :(得分:1)
Microfocus提供了一种从Java调用OO COBOL的方法。
“您可以在OO COBOL中编写可以从Java程序调用的类,就像它们是Java类一样。您可以通过提供Java包装类来实现,它为OO COBOL类中的每个方法提供了一个函数。 Express Class和Method Wizards通过在COBOL代码的同时生成Java代码,使您更轻松。“
他们还提供了一个名为Enterprise Server的工具,它允许COBOL与Web服务进行交互。
如果您有COBOL程序A,该工具允许您将A的界面部分公开为Web服务。
当然,因为A现在有一个Web服务,任何其他类型的程序(命令行,Windows应用程序,Java,ASP等)现在也可以调用它,从而将COBOL数据传递给Java程序。
答案 5 :(得分:1)
BEA过去常常使用名为JAM的产品与大型机COBOL程序进行通信。它包括一个工具,可以读取副本并生成相应的Java POD类和数据转换代码。
我不知道这是否仍然可用,当我离开BEA时,我忘记了它。
答案 6 :(得分:1)
然后,您可以使用宏将COBOL数据转换为Struct
。
答案 7 :(得分:1)
Rational Application Developer可以读取COBOL源代码并生成Java类。生成的类具有访问COBOL数据结构的各个部分的方法。生成的类与J2EE Connector Architecture兼容。要在项目中创建类,请选择File,New,Other,然后在J2C下选择CICS / IMS Java Data Binding向导。点击下一步。选择COBOL到Java进行映射。选择您的COBOL文件。选择要生成Java类的结构,然后单击Finish,然后单击“完成”。当然,在我没有提到的方式中你可以选择许多选项。有关更多信息,请搜索J2C的帮助。