Преобразование распакованных упакованных десятичных данных 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 ответ
S9(15)V9(3) требует 19 nybbles (20 в действительности, поскольку он должен составлять четное количество nybbles) для хранения:
- один для знака.
- 15 для целого бита.
- 3 для нецелого бита (V подразумевается десятичный, а не вещественный).
Знак обычно появляется в конце как C
или D
nybble, так что ответ на этот вопрос полностью зависит от того, что сделала распаковка.
Ваш первый пример на самом деле имеет правильное количество цифр без знака, поэтому я буду обеспокоен вашим утверждением, что одна из них представляет знак. Либо так, либо вы остановились на "9". В двух других примерах достаточно цифр как для знака, так и для числовой части.
Лучшая ставка, посмотрите, можете ли вы ввести туда отрицательное число (и другие тестовые данные, например, 1), чтобы увидеть, что оно генерирует.