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