Лучший способ понять предложение 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.