Migration 为EBCDIC数据文件生成记录布局。

Migration 为EBCDIC数据文件生成记录布局。,migration,cobol,Migration,Cobol,我们正试图用Perl编写一个工具,该工具将解析一个固定长度的EBCDIC数据文件,并通过查看记录中每个字节的十六进制值来生成记录布局 假设由Cobol程序编写的每个数据文件(其源代码我们没有)都可以有多个记录布局。此工具的目的是通过生成布局执行数据迁移(EBCDIC到ASCII),然后将布局馈送到转换器 问题是每个字节可能出现数百种排列和组合。我认为,将记录中相应字节的十六进制值与当前字节的十六进制值进行比较,可能会给我们一些关于这可能是什么的线索。但即使在这种情况下,也没有可能达成的具体解决方

我们正试图用Perl编写一个工具,该工具将解析一个固定长度的EBCDIC数据文件,并通过查看记录中每个字节的十六进制值来生成记录布局

假设由Cobol程序编写的每个数据文件(其源代码我们没有)都可以有多个记录布局。此工具的目的是通过生成布局执行数据迁移(EBCDIC到ASCII),然后将布局馈送到转换器

问题是每个字节可能出现数百种排列和组合。我认为,将记录中相应字节的十六进制值与当前字节的十六进制值进行比较,可能会给我们一些关于这可能是什么的线索。但即使在这种情况下,也没有可能达成的具体解决方案。需要在可能影响最终结果的每个关头作出决定

有人能告诉我我能找到什么样的图案吗?例如,对于所有COMP-3,每个半字节可能表示0-9之间的值,因此字节的十六进制值可能类似于[0-9][0-9]。基本上,对于数据迁移来说,不必担心COMP和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从混合中去掉。它可能会告诉您,如果一组字节都是空格,或者所有数据都在一起,那么它们就是一个字段

至于多个布局,这很难。对于可以有多个布局的记录,一个常见的约定是在记录前面附近有一组有限的“这是什么类型的数据”值。如有效ID、记录类型、数据。因此,有效ID应该稳步增加,而recordType字段将在几个值之间变化并重新循环。

中的文件向导可以搜索文件中的大型机Cobol字段。文件向导结果可以存储在Xml文件中,以供其他语言使用,也可以使用复制功能将Ebcdic复制为Ascii固定格式或CSV格式


上有一些过时的文档,您说不必转换
COMP-3
数据???您是否只对检测和转换
显示
类型数据(如可打印字符)感兴趣,而忽略压缩数据和二进制数据?你能概述一下这次转换的目的吗?这可能有助于我们制定转换策略。但是我担心如果没有COBOL唱片的布局,你可能会命中注定。乔,谢谢你。你是对的,我们的团队中没有Cobol专家。我们已经有了一个工具,可以按照您所说的,从源代码生成记录布局。问题是,我们现在没有源代码,不允许使用其他工具。我们所能做的就是读取一个数据文件。NealB,我们需要将EBCDIC数据文件转换为ASCII数据文件。除此之外,我们还需要生成文件的记录布局,这是第二个要求。现在,为了转换的目的,我们不需要触摸显示字段以外的任何内容。最后一段是有意义的,其余的是可疑的。