2012-01-15 9 views
2

IBM Websphere変換エクステンダーを使用して、ミドルウェアシステムでxmlからcopybookへの変換とその逆変換をミドルウェアシステムで行っています。このリンク Cobol to xsd mapping から、我々はcobolからxmlスキーマへ - WTX Tool

PIC X(03)は、コピーブックでは、

<xsd:simpleType> 
<xsd:restriction base="xsd:string"> 
<xsd:maxlength value="3"/> 
<xsd:whiteSpace value="preserve"/> 
</xsd:restriction> 
</xsd:simpletype> 

PIC 9(03)は、コピーブックには、しなければならない以下のXMLスキーマに変換されなければならないことを実現しました以下のxmlスキーマに変換する

<xsd:simpleType> 
<xsd:restriction base="xsd:unsignedInt"> 
<xsd:minInclusive value="0"/> 
<xsd:maxInclusive value="999"/> 
</xsd:restriction> 
</xsd:simpletype> 

ただし、以下のコピーブックタイプで使用するxmlスキーマを直接作成することはできません。誰もガイドしてくれませんか?

PIC S9(17) COMP-3 
PIC S9(17) 
PIC S9(03) 
PIC S9(03) COMP-3 
PIC +9(17) 
PIC +9(03) 

答えて

4

PICTURE句を理解する最善の方法は、COBOLのマニュアルを参照することです。私はいくつかの "ドキュメンテーション"に従います。

注意すべきことは、以下のXSDスニペットが正しいと見なされていますが、異なるツールが正確に一致しないことがあります。確かに、あなたがあなたのツールから得たものは、私のものよりも制限的ではありません。

PIC S9(17)COMP-3

PIC S9(17)

PIC +9(17)

注:COMP-3は、XSDの観点から問題ではありません。 COBOLの世界でのエンコーディングに影響します。

<xsd:simpleType name="S9-17"> 
    <xsd:restriction base="xsd:integer"> 
     <xsd:minInclusive value="-99999999999999999"/> 
     <xsd:maxInclusive value="99999999999999999"/> 
    </xsd:restriction> 
</xsd:simpleType> 

PIC S9(03)

PIC S9(03)COMP-3

PIC +9(03)

<xsd:simpleType name="S9-3"> 
    <xsd:restriction base="xsd:int"> 
     <xsd:minInclusive value="-999"/> 
     <xsd:maxInclusive value="999"/> 
    </xsd:restriction> 
</xsd:simpleType> 

あなたのPIC 9(03)数を意味暗黙の正の値を持つ符号なしとして返されます。

数値の前にSがあると、S9(17)は "signed"を意味し、小数点以下17桁までです。値は正または負の値になります。他の句に応じて、記号は先頭、末尾に分けられます。

COMPUTational句が存在する場合、データは「バイナリ」形式(半分のサイズ、1桁あたり4ビット、上位を使用する符号、最も左にあるビット)でエンコードされます。 COBOL world、ではなく、 XMLです。 COMP句(「パック」とも呼ばれます)は値のセマンティクスを変更するものではなく、その特定の数値を表すために必要なサイズ(バイト単位)に直接影響するエンコーディングメカニズムを記述するだけです。例えば、PIC 9(17)は17バイトを必要とし、PIC 9(17)COMP-3は9バイトを必要とする。 COMPなしの句は、DISPLAY形式で表示されます(基本的に1桁の10進数に1バイトプラス1桁の記号が必要です)。前の+記号はSによく似ています。数字が符号付きであることを示し、+が正の場合に使用され、負の数の場合には - が使用されます。

このため、XMLでデータを表現する場合、保存されるのはデータであり、その表現ではありません。 PIC 9(03)と値1を考えてみましょう。

COBOLからXMLへの変換では、001が保持されているかどうか(つまり1になる)があります。 XMLからCOBOLへの変換では、001または1を使用して正しく001に変換できる必要があります。

+0

ありがとう。私のnumber要素をxmlスキーマで定義する方法はありますか?それで+999のようになりますか?つまり、cobolのコピーブックが+999を送信している場合、 '+'記号で整数に変換する必要があります。要素を整数として保持すると、スキーマでは999が得られ、 '+'記号は現れません。 – Suresh

+0

残念ながら、いいえ。 –

関連する問題