我们正在尝试在Perl中编写一个工具,它希望解析一个固定长度的EBCDIC数据文件,并通过查看记录中每个字节的十六进制值来生成记录布局。
假设每个数据文件由Cobol程序编写,而Cobol程序的源代码我们没有,可以有多个记录布局。此工具的目的是通过生成布局来执行数据迁移(EBCDIC到ASCII),然后将布局提供给转换器。
问题是每个字节可能会出现数百种排列和组合。我认为比较当前记录中相应字节的十六进制值可能会给我们一些线索,告诉我们这可能是什么。但即使在这种情况下,也没有人可能会得到具体的解决方案。需要在可能影响最终结果的每个时刻作出决定。
有人可以告诉我任何我可以寻找的模式吗?例如,对于所有COMP-3,每个半字节可能表示0-9的值,因此字节的十六进制值可能类似于[0-9] [0-9]。基本上对于数据迁移,不必担心COMP和COMP-3,因为它们的值不会在迁移中受到影响。但是确定什么是DISPLAY字段也是一项艰巨的任务。有人可以提出一些想法或指出我可以进一步探索的方向吗?
任何帮助都将受到高度赞赏。我真的陷入了泥潭。
谢谢, 阿迪亚。
答案 0 :(得分:1)
有许多企业转型工具可以完全满足您的需求。或者,可以很容易地从编译的副本中解析ADATA记录,以获得每个字段的确切字节位置和表示。
我可以冒险猜测吗?你有没有熟练的Cobol?处理Cobol副本并不难,当然也不像使用像Perl这样的只写语言那么难。
您是否有同步或DFsort可用?它会用简单的配置文件做你要求的......
答案 1 :(得分:1)
我想你必须考虑概率,并希望数据的变化足以从中获得很多。
对于多种布局,这很难。可以具有多个布局的记录的常见约定是在记录的前面附近具有“有限数据类型”的有限值集。像significantID,recordType,data一样。因此,significantID应该稳定增加,而recordType字段将在几个值之间变化并重新循环。
答案 2 :(得分:0)
RecordEditor / JRecord中的文件向导可以搜索文件中的Mainframe Cobol字段。 FileWizard 结果可以存储在Xml文件中以便在其他语言中使用,或者您可以使用复制功能从Ebcdic复制到Ascii固定或CSV格式。
上有一些过时的文档