Aus COBOL importieren: unterstützte Funktionen

Die folgende Tabelle zeigt, wie COBOL-Definitionen die XML-Schemaeinstellungen im Nachrichtenmodell beeinflussen.

Beachten Sie bei einigen xsd-Typen das Zeichen '-' hinter dem Typnamen. Es bedeutet, dass es sich um einen anonymen einfachen Typ auf Basis dieses Typs handelt. Bei Zeichenfolgen dient der anonyme Typ dazu, eine Längenbeschränkung hinzuzufügen; der numerische Typ dient dazu, eine Beschränkung auf einen Minimalwert oder einen Maximalwert hinzuzufügen.
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

Hinweise:
  1. 'Vorzeichenausrichtung' kann einen der folgenden Werte annehmen, abhängig von den Schlüsselwörtern SEPARATE, LEADING oder TRAILING in der COBOL-Definition:
    • Führend
    • Vorzeichenindikator für erstes Byte
    • Abschließend
    • Vorzeichenindikator für letztes Byte
  2. Das Schlüsselwort SYNC bewirkt, dass das Feld an einer 1-, 2-, 4- oder 8-Byte-Grenze ausgerichtet wird. Dies kann zur Folge haben, dass 'Pufferbytes' entweder vor oder hinter einem Feld hinzugefügt werden. 'Zu überspringende führende Bytes' gibt die Anzahl der vor einem Feld hinzugefügten Bytes und 'Zu überspringende abschließende Bytes' die Anzahl der hinter einem Feld hinzugefügten Bytes an.

    '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.

  3. Für das COBOL-Importprogramm müssen alle Dateien, die Sie importieren, syntaktisch korrekt sein. Andernfalls sind die Ergebnisse unvorhersehbar.
  4. COBOL-Datentypen einschließlich POINTER, COMP-X, INDEX und PROCEDURE-POINTER werden nicht unterstützt.
  5. COBOL-Anweisungen mit dem Schlüsselwort NATIVE verursachen einen Fehler und werden nicht importiert.
  6. COBOL-Datenelemente der Stufen 66 und 77 werden nicht importiert.
  7. Hexadezimale Binärwerte können nicht als Attribute zu nicht-numerischen Literalen zugeordnet werden. Sie dürfen nicht in den LINKAGE SECTION-Abschnitten, die vom COBOL-Importprogramm importiert werden, enthalten sein. Die Werte können sich an jeder anderen Stelle in der COBOL-Datei befinden. Alternativ können Sie den Hexadezimalwert bei PIC X in eine Zeichenfolge und bei PIC 9 in eine Dezimalzahl konvertieren.
  8. Wo Elementnamen mit Java-Schlüsselwörtern kollidieren, werden sie geändert, indem dem Elementnamen ein einzelnes Unterstreichungszeichen vorangestellt wird.
  9. Objektorientierte Erweiterungen von COBOL 85 werden nicht unterstützt. OBJECT-REFERENCE wird beispielsweise nicht unterstützt.
  10. COBOL-Klausel 'OCCURS DEPENDING ON'. Die CWF-Eigenschaften 'Byteausrichtung', 'Zu überspringende führende Bytes' und 'Zu überspringende abschließende Bytes' von Elementen innerhalb einer solchen Struktur werden nicht richtig ausgewertet. Dies müssen Sie im Nachrichteneditor korrigieren.
  11. Wenn die importierte COBOL-Quellendatei in der Werteklausel einer PICTURE-Zeichenfolge eine QUOTE- oder QUOTES-Anweisung enthält, werden die Daten standardmäßig mit doppelten Anführungszeichen eingefügt, es sei denn, Sie setzen die COBOL-Kompilierungsoption QUOTE auf der Seite mit den Importoptionen des COBOL-Importassistenten auf SINGLE.

Externe Dezimalzahlen mit Vorzeichen

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.

Anmerkung: Im Allgemeinen können '0xA', '0xC', '0xE' und '0xF' zur Angabe eines positiven Wertes sowie '0xB' und '0xD' zur Angabe eines negativen Wertes verwendet werden. Die tatsächlich bevorzugte Darstellung ist von der jeweiligen Hardwarearchitektur abhängig.

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.

Anmerkung: Dies ist nur bei solchen Elementen oder Attributen sinnvoll, die eine physische Darstellung für externe Dezimalzahlen haben und in die ein Vorzeichen ('führend' oder 'abschließend') eingebettet ist (festgelegt durch die Eigenschaft 'Vorzeichenausrichtung').

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
"1234"

31 32 33 34
"1234"

F1 F2 F3 F4
"1234"

31 32 33 34
"1234"

31 32 33 34
"1234"

F1 F2 F3 F4
"1234"

+1234

31 32 33 34
"1234"

41 32 33 34
"A234"

C1 F2 F3 F4
"A234"

31 32 33 34
"1234"

31 32 33 44
"123D"

F1 F2 F3 C4
"123D"

-1234

71 32 33 34
"q234"

4A 32 33 34
"J234"

D1 F2 F3 F4
"J234"

31 32 33 74
"123t"

31 32 33 4D
"123M"

F1 F2 F3 D4
"123M"

7890

37 38 39 30
"7890"

37 38 39 30
"7890"

F7 F8 F9 F0
"7890"

37 38 39 30
"7890"

37 38 39 30
"7890"

F7 F8 F9 F0
"7890"

+7890

37 38 39 30
"7890"

47 38 39 30
"G890"

C7 F8 F9 F0
"G890"

37 38 39 30
"7890"

37 38 39 7B
"789{"

F7 F8 F9 C0
"789{"

-7890

77 38 39 30
"w890"

50 38 39 30
"P890"

D7 F8 F9 F0
"P890"

37 38 39 70
"789p"

37 38 39 7D
"789}"

F7 F8 F9 D0
"789}"

Zugehörige Konzepte
Nachrichten modellieren
Das Nachrichtenmodell
Zugehörige Tasks
Nachrichtenmodelle entwickeln
Mit Nachrichtendefinitionsdateien arbeiten
Mit Nachrichtenmodellobjekten arbeiten
Zugehörige Verweise
Nachrichtenmodellverweisinformationen
Eigenschaften von Nachrichtenmodellobjekten
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ad06900_