Konvertieren ausgepackter verpackter Dezimal-Comp-3-Daten in Doppel
-
18-09-2019 - |
Frage
Ich habe eine Textdatei mit fester Breite, die von Comp-3-Daten in feste Breite ausgepackt wurde.
Ich muss wissen, wie man die folgenden Felder interpretiert:
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.
Diese erscheinen in meiner flachen Datei als:
FIELD-NAME-1 0123456789123456780
FIELD-NAME-2 01234567890
FIELD-NAME-3 012345670
Ich muss wissen, welche Zahlen die oben genannten darstellen würden.
Ist das richtig:
FIELD-NAME-1 123456789123456.780 --> The first 0 means +ve?
FIELD-NAME-2 012.34567890
FIELD-NAME-3 012.345670
Danke für die Hilfe. Schinken
Lösung
Der S9 (15) V9 (3) erfordert 19 Nybbles (20 in Wirklichkeit, da es eine gleichmäßige Anzahl von Nybbles ergeben muss):
- eine für das Zeichen.
- 15 für das Ganzzahl.
- 3 Für das Nichtteger-Bit (V ist eine implizite Dezimalzahl, keine echte).
Das Schild erscheint normalerweise am Ende als C
oder ein D
Nybble, also hängt die Antwort auf diese Frage ganz davon ab, was das Auspacken getan hat.
Ihr erstes Beispiel hat tatsächlich die richtige Anzahl von Ziffern ohne Das Zeichen, also würde ich mich mit Ihrer Aussage befassen, dass einer von ihnen das Zeichen darstellte. Entweder das oder Sie haben die "9" aufgehört. Die beiden anderen Beispiele haben genügend Ziffern sowohl für das Zeichen als auch für das numerische Teil.
Am besten sehen Sie, ob Sie eine negative Zahl (und andere Testdaten wie 1) dort einbeziehen können, um zu sehen, was sie generiert.