ГОСТ Р ИСО/МЭК 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”’a. Метод параметризации обеспечивает удобную краткую запись для решения этой задачи.
Сначала определяют параметризованный тип SIGNED{}:
SIGNED {ToBeSigned} : : = SEQUENCE
{
authenticated-data ToBeSigned, authenticator BIT STRING
тогда в теле протокола нотация (например)
SIGNED {OrderInformation} есть нотация типа, установленная для SEQUENCE {
authenticated-data OrderInformation, authenticator BIT STRING
}
Далее предположим, что для некоторых полей отправитель должен иметь возможность добавить (или не
9