Лучший способ понять предложение ИЗОБРАЖЕНИЕ - проконсультироваться с вашей документацией COBOL. Я буду следовать с некоторой «документацией».
Следует отметить, что, хотя я считаю, что снимок XSD ниже, как правильный, различные инструменты могут не совпадать точно с моими; конечно, все, что вы получаете от ваших инструментов, не должно быть более ограничительным, чем мое.
PIC S9 (17) КОМП-3
PIC S9 (17)
ПИК +9 (17)
Примечание: КОМП-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) КОМП-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>
ПОС 9 (03) означает, что число как unsigned, с подразумеваемым положительным значением.
A предшествующий S для числового значения, S9 (17) означает «подписанный», с до 17 десятичными знаками; значение может быть положительным или отрицательным. В зависимости от других условий знак может быть раздельным, ведущим или конечным.
Все становится сложным, когда присутствует предложение COMPutational, и в этом случае данные кодируются с использованием «двоичного» формата (половина размера, четыре бита на цифру, знак с высоким порядком, самый большой бит) - в COBOL world, не XML. Предложение COMP (иногда называемое «упакованным») не изменяет семантику значения, оно просто описывает механизм кодирования, что напрямую влияет на размер (в байтах), необходимый для представления этого конкретного номера. Например, для PIC 9 (17) потребуется 17 байт, для PIC 9 (17) COMP-3 потребуется 9 байт. Классы без COMP представлены в формате DISPLAY (в основном один байт на десятичную цифру, плюс один для знака, если применимо).
Знак предшествующего + очень похож на S; указывает, что число подписано, a + будет использоваться для положительного, a - будет использоваться для отрицательных чисел.
Из-за этого при представлении данных в XML, то, что сохраняется, является данными, а не их представлением. Рассмотрим PIC 9 (03) и значение 1.
Преобразование COBOL в XML может сохранить 001 или нет (т. Е. Получить 1). Преобразование XML в COBOL должно иметь возможность принимать 001 или 1 и правильно преобразовывать его в 001.
Спасибо. Есть ли способ определить мой элемент числа в xml-схеме, чтобы он мог появиться как +999? То есть, если копировальная книга cobol отправляет +999, она должна быть преобразована в целое число с знаком «+». Если мы сохраним элемент как целое число, то в схеме получится 999, знак «+» не появится. – Suresh
К сожалению, нет. –