gpt4 book ai didi

使用 C 将 COMP 和 COMP-3 Packed Decimal 转换为可读值

转载 作者:太空宇宙 更新时间:2023-11-04 03:48:47 28 4
gpt4 key购买 nike

我有一个 EBCDIC 平面文件要从大型机处理成 C 模块。将 COMP 和 COMP-3 值转换为可读值的好过程是什么?对于 COMP-3,我是否必须将 ebcdic 字符转换为 ascii 然后十六进制? COMP 呢?谢谢

最佳答案

Bill Woodger 通过他对你问题的评论给了你一些非常好的建议,实际上他回答了问题并且应该发表了他的评论作为回答。

我想重申他的一些观点并扩展其他一些观点。

如果您需要转换从可能是 COBOL 应用程序创建的文件以便可以读取由其他一些非 COBOL 程序,可能在具有不同于创建它的体系结构的机器上,然后您应该要求仅使用显示格式数据(即所有字符数据)创建文件。糖化非显示在创建它的操作环境之外的(二进制、打包、编码)数据只是一个公式长期的痛苦。您将享受到整理各种元素的乐趣endianness问题在架构和code page之间转换。这些是文件传输协议(protocol)旨在管理 - 它们做得很好,所以不要试图重新发明它们。简短回答,使用 FTP 或类似的文件传输机制在机器之间移动数据。并且仅传输基于显示(字符)的数据。

压缩十进制 (COMP-3) 数据类型根据其特定的 PICTURE 布局占用不同数量的字节。小数点的位置是隐含的,因此如果不引用用于定义它的图片就无法确定。 Packed Decimal 字段可以是有符号的或未签名。如果有符号,则符号嵌入最低有效位的低 4 位。压缩十进制的每个字节数据类型包含两个数字,第一个和最后一个字节可能除外。如果该字段已签名,则第一个字节仅包含一个数字并且包含偶数个数字。如果无符号,最后一个字节包含 2 个数字,但如果有符号,则只包含 1 个数字。还有其他几个微妙之处您需要注意是否要进行自己的压缩十进制到字符的转换。在这一点上,我希望你能看到这不是一个简单的练习。

二进制 (COMP) 数据类型有一组不同但同样复杂的问题需要解决。同样,这不是一项微不足道的练习。

那么你应该做什么?基本上,按照比尔的建议去做。让生成此文件的程序使用显示格式输出(意味着你什么都不用做)。或者,如果失败,使用诸如 DFSORT/SYNCSORT 之类的实用程序进行转换为你。实用程序route 仍然需要您拥有原始的 COBOL 文件布局(并且您了解它)才能进行转换。最后的手段是简单地编写一个简单的读取记录写入记录的 COBOL 程序,该程序接收未格式化的数据,MOVEes每个 COMP-whatever 字段到相应的 DISPLAY 字段并再次写出。

正如 Bill 所说,如果制作此文件的小组告诉您制作 DISPLAY 格式的文件太困难/太昂贵输出文件 他们在骗你 或者 他们不称职 或者 只是懒得做做他们受雇要做的工作。我想不出其他借口。

关于使用 C 将 COMP 和 COMP-3 Packed Decimal 转换为可读值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22346634/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com