Die folgende Tabelle zeigt, wie COBOL-Definitionen die XML-Schemaeinstellungen im Nachrichtenmodell beeinflussen.
COBOL-Klausel | XML Schema-Datentyp | Hinweise |
---|---|---|
PIC A | xsd:string - | |
PIC G | xsd:string - | Geben Sie als Ländereinstellung für die Kompilierzeit unter Windows - Einstellungen - Importprogramm - COBOL zur Verarbeitung Folgendes an: ja_JP |
PIC N | xsd:string - | Geben Sie als Ländereinstellung für die Kompilierzeit unter Windows - Einstellungen - Importprogramm - COBOL zur Verarbeitung Folgendes an: ja_JP |
PIC X | xsd:string - | |
PIC 9(n) n = 1-4 | xsd:short - | DISPLAY, COMP oder COMP-3 |
PIC 9(n) n = 5-9 | xsd:int - | DISPLAY, COMP oder COMP-3 |
PIC 9(n) n = 10-18 | xsd:long - | DISPLAY, COMP oder COMP-3 |
PIC 9(n) n = 19-31 | xsd:integer - | DISPLAY, COMP oder COMP-3 |
PIC 9(n)V9(m) | xsd:decimal - | DISPLAY, COMP oder COMP-3 (beliebiger virtueller Dezimalzeichen-Wert) |
COMP-1 | xsd:float - | |
COMP-2 | xsd:double - | |
Beliebige bearbeitete Zeichenfolge | xsd:string - | |
Beliebige bearbeitete Zahl | xsd:string - | Beispiel: PIC Z |
VALUE | All | VALUE-Klauseln, die nicht COBOL 88 entsprechen, können als Schemastandardwerte importiert werden (Option im Importassistenten). |
Die folgende Tabelle zeigt, wie COBOL-Definitionen die Merkmale des physischen Formats (CWF) der im Nachrichtenmodell generierten Elemente beeinflussen.
COBOL-Schlüsselwort | Physischer CWF-Typ | CWF-Längenmerkmale | Andere CWF-Merkmale |
---|---|---|---|
PIC X(n) PIC A(n) |
Zeichenfolge mit fester Länge | Länge = n Längeneinheiten = Bytes |
Ausrichtung = Linksbündig ausrichten Auffüllzeichen = SPACE |
PIC G(n) PIC N(n) |
Zeichenfolge mit fester Länge | Länge = n Längeneinheiten = Zeichen |
Ausrichtung = Linksbündig ausrichten Auffüllzeichen = SPACE |
PIC 9(n) DISPLAY n=1-31 | Extern dezimal | Länge = n Längeneinheiten = Bytes |
Ausrichtung = Rechtsbündig ausrichten Auffüllzeichen = '0' Mit Vorzeichen = nicht markiert Vorzeichenausrichtung = Nachgestellt |
PIC 9(n) COMP, COMP-4, COMP-5 oder BINARY | Ganzzahl | Länge = 2, 4 oder 8 auf Basis n Längeneinheiten = Bytes |
Mit Vorzeichen = nicht markiert Vorzeichenausrichtung = leer |
PIC 9(n) COMP-3 n=1-18 | Gepackt dezimal | Länge = CEILING((n+1)/2) Längeneinheiten = Bytes |
Mit Vorzeichen = nicht markiert Vorzeichenausrichtung = leer |
PIC S9(n) DISPLAY n=1-31 | Extern dezimal | Länge = n Längeneinheiten = Bytes |
Mit Vorzeichen = markiert Vorzeichenausrichtung = Nachgestellt *Siehe Hinweis 1 |
PIC S9(n) COMP oder COMP-3 n=1-18 |
Ganzzahl oder Gepackt dezimal | Länge = Siehe COMP- und COMP-3-Definitionen oben Längeneinheiten = Bytes |
Mit Vorzeichen = markiert Vorzeichenausrichtung = leer |
PIC 9(m)V9(n) DISPLAY n=1-31 | Extern dezimal | Länge = n+m Längeneinheiten = Bytes |
Mit Vorzeichen = nicht markiert Vorzeichenausrichtung = Nachgestellt Virtuelles Dezimalzeichen = n |
PIC 9(m)V9(n) COMP oder COMP-3 | Ganzzahl oder Gepackt dezimal | Länge = CEILING((n+m+1)/2) für COMP-3 Länge = 2, 4 oder 8 für COMP Längeneinheiten = Bytes |
Mit Vorzeichen = nicht markiert Vorzeichenausrichtung = leer Virtuelles Dezimalzeichen = n |
COMP-1 | Gleitkomma | Länge = 4 Längeneinheiten = Bytes |
Mit Vorzeichen = markiert Vorzeichenausrichtung = leer |
COMP-2 | Gleitkomma | Länge = 8 Längeneinheiten = Bytes |
Mit Vorzeichen = markiert Vorzeichenausrichtung = leer |
SYNC | Gleitkomma, Ganzzahl oder Gepackt dezimal | 'Zu überspringende führende Bytes' nach Bedarf 'Zu überspringende abschließende Bytes' nach Bedarf 'Byteausrichtung' nach Bedarf *Siehe Hinweis 2 |
|
'Zu überspringende führende Bytes' und 'Zu überspringende abschließende Bytes' werden für jedes der importierten Elemente unabhängig vom Importprogramm durch die SYNC-Klausel berechnet. Sie enthalten andere Werte als Nullwerte, wenn die SYNC-Klausel vorliegt.
Wenn ein sich wiederholendes Element vorliegt, gelten 'Zu überspringende führende Bytes' und 'Zu überspringende abschließende Bytes' für das erste Vorkommen des sich wiederholenden Elements; für alle weiteren Vorkommen gilt nur 'Zu überspringende abschließende Bytes'.
Ausführliche Informationen zu Feldern, die eine Byteausrichtung erfordern, finden Sie im COBOL-Referenzmaterial.
Die CWF-Komponente (Custom Wire Format) von WebSphere Message Broker unterstützt die Modellierung von numerischen Daten unter Verwendung des Datenformats 'Extern dezimal' (auch als 'Gezont dezimal' bekannt). In diesem Format wird eine Zahl intern als Dezimalzeichenfolge gespeichert. In einem System mit EBCDIC-Code beispielsweise würde die in einem 4 Byte großen Feld des Formats 'Extern dezimal' gespeicherte Zahl 1234 als Zeichenfolge '1234' gespeichert und die tatsächliche interne hexadezimale Darstellung wäre 'F1F2F3F4'.
Bei externen Dezimalzahlen mit Vorzeichen kann das Vorzeichen in die tatsächlichen Daten aufgenommen werden, indem die erste Hälfte des ersten oder letzten Bytes geändert wird (abhängig davon, ob Sie eine Darstellung mit führendem oder nachgestelltem Vorzeichen verwenden). Eine positive Zahl wird normalerweise mit '0xC', eine negative Zahl mit '0xD' und eine Zahl ohne Vorzeichen mit '0xF' dargestellt.
Auf ASCII-Maschinen gibt es eine Reihe von Verfahren für die interne Darstellung von Daten des Typs 'Extern dezimal'. Die von den IBM pSeries-Systemen eingesetzte Darstellung ('Sign ASCII') verwendet die normalen ASCII-Codes ('0' [hexa 30] bis '9' [hexa 39]) für die erste/letzte Zahl sowohl von Zahlen ohne als auch von Zahlen mit Vorzeichen sowie die Zeichen 'p' [hexa 70] bis 'y' [hexa 79] für negative Zahlen.
Auf einigen anderen ASCII-basierten Maschinen wird ein Alternativverfahren (Sign EBCDIC Custom) eingesetzt. Dabei werden dieselben Zeichen wie auf einer EBCDIC-basierten Maschine verwendet, obwohl die tatsächliche interne, hexadezimale Darstellung für sie unterschiedlich ist. Bei Anwendung dieses Verfahrens ist die Zeichenfolge für beide Plattformen, EBCDIC und ASCII, identisch. Sie empfangen möglicherweise eine Nachricht von einer EBCDIC-Plattform (erstellt von einem COBOL-Copy-Book, das solche Einträge als PIC XXX und PIC S999 enthält) und konvertieren die gesamte Nachricht nach ASCII oder umgekehrt. Die Zeichenfolge, die das 'Extern dezimal'-Feld in der Nachricht darstellt (nach der ASCII/EBCDIC-Konvertierung), wird dem Codepunkt zugeordnet, der für das richtige Vorzeichen für die Dezimalzahl steht. Beachten Sie jedoch, dass es für dieses Verfahren eine Einschränkung gibt. Zeichen in geschweiften Klammern sind Varianten (d. h., für sie gelten andere Codepunkte in anderen EBCDIC-Codepages). Dieses Verfahren funktioniert nur für solche EBCDIC-Codepages, in denen die geschweiften Klammern ('{' und '}'), die zur Darstellung einer 0 mit Vorzeichen dienen) genau die Codepunkte x'C0' und x'D0' haben. Es funktioniert beispielsweise für Codepage 500, aber nicht für Codepage 871, in der die geschweiften Klammern die Codepunkte X'8E' und X'9C' haben.
In einer ASCII-Umgebung (festgelegt durch die CCSID-Eigenschaft zur Laufzeit), gilt sowohl für die Ein- als auch die Ausgabe standardmäßig die 'Sign ASCII'-Darstellung. Es ist möglich, die anwendbare Darstellung in der physischen CWF-Schicht für lokale Attribute und lokale Elemente von Dezimal-, Gleitkomma- und Ganzzahl-Datentypen anzugeben.
Die folgende Tabelle zeigt die interne Darstellung (sowohl Zeichen als auch tatsächlicher hexadezimaler Wert) der ersten oder letzten Ziffer für externe Dezimalzahlen mit einem eingeschlossenen (eingebetteten) führenden bzw. nachgestellten Vorzeichen. (Hinweis: Die Tabelle zeigt nicht die Darstellung für Werte ohne Vorzeichen, d. h. 0x30-0x39 für ASCII und 0xF0-0xF9 für EBCDIC.)
Werte mit positivem Vorzeichen | Werte mit negativem Vorzeichen | ||||||
ASCII-Umgebung | EBCDIC-Umgebung | ASCII-Umgebung | EBCDIC-Umgebung | ||||
Ziffer | Sign ASCII | Sign EBCDIC Custom | Sign ASCII | Sign EBCDIC Custom | |||
0 | 0(30) | {(7B) | {(C0) | p(70) | }(7D) | }(D0) | |
1 | 1(31) | A(41) | A(C1) | q(71) | J(4A) | J(D1) | |
2 | 2(32) | B(42) | B(C2) | r(72) | K(4B) | K(D2) | |
3 | 3(33) | C(43) | C(C3) | s(73) | L(4C) | L(D3) | |
4 | 4(34) | D(44) | D(C4) | t(74) | M(4D) | M(D4) | |
5 | 5(35) | E(45) | E(C5) | u(75) | N(4E) | N(D5) | |
6 | 6(36) | F(46) | F(C6) | v(76) | O(4F) | O(D6) | |
7 | 7(37) | G(47) | G(C7) | w(77) | P(50) | P(D7) | |
8 | 8(38) | H(48) | H(C8) | x(78) | Q(51) | Q(D8) | |
9 | 9(39) | I(49) | I(C9) | y(79) | R(52) | R(D9) |
Die nächste Tabelle enthält Beispiele für einen Bereich von einfachen Zahlen, die repräsentativ zeigen, was mit den verschiedenen Verfahren gesendet oder empfangen wird.
Führendes Vorzeichen | Nachgestelltes Vorzeichen | |||||
ASCII-Umgebung | EBCDIC-Umgebung | ASCII-Umgebung | EBCDIC-Umgebung | |||
Dezimalwert | Sign ASCII | Sign EBCDIC Custom | Sign ASCII | Sign EBCDIC Custom | ||
1234 | 31 32 33 34 |
31 32 33 34 |
F1 F2 F3 F4 |
31 32 33 34 |
31 32 33 34 |
F1 F2 F3 F4 |
+1234 | 31 32 33 34 |
41 32 33 34 |
C1 F2 F3 F4 |
31 32 33 34 |
31 32 33 44 |
F1 F2 F3 C4 |
-1234 | 71 32 33 34 |
4A 32 33 34 |
D1 F2 F3 F4 |
31 32 33 74 |
31 32 33 4D |
F1 F2 F3 D4 |
7890 | 37 38 39 30 |
37 38 39 30 |
F7 F8 F9 F0 |
37 38 39 30 |
37 38 39 30 |
F7 F8 F9 F0 |
+7890 | 37 38 39 30 |
47 38 39 30 |
C7 F8 F9 F0 |
37 38 39 30 |
37 38 39 7B |
F7 F8 F9 C0 |
-7890 | 77 38 39 30 |
50 38 39 30 |
D7 F8 F9 F0 |
37 38 39 70 |
37 38 39 7D |
F7 F8 F9 D0 |