2

IBM Websphere トランスフォーメーション エクステンダーを使用して、ミドルウェア システムで XML からコピーブックへ、およびその逆の変換を行っています。このリンク Cobol to xsd mapping から、次のことがわかりました。

コピーブックの PIC X(03) は、以下の xml スキーマに変換する必要があります

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

コピーブックの PIC 9(03) は、以下の 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

1 に答える 1

4

PICTURE句を理解する最良の方法は、COBOLのドキュメントを参照することです。続いて「ドキュメント」を作成します。

注意すべき点の1つは、以下の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)は、最大17桁の10進数の「符号付き」を意味します。値は正または負の場合があります。他の句に応じて、記号は分離、先頭、または末尾になります。

COMPutational句が存在する場合、データは「バイナリ」形式(半分のサイズ、1桁あたり4ビット、上位ビットを使用する符号、左端のビット)を使用してエンコードされます。COBOLの世界で、 XML。COMP句(「パック」と呼ばれることもあります)は、値のセマンティクスを変更せず、エンコードメカニズムを説明するだけで、その特定の数値を表すために必要なサイズ(バイト単位)に直接影響します。たとえば、PIC 9(17)は17バイトを必要とし、PIC 9(17)COMP-3は9バイトを必要とします。COMPのない句は、DISPLAY形式で表されます(基本的に、10進数ごとに1バイト、および該当する場合は符号用に1バイト)。

先行する+記号はSによく似ています。数値が符号付きであることを示します。+は正の数に使用され、-は負の数に使用されます。

このため、XMLでデータを表現する場合、保持されるのはデータであり、表現ではありません。PIC 9(03)と値1を検討してください。

COBOLからXMLへの変換では、001を保持する場合と保持しない場合があります(つまり、1を取得します)。XMLからCOBOLへの変換は、001または1を取り、それを001に正しく変換できる必要があります。

于 2012-01-15T16:04:19.993 に答える