将解压缩的Packed Decimal Comp-3数据转换为双精度数据

时间:2009-04-28 08:30:38

标签: comp-3

我有一个固定宽度的文本文件,它已从Comp-3数据解压缩为固定宽度的字符串。

我需要知道如何解释以下字段:

FIELD-NAME-1 PIC S9(15)V9(3) COMP-3.
FIELD-NAME-2 PIC S9(3)V9(8) COMP-3.
FIELD-NAME-3 PIC S9(3)V9(6) COMP-3.

这些文件在我的平面文件中显示为:

FIELD-NAME-1 0123456789123456780
FIELD-NAME-2 01234567890
FIELD-NAME-3 012345670

我需要知道上面代表的数字。

这是否正确:

FIELD-NAME-1 123456789123456.780  --> The first 0 means +ve?
FIELD-NAME-2 012.34567890
FIELD-NAME-3 012.345670

感谢您的帮助。 火腿

1 个答案:

答案 0 :(得分:0)

S9(15)V9(3)需要19个nybbles(实际上是20个,因为它必须产生偶数个nybbles)才能存储:

  • 一个用于标志。
  • 15表示整数位。
  • 3表示非整数位(V是隐含的小数,不是真正的小数)。

标志通常最后显示为CD nybble,因此这个问题的答案完全取决于拆包的内容。

你的第一个例子实际上有正确的数字没有符号,所以我会关注你的陈述,其中一个代表符号。要不然,或者你已经离开了“9”。另外两个例子的符号和数字部分都有足够的数字。

最好的选择,看看你是否可以得到一个负数(和其他测试数据,如1),看看它产生了什么。