Converter dados decimais compactados sem embalagem em duplas
-
18-09-2019 - |
Pergunta
Eu tenho um arquivo de texto de largura fixo, que foi descompactado dos dados do Comp-3 em seqüências de caracteres fixo de largura.
Eu preciso saber como interpretar os seguintes campos:
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.
Estes aparecem no meu arquivo plano como:
FIELD-NAME-1 0123456789123456780
FIELD-NAME-2 01234567890
FIELD-NAME-3 012345670
Eu preciso saber quais números o acima representaria.
Isso está correto:
FIELD-NAME-1 123456789123456.780 --> The first 0 means +ve?
FIELD-NAME-2 012.34567890
FIELD-NAME-3 012.345670
Obrigado pela ajuda. presunto
Solução
O S9 (15) V9 (3) requer 19 Nybbles (20 na realidade, pois deve fazer com que um número par de NYBBLES) para armazenar:
- um para o sinal.
- 15 para o bit inteiro.
- 3 para o bit não inteiro (V é um decimal implícito, não real).
O sinal geralmente aparece no final como um C
ou a D
NYBBLE, então a resposta para esta pergunta depende inteiramente do que a descompactação.
Seu primeiro exemplo realmente tem o número certo de dígitos sem A placa, então eu me preocuparia com sua declaração de que um deles representava a placa. Ou isso, ou você parou do "9". Os outros dois exemplos têm dígitos suficientes para o sinal e a parte numérica.
Melhor aposta, veja se você pode obter um número negativo (e outros dados de teste como 1) lá para ver o que ele gera.