схема cobol to xml - WTX Tool - PullRequest
       69

схема cobol to xml - WTX Tool

2 голосов
/ 15 января 2012

Мы выполняем преобразования xml в тетрадь и наоборот в системе промежуточного программного обеспечения, используя расширитель преобразований IBM Websphere.По этой ссылке Cobol на 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)

1 Ответ

4 голосов
/ 15 января 2012

Лучший способ понять предложение 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) означает «со знаком», до 17 десятичных цифр;значение может быть положительным или отрицательным.В зависимости от других положений знак может быть отдельным, начальным или конечным.

Ситуация усложняется при наличии предложения COMPutational, и в этом случае данные кодируются с использованием «двоичного» формата (половина размера, четыре бита на цифру, знак с использованием старшего разряда, самый левый бит) -в мире COBOL не XML.Предложение COMP (иногда называемое «упакованным») не меняет семантику значения, оно просто описывает механизм кодирования с прямым влиянием на размер (в байтах), необходимый для представления этого конкретного числа.Например, PIC 9 (17) потребует 17 байтов, PIC 9 (17) COMP-3 потребует 9 байтов.Предложения без COMP представлены в формате DISPLAY (в основном один байт на десятичную цифру, плюс один для знака, где это применимо).

Предыдущий знак + очень похож на S;указывает, что число подписано, + будет использоваться для положительных значений, a - будет использоваться для отрицательных чисел.

Из-за этого при представлении данных в XML сохраняются данные, а не их представление,Рассмотрим PIC 9 (03) и значение 1.

Преобразование COBOL в XML может сохранять 001 или нет (т.е. получить 1).Преобразование XML в COBOL должно иметь возможность принимать 001 или 1 и правильно преобразовывать его в 001.

...