Преобразование распакованных упакованных десятичных данных Comp-3 в двойные - PullRequest
1 голос
/ 28 апреля 2009

У меня есть текстовый файл фиксированной ширины, который был распакован из данных 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

Спасибо за помощь. Ham

1 Ответ

0 голосов
/ 28 апреля 2009

S9 (15) V9 (3) требует 19 nybbles (в действительности 20, так как он должен составлять четное количество nybbles) для хранения:

  • один для знака.
  • 15 для целого бита.
  • 3 для нецелого бита (подразумеваемое десятичное число, а не вещественное).

Знак обычно появляется в конце как C или D nybble, поэтому ответ на этот вопрос полностью зависит от того, что распаковка.

Ваш первый пример на самом деле имеет правильное количество цифр без знака, поэтому я буду обеспокоен вашим утверждением, что один из них представляет знак. Либо так, либо вы остановились на «9». В двух других примерах достаточно цифр как для знака, так и для числовой части.

Лучшая ставка, посмотрите, можете ли вы ввести туда отрицательное число (и другие тестовые данные, например, 1), чтобы увидеть, что оно генерирует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...