COBOL からのインポート: サポートされる機能

以下の表は、COBOL 定義がメッセージ・モデル内の XML スキーマ設定値にどのような影響を与えるかを示しています。

いくつかの xsd タイプには、タイプの後に '-' があることに注目してください。 これはそのタイプに基づく無名の単純タイプであることを示しています。 ストリングの場合、無名タイプの目的は長さの制限を追加することです。 数値タイプの場合、目的は最小値または最大値の制限を追加することです。
COBOL 文節 XML スキーマのデータ・タイプ
PIC A xsd:string -  
PIC G xsd:string -

これを処理するには、コンパイル時のロケール名を ja_JP に設定します (「ウィンドウ」-「設定」-「インポーター」-「COBOL」)。

PIC N xsd:string -

これを処理するには、コンパイル時のロケール名を ja_JP に設定します (「ウィンドウ」-「設定」-「インポーター」-「COBOL」)。

PIC X xsd:string -  
PIC 9(n) n = 1-4 xsd:short - DISPLAY、COMP、または COMP-3
PIC 9(n) n = 5-9 xsd:int - DISPLAY、COMP、または COMP-3
PIC 9(n) n = 10-18 xsd:long - DISPLAY、COMP、または COMP-3
PIC 9(n) n = 19-31 xsd:integer - DISPLAY、COMP、または COMP-3
PIC 9(n)V9(m) xsd:decimal - DISPLAY、COMP、または COMP-3 の任意の仮想小数点値
COMP-1 xsd:float -  
COMP-2 xsd:double -  
任意の編集済みストリング xsd:string -  
任意の編集済み数値 xsd:string - 例えば、PIC Z
VALUE すべて 非 88 レベルの VALUE 文節は、スキーマ・デフォルト値 (インポート・ウィザードでのオプション) としてインポートできます。

以下の表は、COBOL 定義がメッセージ・モデル内で生成されたエレメントの物理 CWF 特性にどのような影響を与えるかを示しています。

COBOL キーワード CWF 物理タイプ CWF 長さ特性 その他の CWF 特性
PIC X(n)

PIC A(n)

固定長ストリング 長さ = n

長さの単位 = バイト

位置調整 = 左そろえ

埋め込み文字 = SPACE

PIC G(n)

PIC N(n)

固定長ストリング 長さ = n

長さの単位 = 文字

位置調整 = 左そろえ

埋め込み文字 = SPACE

PIC 9(n) DISPLAY n=1-31 外部 10 進数 長さ = n

長さの単位 = バイト

位置調整 = 右そろえ

埋め込み文字 = '0'

記号 = 印なし

記号の方向 = 末尾

PIC 9(n) COMP、COMP-4、COMP-5、または BINARY 整数 長さ = n に基づいて 2、4 または 8

長さの単位 = バイト

記号 = 印なし

記号の方向 = ブランク

PIC 9(n) COMP-3 n=1-18 パック 10 進数 長さ = CEILING((n+1)/2)

長さの単位 = バイト

記号 = 印なし

記号の方向 = ブランク

PIC S9(n) DISPLAY n=1-31 外部 10 進数 長さ = n

長さの単位 = バイト

記号 = 印あり

記号の方向 = 末尾

* 注 1 を参照

PIC S9(n) COMP または COMP-3

n=1-18

整数またはパック 10 進数 長さ = 上記の COMP および COMP-3 定義を参照

長さの単位 = バイト

記号 = 印あり

記号の方向 = ブランク

PIC 9(m)V9(n) DISPLAY n=1-31 外部 10 進数 長さ = n+m

長さの単位 = バイト

記号 = 印なし

記号の方向 = 末尾

仮想小数点 = n

PIC 9(m)V9(n) COMP または COMP-3 整数またはパック 10 進数 長さ = COMP-3 の場合、CEILING((n+m+1)/2)

長さ = COMP の場合、2、4 または 8

