ГОСТ Р ИСО/МЭК 8825-2-2003 длины в виде полуограниченного целого числа к списку полей с последующими значениями компонентов. Во втором случае длина и значение должны быть закодированы так, как если бы маркер расширения отсутствовал.
19.5 Если количество компонентов фиксировано (ub = lb) и ub < 64К, то для «последователь-ности-из» не должно быть детерминанта длины, а поля каждого компонента должны быть по порядку добавлены к списку полей «последовательности-из».
19.6 В противном случае должны использоваться процедуры 10.9 для добавления списка полей, порожденных п компонентами, с предшествующим детерминантом длины, равным п компонентам, в виде ограниченного целого числа, если ub установлена, или в виде полуограниченного целого числа, если ub не установлена. lb устанавливается так, как определено выше.
Примечания
1 Процедуры фрагментации могут применяться после 16К, 32К, 48К или 64К компонентов.
2 Точки разрыва для фрагментации находятся между полями. Число битов до точки разрыва необязательно кратно восьми.
20 Кодирование типа «множество»
Тип «множество» должен иметь в «RootComponentTypeList» элементы, отсортированные в каноническом порядке, определенном ГОСТ Р ИСО/МЭК 8824-1, 8.4, и, кроме того, для определения порядка кодирования компонентов, когда один или несколько компонентов являются нете-гированными выборочными типами, каждый нетегированный выборочный тип упорядочивается так, как если бы у него был тег, равный наименьшему тегу в «RootAltemativeTypeList» этого выборочного типа или в любом вложенном нетегированном выборочном типе. Элементы множества, которые встречаются в «RootComponentTypeList», должны быть закодированы так, как если бы они были значением типа «последовательность». Элементы множества, которые встречаются в «ExtensionAd-ditionList», должны быть закодированы так, как если бы они были компонентами типа «последовательность», как определено в 18.9 (т. е. они кодируются в том порядке, в каком были определены).
П р и м е р — В следующем примере, где подразумевается среда тегирования IMPLICIT TAGS:
A :: = SET
{
a [3] INTEGER, b [1] CHOICE {
c [2] INTEGER d [4] INTEGER
},
e CHOICE
{
f CHOICE {
g [5] INTEGER, h [6] INTEGER
},
i CHOICE {
j [0] INTEGER
}
}
}
компоненты множества всегда будут кодироваться в порядке e, b, a, так как теги сортируются в порядке [0], [1], [3].
21 Кодирование типа «множество-из»
21.1 Для CANONICAL-PER кодирования значений компонентов типа «множество-из» должны появляться в возрастающем порядке; кодирования компонентов сравниваются как битовые строки, заполненные нулевыми битами до границы октета.
22