db2 如何在R中转换压缩十进制格式(S370Fpd5)?

uubf1zoe  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(115)

压缩十进制格式S370 Fpd 5可以用R或Python转换吗?下面是ascii转换后的实际输出、预期输出以及十六进制格式的示例。
| ACT输出|EXP输出|十六进制|
| - -|- -|- -|
| ......@|六百四十七|第40条|
| 第一百七十七章...|小行星703048| 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0|
| ......|小行星859902| 97年版|

mzillmmw

mzillmmw1#

这不是压缩的十进制数据。
大型机数据通常在单个记录中同时包含文本数据和二进制数据,例如名称、货币金额和数量:
x'C8969797859940404040C799818385404040404081996C004B'
......这将是......
x'C8969797859940404040C799818385404040404081996C004B'
...十六进制。这是代码页37,通常称为EBCDIC。
在不知道姓被限制在前10个字节,名被限制在随后的10个字节的情况下,货币金额是压缩的十进制(也称为二进制编码的十进制),而数量在接下来的两个字节中,您无法准确地传送数据,因为代码页转换会破坏货币数量。转换到代码页1250,通常在Microsoft Windows上使用,您最终会得到...
x'486F707065722020202047726163652020202020617225002E'
...其中文本数据被转换,但打包数据被破坏。打包数据在最后半字节(最后一个字节的下半部分)中不再有有效符号,货币金额本身和数量一样已被更改(由于代码页转换和将大端字节序数字损坏为小端字节序数字,从十进制75更改为十进制11,776)。
根据我的经验,避免这些困难的最好方法是在大型机上对文件进行预处理,将所有二进制和压缩十进制字段转换为嵌入了显式符号和小数点的文本,然后文件就可以安全地进行代码页转换(在本例中是EBCDIC到ASCII)。
使用大型机SORT实用程序可以轻松地完成此类预处理,该实用程序通常擅长数据转换。

可能有一个库可以将数据逐字段从源代码页转换到目标代码页。不管是好是坏,请求提供异地资源的建议都被认为是离题的。如果整个文件的记录中包含压缩的十进制和/或二进制数据,则无法将其从一个代码页转换到另一个代码页,而不冒至少可能导致数据损坏的风险。

相关问题