ГОСТ Р ИСО/МЭК 8825-2-2003
ПРИЛОЖЕНИЕ В (справочное)
Объединения видимых для PER ограничений
Некоторые свойства могут оставаться видимыми при объединении элементов подтипа, каждый из которых по отдельности может быть видимым для PER. Ниже приведены примеры таких свойств:
В.1 Эффективным ограничением размера для
А :: = IA5String (SIZE (1..4) | SIZE (9..10))
является
А :: = IA5String (SIZE (1..4) | (9..10))
В.2 Когда ограничение PermittedAlphabet объединяется в одну спецификацию подтипа с другими ограничениями PermittedAlphabet, нет эффективного ограничения PermittedAlphabet, содержащего меньше, чем все символы в неограниченном типе, если нет единственной спецификации PermittedAlphabet, которая является супермножеством всех других спецификаций PermittedAlphabet в этой спецификации подтипа. Кроме того, если в эти спецификации ограничений включены ограничения размера, то супермножество спецификации Per-mittedAlphabet должно иметь эффективное ограничение размера, объединенное с ним операцией INTERSECTION, которое является супермножеством всех других ограничений размера, наложенных на тип. Например, В :: = IA5String (FROM («AB») л SIZE (1..2) |
FROM («DE») л SIZE (3) |
FROM («ABCDE») л SIZE (1..5))
имеет эффективное ограничение размера и эффективное ограничение алфавита PermittedAlphabet В :: = IA5String (FROM («ABCDE») л (SIZE (1..5))
так как это является супермножеством более сложного выражения, приведенного выше, таким образом оно становится видимым для PER. С другой стороны, в следующем примере эффективное ограничение PermittedAlphabet является полным набором символов, допустимых для IA5String, так как нет единственного эквивалента ограничения PermittedAlphabet. Таким образом, следующее ограничение не является видимым для PER:
C :: = IA5String (FROM («AB») | (FROM («CD»)) -- не эквивалентно (FROM («ABCD»))
В.3 Ограничения размера могут произвольно объединяться, если нет ограничения PermittedAlphabet. Например,
E :: = IA5String (SIZE (1..4) | (SIZE (5..10) Л FROM («ABCD») | SIZE (6..10))
является невидимым для PER ограничением размера (так как размер 5 допустим не для всех возможных символов), тогда как
E :: = IA5String (SIZE (1..4) | (SIZE (6..10) Л FROM («ABCD») | SIZE (6..10))
является видимым для PER ограничением размера SIZE (1..4) | (6..10), так как эффективное ограничение PermittedAlphabet является набором всех символов IA5String. В этом случае FROM («ABCD») не является видимым для PER ограничением, так как оно неприменимо ко всем возможным значениям Е (например, если длина строки равна 1, то символ не ограничивается одним из «ABCD»).
40