La conversione non imballati Pranzo decimali Comp-3 i dati in doppie
-
18-09-2019 - |
Domanda
Ho un file di testo larghezza fissa, che è stato estratto dal Comp-3 i dati in stringhe larghezza fissa.
Ho bisogno di sapere come interpretare i seguenti campi:
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.
Questi appaiono nel mio file flat come:
FIELD-NAME-1 0123456789123456780
FIELD-NAME-2 01234567890
FIELD-NAME-3 012345670
Ho bisogno di sapere quali numeri di cui sopra rappresenterebbero.
È corretto:
FIELD-NAME-1 123456789123456.780 --> The first 0 means +ve?
FIELD-NAME-2 012.34567890
FIELD-NAME-3 012.345670
Grazie per l'aiuto. Ham
Soluzione
L'S9 (15) V9 (3) richiede 19 nybbles (20 in realtà quanto deve effettuare un numero pari di nybbles) per memorizzare:
- una per il segno.
- 15 per il bit integer.
- 3 per il bit non intero (V è un decimale implicita, non reale).
Il segno di solito appare alla fine come un C
o un nybble D
quindi la risposta a questa domanda dipende interamente da ciò che ha fatto il disimballaggio.
Il primo esempio è in realtà il giusto numero di cifre senza il segno in modo sarei interessato con la sua dichiarazione che uno di loro rappresentava il segno. O che, o hai lasciato fuori il "9". Gli altri due esempi hanno abbastanza cifre sia per il segno e parte numerica.
La cosa migliore, vedere se è possibile ottenere un numero negativo (e di altri dati di test come 1) in là per vedere che cosa genera.