PIC S9(7) COMP-5 VALUE +0
COMP-5
означает, что значение сохраняется в двоичном виде. (Вам может понадобиться поменять местами байты, в зависимости от платформы.) S
означает, что поле подписано (возможно, два дополнения). 9(7)
означает, что в поле должно быть место для значений до & plusmn; 9999999, для чего требуется 4 байта (1 знаковый бит + 24 бит значения + 7 битов заполнения). Таким образом, эквивалентный тип данных C - int32_t
.
PIC S9999V99 COMP-5 VALUE +0
V
- неявное десятичное место. Все, что вставляет в него программа COBOL, масштабируется на 100 за кадром (например, 15,25 сохраняется как 001525, 16 сохраняется как 001600 и т. Д.). В C ++ вам придется делать это самостоятельно.
Я бы обычно использовал double
для внешнего типа данных, но два десятичных знака настоятельно предлагают доллары и центы, для которых вы должны использовать десятичный тип, если таковой имеется.
30 31 34 38 35 37 42 E7 03 00 00 00 00 00 00 31
32 2F 34 32 20 20 31 30 30 30 30 20 20 20 20 20
20 20 20 20 20 20 20 20
Это похоже на строку ASCII 014857B�␃␀␀␀␀␀␀12/42 10000
, которая будет предлагать DISPLAY
вместо COMP-5
чисел. Вы уверены, что смотрите на правую часть записи?