对于COBOL专家来说,这可能是一个非常基本的问题。但到目前为止,我和COBOL没有任何关系。我们正在根据字符位置处理一些文件。这些文件是从大型机发送给我们的,我们有一个布局文件,上面写着这样的内容。
位置:长度:类型:描述
----------:--------------------------------------------:-------------------------------
61-70:10:P5:FIELD-1 9(13)V(05)
71-80:10:P5:Field-2 9(13)V(05)
81-81:1:A/N:FLAG
82-84:3:N:天数9(3)
我知道A/N类型意味着它是字母数字。N表示数字,P表示压缩数据类型。我不明白P5的意思。P后面的5的意义是什么?
p后面的5的意义是什么?
我不确定。也许是五个16位的单词。
您的压缩字段为10个字节,包含19个字符(18位数字加上符号)。小数点是隐含的。
如果符号字节(最右边的字节)不是十六进制F,请更新您的问题。
如果你能用代表五个数字的五个十六进制字符串来更新你的问题,那就太好了。
现在,我猜这是一个普通的压缩十进制字段。
-
p压缩小数(即Cobol Comp-3)一个18位压缩小数将占用10个字节,这与的长度一致
-
5-小数点后的位数(猜测)。
cobol中的字段定义可能是
03 FIELD-1 pic s9(13)V(05) comp-3.
在压缩十进制中,符号保存在最后一个nyble(4位)中,每个nyble(四位)保存一个十进制数字。
即
121 is represented as x'121c'
而
-121 is represented as x'121d'
如果您使用的是java,并且可以获得cobol副本,那么有一些包可以使用cobol复制本读取文件。
我敢打赌这意味着小数点后5位。