Sie haben 2 Probleme.
COBOL verfügt über mehrere numerische Datenstrukturen. Jede hat ihren eigenen Satz von Regeln.
Für PACKED DECIMAL ( COMP-3 )
- Die numerischen Komponenten der PIC-Klausel sollten sich IMMER zu einer ODD-Zahl addieren. - Das Dezimalzeichen "V" bestimmt die Platzierung des Dezimalpunkts. - Die einzelnen MOVE- und mathematischen Funktionen behalten die Ausrichtung des Dezimalwerts bei - sowohl das Abschneiden auf hoher als auch auf niedriger Ebene ist möglich - Die Konvertierung numerischer Datentypen (Zone dezimal nach gepackt und binär nach gepackt) wird für Sie erledigt.
z.B. S9(5)V9(2) COMP-3.
einschließlich der 2 Nachkommastellen> Die Länge wird berechnet als ROUND UP[ (7 + 1) / 2] = 4 Bytes
S9(6)V9(2) COMP-3.
einschließlich der 2 Nachkommastellen > Die Länge wird berechnet als ROUND UP[(8 + 1) / 2] = 5 Bytes Aber das 1 ½ Byte ist nicht adressierbar
Das letzte ½ Byte der COMP-3-Felder ist die HEXIDECIMAL-Darstellung des Vorzeichens.
Die Vorzeichen ½ Byte Werte sind C = vorzeichenbehaftet positiv D = vorzeichenbehaftet negativ F = vorzeichenlos (nicht COBOL).
S9(6)V9(3) COMP-3 WERT 123,45. Die Länge wird berechnet als ROUND UP[(9 + 1) / 2] = 5 Bytes
Enthält X'00 01 23 45 0C'.
Beachten Sie die Ausrichtung der Dezimalstellen und das Auffüllen mit Nullen.
MOVE-Regeln auf Gruppenebene
COBOL-Datenfeldstrukturen werden als hierarchische Strukturen definiert.
Das Gruppenfeld 01 H-L - & jedes Feld auf Untergruppenebene -
- Ist fast immer ein implizierter CHARACTER-String-Wert
- Handelt es sich bei einem einzelnen Elementfeld um eine 01- oder 77-Ebene, so kann es numerisch sein.
- Einzelne Elementfelder, die auf Gruppen- oder Untergruppenebene als numerisch definiert sind, werden als numerisch behandelt, wenn auf sie als einzelnes Elementfeld verwiesen wird.
- Es gelten numerische Regeln. o Rechtsbündig o Ausrichtung der Dezimalstellen o H-L (½ Byte) mit Nullen auffüllen o Konvertierung numerischer Datentypen
Das Empfangsfeld einer MOVE- oder mathematischen Berechnung bestimmt, ob eine numerische Datenkonvertierung stattfindet.
Konvertierung numerischer Daten Wenn Sie eine mathematische Berechnung unter Verwendung eines beliebigen Sendefeldtyps (Gruppe oder Element) in ein einzelnes Empfangselementfeld, das mit einer numerischen PIC-Klausel definiert wurde, verschieben oder durchführen, erfolgt eine numerische Datenkonvertierung für das Empfangsfeld. S0C7-Abbrüche treten auf, wenn nichtnumerische Daten in ein numerisch definiertes Empfangsfeld MOVE'd werden ODER wenn mathematische Berechnungen mit nichtnumerischen Daten versucht werden.
Keine Konvertierung numerischer Daten Wenn Sie einen beliebigen Feldtyp (Gruppe oder Element) in ein beliebiges Feld auf Gruppen- oder Untergruppenebene verschieben, findet keine numerische Datenkonvertierung statt.
- Es gelten die Regeln der Charakterverschiebung.
- Linksbündig ausrichten und mit Leerzeichen auffüllen.
Dies ist eine der Hauptursachen für nichtnumerische Daten in einem numerisch definierten Feld.
Einer der wichtigsten Verwendungszwecke eines MOVE-Befehls auf Sendegruppenebene, der numerische Elementfelder enthält, für eine Empfangsgruppenebene, die numerische Elementfelder enthält (die identisch abgebildet werden), ist die Neuinitialisierung numerischer Elementfelder mit einem MOVE-Befehl.
Eine Clear-Maske - oder - ein Datenpropagations-MOVE ist auch für Tabellen-Clears möglich, bei denen die Tabellengruppen-Ebene größer als 255 Byte ist.