長さの単位 = バイト

記号 = 印なし

記号の方向 = ブランク

仮想小数点 = n

COMP-1 Float 長さ = 4

長さの単位 = バイト

記号 = 印あり

記号の方向 = ブランク

COMP-2 Float 長さ (Length) = 8

長さの単位 = バイト

記号 = 印あり

記号の方向 = ブランク

SYNC 浮動、整数、またはパック 10 進数   適切な、先頭スキップ・カウント

適切な、末尾スキップ・カウント

適切な、バイト位置合わせ

* 注 2 を参照

注 :
  1. 記号の方向は、COBOL 定義での SEPARATE、LEADING、または TRAILING キーワードに基づいて、以下のいずれかの値となります。
    • 先頭
    • 先頭分離
    • 末尾
    • 末尾分離
  2. SYNC キーワードによって、フィールドが 1、2、4、または 8-byte バイト境界に位置合わせされます。 これにより、「遊びバイト」がフィールドの前または後に追加されることがあります。 先頭スキップ・カウントは、フィールドの前に追加されるバイト数です。 末尾スキップ・カウントは、フィールドの後に追加されるバイト数です。

    先頭スキップ・カウントおよび末尾スキップ・カウントは、SYNC 文節に関係なく、インポーターによりインポートされる各エレメントごとに 計算されます。 SYNC 文節が存在する場合はゼロでない値はありません。

    反復エレメントがある場合、先頭スキップ・カウントおよび末尾スキップ・カウントが反復エレメントの最初の発生に使用され、後続する発生には末尾スキップ・カウントのみが使用されます。

    バイト位置合わせの必要なフィールドの詳細については、COBOL の参照資料を参照してください。

  3. COBOL インポーターでは、インポートするすべてのファイルが、構文的に正しくなければなりません。 そうでなければ、結果が予測不能です。
  4. POINTER、COMP-X、INDEX および PROCEDURE-POINTER を含む COBOL データ・タイプはサポートされません。
  5. キーワード NATIVE を含む COBOL はエラーの原因になり、インポートしません。
  6. COBOL レベル 66 およびレベル 77 データ項目はインポートされません。
  7. 16 進バイナリー値は非数値リテラルの属性になりません。 これらは、COBOL インポーターがインポートする LINKAGE SECTION に存在できません。 COBOL ファイルの他の場所には存在できます。 あるいは、16 進値を PIC X の場合 char ストリングに、PIC 9 の場合 10 進数に変換することができます。
  8. エレメント名が Java 言語キーワードと競合する場合は、そのエレメント名に単一下線文字の接頭部を付けることによって変更されます。
  9. COBOL 85 へのオブジェクト指向の拡張はサポートされません。 例えば、OBJECT-REFERENCE はサポートされません。
  10. COBOL OCCURS DEPENDING ON 文節。そのような構造内のエレメントの バイト・アライメント、先頭スキップ・カウント、および末尾スキップ・カウント CWF プロパティーは、適切に セットアップされていません。これらは、メッセージ・エディターを使用して訂正する必要があります。
  11. インポートされる COBOL ソース・ファイルが、ピクチャー・ストリングの値文節に QUOTE または QUOTES を含んでいる場合、COBOL QUOTE コンパイル・オプションを COBOL インポーター・ウィザードの「オプションのインポート」ページで SINGLE に設定していない限り、デフォルト動作は二重引用符付きでデータを満たします。

符号付き外部 10 進数

WebSphere Message Broker のカスタム・ワイヤー形式 (CWF) コンポーネントは、外部 10 進 (ゾーン 10 進とも呼ばれる) データ形式を使用する数値データのモデリングのサポートを提供します。 この形式では、数値は 10 進文字データとして内部的に保管されます。 例えば、EBCDIC コードを使用するシステムでは、4 バイトの外部 10 進フィールドで保管される数値 1234 は、文字ストリング "1234" として保管され、その実際の内部 16 進表記は F1F2F3F4 になります。

