1.9.5.1 Numerische Felder in Cobol
Bei numerischen Feldern ohne jeglichen Zusatz (BINARY, COMP usw) werden S (Vorzeichen) und V (Komma) nicht mitgezählt.
Die interne Abspeicherung des Vorzeichens erfolgt im letzten Byte durch Addition von 0x40. Wird ein Feld mit 3 Vorkomma und 2 Nachkommastellen definiert, also PIC 999V99, so werden im Speicher 5 Bytes reserviert (ebenso bei PIC S999V99). Beinhaltet das Feld z.B. den Wert 3,1, wird im Speicher 00310 abgelegt. Steht im Speicher jedoch 00031p, handelt es sich um -3,1.
Das letzte Byte von -3,10 ist 0, das entspricht dem Hexwert 0x30. Addiert man 0x40 dazu, erhält man 0x70 und das ist der ASCII-Wert von p.
Mögliche Werte des letzten Bytes sind also:
|
Positiv | 0x30 | 0x31 | 0x32 | 0x33 | 0x34 | 0x35 | 0x36 | 0x37 | 0x38 | 0x39 | Ascii | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Negativ | 0x70 | 0x71 | 0x72 | 0x73 | 0x74 | 0x75 | 0x76 | 0x77 | 0x78 | 0x79 | Ascii | p | q | r | s | t | u | v | w | x | y |
|
Numerische Datentypen mit dem Zusatz COMPUTATIONAL werden unterschiedlich abgespeichert.
Hoch zu Darstellung der Daten in Cobol
Weiter zu numerische Felder - COMPUTATIONAL, COMPUTATIONAL-4, BINARY, COMP
| |