【问题标题】:cobol to xml schema - WTX Toolcobol 到 xml 模式 - WTX 工具
【发布时间】:2012-01-15 14:05:33
【问题描述】:

我们正在使用 IBM Websphere 转换扩展器在中间件系统中进行 xml 到 copybook 的转换,反之亦然。从这个链接 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)

【问题讨论】:

    标签: xsd transformation cobol copybook wtx


    【解决方案1】:

    了解 PICTURE 子句的最佳方法是查阅您的 COBOL 文档。接下来我会附上一些“文档”。

    需要注意的一点是,虽然我认为下面的 XSD sn-ps 是正确的,但不同的工具可能与我的不完全匹配;当然,无论你从你的工具中得到什么,都不应该比我的更严格。

    PIC S9(17) COMP-3

    图片 S9(17)

    图片+9(17)

    注意:从 XSD 的角度来看,COMP-3 无关紧要;它会影响 COBOL 世界中的编码。

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

    图片 S9(03)

    PIC S9(03) COMP-3

    图片+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 位十进制数字;该值可能是正数或负数。根据其他子句,符号可以是单独的、前导的或尾随的。

    当存在 COMPutational 子句时,事情会变得很棘手,在这种情况下,数据使用“二进制”格式(大小的一半,每个数字四位,符号使用高位,最左边的位)进行编码 - 在 COBOL 中世界,不是 XML。 COMP 子句(有时称为“打包”)不会改变值的语义,它只是描述编码机制,直接影响表示该特定数字所需的大小(以字节为单位)。例如,PIC 9(17) 需要 17 个字节,PIC 9(17) COMP-3 需要 9 个字节。没有 COMP 的子句以 DISPLAY 格式表示(基本上每个十进制数字一个字节,如果适用,加一个符号)。

    前面的+号很像S;表示带符号的数字,+ 表示正数,- 表示负数。

    因此,当用 XML 表示数据时,保留的是数据,而不是表示。考虑 PIC 9(03) 和 1 的值。

    COBOL 到 XML 的转换可以保留 001,也可以不保留(即得到 1)。 XML 到 COBOL 的转换必须能够采用 001 或 1 并将其正确转换为 001。

    【讨论】:

    • 谢谢。有没有办法在 xml 模式中定义我的数字元素,以便它可以作为 +999?也就是说,如果 cobol 字帖发送 +999,则应将其转换为带有“+”号的整数。如果我们将元素保持为整数,在模式中,我们得到 999,'+' 符号不会出现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2022-03-16
    • 2020-02-05
    • 1970-01-01
    相关资源
    最近更新 更多