符号付き外部 10 進数を使用すると、最初または最後のバイト (符号を先頭に付ける表記か、最後に付ける表記かによって異なる) の最初の部分を修正することによって、実際のデータに符号を取り込むことができます。 通常、'0xC' は正の数値、'0xD' は 負の数値、および '0xF' は符号なしの数値を表記するのに使用されます。

注: 一般に、正の値を示すには '0xA'、'0xC' のいずれか、負の値を示すには '0xB' または '0xD' を使用することができます。 実際によく使用される表記は、実際のハードウェア体系に依存します。

ASCII マシンでは、外部 10 進データの内部表記用に、多くのメカニズムがあります。 IBM の pSeries マシンが使用する 1 つの表記 ('Sign ASCII') は、符号なしおよび正の数値の両方で、最初/最後の桁に通常の ASCII コード ("0" [hex 30] から "9" [hex 39]) を、負の数値に文字 "p" [hex 70] から "y" [hex 79] を使用します。

その他の ASCII ベースのマシンでは、別の方法 (Sign EBCDIC Custom) が使用されます。 これは、実際の内部 16 進表記が異なる場合でも、EBCDIC ベースのマシンと同じ文字を使用します。 この技法を使用すると、EBCDIC および ASCII プラットフォームの両方の文字ストリングは等しくなります。 EBCDIC プラットフォームからのメッセージ (PIC XXX および PIC S999 などのエントリーを含む COBOL コピーブックから作成) を受け取って、メッセージ全体を ASCII または他の方法で変換することもおそらく可能です。 メッセージ中の外部 10 進フィールドを表す文字ストリング (ASCII/EBCDIC 変換後) は、10 進数の正しい符号を表すコード・ポイントにマップします。 このメソッドには制限があることに注意する必要があります。 中括弧文字は可変です (つまり、異なる EBCDIC コード・ページでは、コード・ポイントが異なります。)このメカニズムは、中括弧 '{' および '}' (符号付き 0 を表すのに使用) のコード・ポイントが正確に x'C0' および x'D0' である EBCDIC コード・ページでのみ有効です。例えば、コード・ページ 500 では有効ですが、中括弧のコード・ポイントが X'8E' および X'9C であるコード・ページ 871 には無効です。

ASCII 環境 (ランタイムに CCSID のプロパティーにより決定) では、入出力両方のデフォルトは 'Sign ASCII' 表記です。 タイプ 10 進、浮動、および整数のローカル属性およびローカル・エレメント用に、CWF 物理層で適用可能な表記を指定できます。

注: これは、外部 10 進物理表現があり、また組み込み (「先頭」または「末尾」) 符号 (「記号の方向」プロパティーで決定) があるエレメントまたは属性にのみ適切です。

以下の表は、それぞれ組み込み (埋め込み) 先頭または末尾記号を持つ外部 10 進数値の最初または最後の桁の内部表記 (文字と実際の 16 進値の両方) を示しています。 (注: 表では、ASCII の場合は 0x30-0x39、EBCDIC の場合は 0xF0-0xF9 である符号なしの値の表記は指定しません)

  正符号付きの値   負符号付きの値
ASCII 環境 EBCDIC 環境 ASCII 環境 EBCDIC 環境
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)

次の表は、これらのアプローチを使用して伝送または受信可能なものを表す、単純な数値の範囲の例を示します。

  先頭の符号 末尾の符号
  ASCII 環境 EBCDIC 環境 ASCII 環境 EBCDIC 環境
10 進値 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}"

関連概念
メッセージのモデル化
メッセージ・モデル
関連タスク
メッセージ・モデルの開発
メッセージ定義ファイルの処理
メッセージ・モデル・オブジェクトの処理
関連資料
メッセージ・モデルの参照情報
メッセージ・モデル・オブジェクトのプロパティー
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
ad06900_