ГОСТ Р ИСО/М ЭК 8824-4-2003
Параметр абстрактного синтаксиса должен использоваться:
а) прямо или косвенно в контексте ограничения:
б) прямо или косвенно как фактические параметры, которые, в конечном счете, используются
в контексте ограничения.
П р и м е ч а н и е —См. пример в А.2 и ИСО/МЭК 8824-1, пункт D.5.
10.3 Ограничение, множество значений которого зависит от одного или более параметров
абстрактного синтаксиса, является переменным. Такие ограничения определяются после определе
ния абстрактного синтаксиса (возможно профилем международного функционального стандарта
или в заявке о соответствии реализации протоколу).
П р и м е ч а н и е — Если где-нибудь в цепочке определений, включаемой в спецификацию значений
ограничения, появляется параметр абстрактного синтаксиса, то ограничение является переменным. Оно
является переменным ограничением, даже если множество значений результирующего ограничения на зависит от
фактическою значения параметра абстрактного сингакснса.
П р и м е р
Значение (((1..3) EXCEPT a) UNION (1..3)) всегда 1..3 независимо от того, каково значение
*а*. тем не менее это все является переменным ограничением, если «а» является параметром
абстрактного синтаксиса.
10.4 Формально переменное ограничение не влияет на множество значений в абстрактном
синтаксисе.
П р и м с ч а м и с — Настоятельно рекомендуется, чтобы ограничения, которые, как ожидается, оста
нутся в абстрактном синтаксисе переменными, имели спецификацию исключений, использующую нотацию
ГОСТ ИСО/МЭК 8824-1, пункт 45.4.
ПРИЛОЖЕНИЕ Л
(справочное)
Примеры
А.1 Примеры использования определения параметризованного типа
Предположим, что разработчику протокола нужно часто передавать аутентификатор с одним или более
полями протокола. Он будет передаваться как BIT STRING рядом с полем. Без параметризации аутентификатор
должен бы быть определен как BIT STRING, а затем "authenticator" с текстом, идентифицирующим, к чему
он прилагался, должен добавляться при каждом появлении. Альтернативно разработчик может предпочесть
преобразование каждого поля, имеющего аутентификатор, в последовательность SEQUENCE этого поля и
“authenticator”’а. Метод параметризации обеспечивает удобную краткую запись для решения этой задачи.
Сначала определяют параметризованный тип SIGNED():
SIGNED (ToBcSigncd): : = SEQUENCE
<
aulhcnticated-data ToBcSigncd.
authenticatorBIT STRING
)
тогда в теле протокола нотация (например)
SIGNED (OrderInformation)
есть нотация типа, усгано&тснная для
SEQUENCE
{
authenticated-data Ordcrlnfomiation,
authenticatorBIT STRING
)
Далее предположим, что для некоторых полей отправитель должен иметь возможность добавить (или нс
9