ГОСТ Р ИСО/МЭК 8825-3—2016
9.23 Комбинированный набор объектов кодирования
9.23.1 Чтобы обеспечить полное кодирование, пользователь ECN может выдать первичный набор
объектов кодирования и второй набор объектов кодирования, введенный зарезервированными слова ми
COMPLETED BY.
9.23.2 Прилагаемый набор объектов кодирования определяется как комбинированный набор объ
ектов кодирования, формируемый путем добавления к первому набору объектов кодирования некото
рого класса кодирования, для которого у первого класса не хватает некоторого объекта кодирования, а
второй набор содержит его (см. 13.2). Набором для использования с COMPLETED BY часто является
предопределенный набор PER-BASICUNALIGNED (см. в D.1.17 пример приложения комбинированного
набора объектов кодирования).
9.23.3 Когда набор объектов кодирования может содержать только один объект кодирования, на
пример для класса #SEQUENCE-OF. он может также содержать объект кодирования, например для
класса #Special-sequence-of, который определяется как «#Spocial-sequence-of ::= «SEQUENCE-
OF». Явно генерируемая структура кодирования может содержать в своем определении как класс
#SEQUENCE-OF, так и класс #Specialsequonce-of. Таким способом один комбинированный набор
объектов кодирования может быть приложен для получения стандартных кодирований для некоторых
исходных конструкций SEQUENCE OF и специализированных кодирований для других.
9.24 Точка приложения
9.24.1 В любом заданном приложении кодирований имеется определенная стартовая точка (для
ELM — это генерируемая структура или структуры кодирования верхнего уровня, к которым приклады
ваются кодирования). Это называется «начальной точкой приложения» для структуры, которая
кодиру ется модулем ELM.
9.24.2 Комбинированный набор объектов кодирования прикладывается к генерируемой структуре
кодирования, и это будет кодированиями, определенными для абстрактных значений этой структуры
кодирования, которая кодирует абстрактные значения типа АСН.1.
9.24.3 Если в комбинированном наборе объектов кодирования имеется объект кодирования, ко
торый соответствует некоторому классу кодирования с битовым полем (первоначально — некоторой
генерируемой структуре кодирования) в точке приложения, то он прикладывается, и этот процесс закан
чивается. В остальных случаях класс в точке приложения «расширяется» с помощью разыменования.
Это расширение с помощью разыменования будет продолжаться до нахождения объекта кодирования
или достижения простейшего класса. Если классом в точке приложения является конструктор кодиро
вания и имеется объект кодирования для этого конструктора кодирования («CHOICE, #SEQUENCE.
#SEQUENCE-OF и др.). то он прикладывается, а точка приложения затем переходит к другому компо
ненту (в виде параллельного действия).
9.24.4 В более сложном случае может быть класс «OPTIONAL. следующий за некоторым клас
сом компонента (и классом #TAG. предшествующим ему). Точка приложения переходит сначала к
#OPTIONAL. и объект кодирования этого класса может заменить этот компонент (см. 9.16.9). Затем
точка приложения переходит к тегу, а в конце — к самому компоненту.
9.25 Условные кодирования
9.25.1 Уже упоминался класс кодирования #TRANSFORM как средство выражения простых ариф
метических действий над целочисленными значениями (см. 9.17.3). Этот класс кодирования, однако,
играет более фундаментальную роль в спецификации кодирований для некоторых простейших клас
сов. Как правило, спецификация кодирований для многих предопределенных типов АСН.1 является
двух- или трехстадийным процессом, использующим объекты кодирования класса #TRANSFORM и.
например, класса #CONDITIONAL-INT или #CONDITIONAL-REPETITION.
9.25.2 Классы кодирования «TRANSFORM. #CONDITIONAL-INT и «CONDITIONAL-REPETITION
ограничены в своем использовании. Объекты кодирования для этих классов могут быть определены
только с использованием либо синтаксиса из раздела 24. подразделов 23.7 и 23.14 соответственно,
либо не-ECN определения объекта кодирования, причем они могут использоваться только в опреде
лениях других объектов кодирования. Они не могут появляться в наборах объектов кодирования или
применяться прямо для кодирования полей структур кодирования (см. 18.1.7).
9.25.3 Спецификация кодирования для классов кодирования в категории «целочисленная» вы
полняется следующим образом. Определяются кодирования (класса кодирования «CONDITIONAL-INT)
24