关于MAINFRAME bin文件,如何read/compare任何bin文件?
Regarding MAINFRAME bin files , how to read/compare any bin files?
我计划在 .NET WPF 中创建一个示例应用程序,它读取 MAINFRAME bin 文件、并排比较文件并提取文件内容而不丢失任何格式。
以下问题对我创建算法很有帮助。
- 典型的 MAINFRAME bin 文件的一般编码标准是什么?
- 我们如何读取一个bin文件,需要用到什么工具吗?
- 我们如何找到两个 MAINFRAME bin 文件之间的差异?
- 我们是否能够在不使用任何工具的情况下识别 MAINFRAME bin 文件——也就是说从文件本身?
- MAINFRAME generated/read 的输出文件类型是什么,意思是它是否仅限于生成“.bin”文件或任何其他扩展名?
还请提供任何开源编辑器,它可以对可以作为启动器的 MAINFRAME bin 文件进行 reading/writing/editing。
记录编辑器是我用于某些 bin 文件的应用程序之一,尽管它似乎与某些 bin 文件不兼容。
没有 "MAINFRAME bin file" 这样的东西 - 大型机数据集既没有文件类型的概念,也没有文件扩展名的概念。将文件从大型机传输到某些 Windows/Unix-machine 后,一些人使用 .bin
扩展名表示内容应被视为二进制文件。
关于大型机文件你应该知道的一些事情(我主要说的是固定记录长度的顺序数据集,最基本的数据集):
- 没有通用的文件格式,通常每个大型机程序都会滚动自己的记录描述并将其写入文件。要理解该文件,您必须知道记录描述。
- 您可以使用任何能够处理任意字节序列的工具来读取这些文件 - 但同样:要使用它,您必须以某种方式解释这些字节。
- 大型机数据集没有一些换行符来指示一个数据记录的结尾和下一个数据记录的开始。大多数用于传输的数据集每条记录的字节数都是固定的,因此读取程序必须在适当的位置拆分读取的字节。 (还有可变记录长度文件,但我现在将跳过这些)。
- 大型机上的字符数据通常使用一些 EBCDIC 字符集编码,而不是 PC 平台上使用的 ASCII。所以你必须将它们转换为基于 PC 的处理
- 其他部分可能包含压缩十进制数字数据 - 每个数字占用半个字节 ("nibble"),最后一个半字节表示数字的符号。例如。
-4387
可能存储在 3 个字节中,如 04 38 7D
.
- 您的文件可能还包含原始二进制或浮点数据 - 我们无法判断,您必须询问文件的创建者。
总结一下:
- 您无法使用一些开箱即用的工具识别或处理它们
- 你必须知道记录描述才能做任何有用的事情
- 您将不得不处理许多特定于大型机的问题
对于大多数用例,将原始二进制文件从大型机传输到 PC 是不可行的。最好在大型机上创建基于 EBCDIC 文本的文件,在传输和处理文本数据时使用文件传输工具将它们转换为 ASCII。
我计划在 .NET WPF 中创建一个示例应用程序,它读取 MAINFRAME bin 文件、并排比较文件并提取文件内容而不丢失任何格式。
以下问题对我创建算法很有帮助。
- 典型的 MAINFRAME bin 文件的一般编码标准是什么?
- 我们如何读取一个bin文件,需要用到什么工具吗?
- 我们如何找到两个 MAINFRAME bin 文件之间的差异?
- 我们是否能够在不使用任何工具的情况下识别 MAINFRAME bin 文件——也就是说从文件本身?
- MAINFRAME generated/read 的输出文件类型是什么,意思是它是否仅限于生成“.bin”文件或任何其他扩展名?
还请提供任何开源编辑器,它可以对可以作为启动器的 MAINFRAME bin 文件进行 reading/writing/editing。
记录编辑器是我用于某些 bin 文件的应用程序之一,尽管它似乎与某些 bin 文件不兼容。
没有 "MAINFRAME bin file" 这样的东西 - 大型机数据集既没有文件类型的概念,也没有文件扩展名的概念。将文件从大型机传输到某些 Windows/Unix-machine 后,一些人使用 .bin
扩展名表示内容应被视为二进制文件。
关于大型机文件你应该知道的一些事情(我主要说的是固定记录长度的顺序数据集,最基本的数据集):
- 没有通用的文件格式,通常每个大型机程序都会滚动自己的记录描述并将其写入文件。要理解该文件,您必须知道记录描述。
- 您可以使用任何能够处理任意字节序列的工具来读取这些文件 - 但同样:要使用它,您必须以某种方式解释这些字节。
- 大型机数据集没有一些换行符来指示一个数据记录的结尾和下一个数据记录的开始。大多数用于传输的数据集每条记录的字节数都是固定的,因此读取程序必须在适当的位置拆分读取的字节。 (还有可变记录长度文件,但我现在将跳过这些)。
- 大型机上的字符数据通常使用一些 EBCDIC 字符集编码,而不是 PC 平台上使用的 ASCII。所以你必须将它们转换为基于 PC 的处理
- 其他部分可能包含压缩十进制数字数据 - 每个数字占用半个字节 ("nibble"),最后一个半字节表示数字的符号。例如。
-4387
可能存储在 3 个字节中,如04 38 7D
. - 您的文件可能还包含原始二进制或浮点数据 - 我们无法判断,您必须询问文件的创建者。
总结一下:
- 您无法使用一些开箱即用的工具识别或处理它们
- 你必须知道记录描述才能做任何有用的事情
- 您将不得不处理许多特定于大型机的问题
对于大多数用例,将原始二进制文件从大型机传输到 PC 是不可行的。最好在大型机上创建基于 EBCDIC 文本的文件,在传输和处理文本数据时使用文件传输工具将它们转换为 ASCII。