检索cobol s9(2)COMP到C变量

时间:2011-01-04 08:41:43

标签: c cobol

我需要从类型为“ PIC S9(2)COMP ”的COBOL变量中检索数据到“ int ”类型的C变量。< / p>

它使用字符串的两个字节存储,因此我将其作为几个字符接收。

我知道COBOL以二进制格式将十进制数据存储到“ S9(2)COMP ”中,因此这将是一个很好的帮助,让我知道任何算法或方法来安全地转换它。

任何形式的帮助&amp;建议将受到欢迎。

更新

最后,由于字节顺序问题,我们决定在实现的COBOL部分将变量的图片更改为9(3)。

感谢各位的回答。

3 个答案:

答案 0 :(得分:2)

您应该能够将其视为短整数或16位二进制补码整数。您需要检查endianess,具体取决于哪个平台来自该领域。

答案 1 :(得分:1)

s9(2)comp 的格式取决于Cobol编译器。我所知道的大多数Cobol编译器都会存储一个2字节的大端整数(高字节优先;英特尔处理器先存储低字节)。例外情况包括

MicroFocus(取决于编译参数) - 通常为1字节整数 RM-Cobol:有自己的“二进制格式”。

如果是2字节整数

  • 在Big-Endian机器上(IBM Mainframe,Power等)它应该是2字节整数
  • 在Little-Endian(英特尔)上,你需要交换字节。

答案 2 :(得分:1)