我们正试图写在Perl一种工具,它预计通过查看记录每个字节的十六进制值来分析一个固定长度的数据EBCDIC文件,并生成记录布局。
假设每个数据文件,这是由它的源代码,我们没有一个COBOL程序编写,可以有多个记录布局。 该工具的目的是通过产生布局,其然后将被馈送到转换器来执行数据迁移(EBCDIC到ASCII)。
的问题是,有数百个可以与各个字节出现的排列组合。 我认为,在记录比较当前一个低于相应字节的十六进制值可以给我们一些线索,这是什么可能。 但即使在这种情况下,没有一个会在到达具体的解决方案。 决策需要在每一个关口可能影响最终结果才能作出。
可能有人请让我知道任何表示的模式,我可以看看? 例如,对于所有COMP-3每个半字节都不可能从0-9表示一个值,因此该字节的十六进制值可能是这样的,[0-9] [0-9]。 从本质上进行数据迁移的一个不必理会谱曲和COMP-3作为它们的值不会在迁移的影响。 但是,确定什么是显示栏也谈到了是一个巨大的任务。 有人可以抛出一些想法或指向我的一些方向,我可以进一步探讨?
任何帮助将高度赞赏。 我真的被困在泥潭这里。
谢谢,阿迪亚。
有很多企业转型工具,将不正是你所需要的。 另外,很容易解析从编译习字的ADATA记录让每一个字段的准确字节位置和表示。
我可以大胆地猜测? 你有熟练的人用Cobol? 这是不是很难处理的Cobol习字,肯定不是很难,因为它是用一个只写像Perl语言。
你有Syncsort公司或DFSORT可用? 它会做了一个简单的配置文件问什么?
我想你必须去与概率,并希望将数据变化足以让很多了这一点。
- 仅包含字母数字加标点EBCDIC值任何字段
- 数字显示领域将是最简单的,只包含EBCDIC 0-9。 请注意,如果签署,则第一个数字将变为一个字母,就像是-1,我认为。
- 值的漂亮的随机分布,与十六进制0领先,将可能是二进制数字“COMP”领域。
- COMP-3字段中的数据的每个十六进制位一个十进制数字。 所以,如果所有的十六进制数字恰好是0-9,这是一个COMP-3领域的一个强有力的信号。 除了场的最后十六进制位,其中将包含一个C为正,D为负,和F为无符号的。
- 某些程序使用的空间在数字领域,所以如果一个字段包含各种二进制的,也诅咒40(空格),它可能是最好的折腾六角40出来混的。 它可能会告诉你一组字节的是一个领域,如果他们都是一起的空间,或全部数据一起。
至于多种布局,这是艰难的。 对于可以有多个布局记录一个通常的规则是有一组有限值的“这是什么类型的数据”接近记录的前面。 像significantID,RECORDTYPE,数据。 所以significantID应该稳步提升,而RECORDTYPE字段将只是几个值,并重新循环之间变化。
在FileWizard RecordEditor / JRecord可以搜索一个文件大型机的Cobol领域。 该FileWizard结果可以存储在XML文件中使用其他语言,也可以使用复制功能,从EBCDIC复制到以ASCII固定或CSV格式。
有一些过时的文档的文件向导
文章来源: Generating Record Layouts for EBCDIC Data Files.