1. Каждое «Значение» в «СпискеЗначений» должно быть обозначением некоторого значения «Типа», который используется в последовательности «Тип-МноЖествоИз».

Примечания:

  1. Порядок следования значений-компонентов не имеет йикакого семанти­ческого значення.

  2. К. правилам кодирования не Предъявляются требования сохранения по­рядка следования этих значений. ;

  1. ОБОЗНАЧЕНИЯ ВЫБОРОЧНЫХ ТИПОВ

    1. Обозначения для определения выборочного типа (п. 3.25), ИСХОДЯ <<з имеющихся других типов, должны иметь ВИД «ЙЫбО’ рочный Тип »;

ВыборочнынТип : : - СН01СЕ{Спйсок-ТипоВ-Вариантов) СпнсокТииов-Вариантов ■: : ?=

ПопменованныйТип |

СпирокТппов-Вариантов, ПоименованныйТип

11 р и м е ч а н и я;

  1. Правила кодирования обеспечивают идентичность способа кодирования выбранного значения, выборочного типа способу кодирования такого же значения типа-вяриаига. ' ...

  2. Кодирований значений «ВыборочногоТипа» с едийстрейнйм тйпом-вариай- том ■ «ПоименбванныЙТпп» й «СпискеТийов-Вариантов» ііейоэйожно отличить от Кодирования . соответствующих значений в случае прямого задания «Типа», ПХОДЯІПСІО в последовательность «ПойменованныйТиП». ■

  1. Все типы, входящие в «СписокТипов-Вариаитов», должны иметь различные теги (разд. 24).

  2. . Тег выборочного типа следует считать переменной, ГІрн выборе конкретного значения выборочного типа его тег становит­ся равным тегу того типа-варианта, к которому относится значе­ние.

  3. . Если выборочный тип используется в таких конструкциях, где требованием настоящего стандарта является использование типов с различными тегами (пп. 18.3, 20.3 и 22.2), то теги всех ти­пов, определенных в «СпискеТипов-Вариантов» должны отли­чаться от тегов других типов (разд. 24). Приведенные ниже при­меры иллюстрируют это требование. Примеры 1 и 2 являются примерами правильного использования нотации. Пример 3 яв­ляется примером неправильного использования нотации, по­скольку теги типов d и f, а также eng совпадают.

Примеры:

1. А : : = CHOICE

{b В

с NULL)

В : : = CHOICE

{d [0] NULL,

е [і] NULL}

A : : = CHOICE

{b, B,

с C}

В : : = CHOICE

{d [0] NULL

e [1] NULL}

C : : = CHOICE

{f [2] NULL,

g [3] NULL}

:3. Пример неправильного описания

A : : = CHOICE

{b, B,

с C}

В : : = CHOICE

{d [0] NULL

e [1] NULL}

C : : = CHOICE

{f [0] NULL,

g [1] NULL}

  1. . Все «Идентификаторы» (если они заданы) в последова­тельностях «ПоименованныйТип», входящих в «СписокТипов-Ва- риантов», должны быть различными.

. Если выборочный тип используется в таких конструкци­ях, где требованием настоящего стандарта является использова­ние «ПоименованныхТипов» с различными «Идентификаторами», то «Идентификаторы» если они заданы, всех «Поименованных- Типов» в «СпискеТипов-Вариантов» должны отличаться от всех' «Идентификаторов» других «ПоименованныхТипов» (входящих в- конструкцию).

  1. . Обозначения, используемые для определения значения вы­борочного типа, определяются продукцией «ВыборочноеЗначе- ние»:

ВыборочноеЗначение : : = ПоименованноеЗначение

  1. . Если «ПоименованноеЗначение» содержит «Идентифи­катор», то оно должно быть записью значения того типа в «Спис- кеЗначений-Вариантов», который имеет тот же «Идентификатор». Если «ПоименованноеЗначение» не содержит «Идентификатора», то оно должно быть записью значения одного из тех типов в «Спис- кеЗначений-Вариантов», которые не имеют «Идентификатора».

Примечание. Пропуск идентификатора в «ПоименованномТипе» может привести к неоднозначности.

  1. ОБОЗНАЧЕНИЯ СЕЛЕКТИВНЫХ ТИПОВ

    1. Поименованный тип в «СпискеТипов-Вариантов» «Выбо- рочногоТипа» может быть задан с помощью обозначения «Селек­тивныйТип»:

СелективныйТип : : = Идентификатор<Тип,

где «Тип» является обозначением, задающим «ВыборочныйТип», а «Идентификатор» является одним из «Идентификаторов» «Пои­менованныхТипов» (входящих в «ВыборочныйТип»).

Примечание. «СелективныйТип» может использоваться как в качестве «ПоименованногоТипа», и в этом случае «Идентификатор» используется, при записи значения, так и в качестве «Типа» в «ПоименованномТипе», и в этом случае его «Идентификатор» при записи значения не используется.

  1. Обозначения для записи значения селективного типа оп­ределяются продукцией «СелективноеЗначение»:

СелективноеЗначение : : = ПоименованноеЗначение

При этом в «ПоименованноеЗначение» входит идентификатор, присутствующий в соответствующей последовательности «Селек­тивныйТип», только в том случае, когда «СелективныйТип» ис­пользуется как «ПоименованныйТип».

  1. ОБОЗНАЧЕНИЯ ТЕГИРОВАННЫХ ТИПОВ

Тегированный тип (п. 3.24) является новым типом, изоморфным исходному типу, но имеющим другой тег. При всех способах ко­дирования обеспечивается отличие значения нового типа от зна­чения исходного типа. Тегированный тип используется главным образом в тех случаях, когда требованием настоящего стандарта является использование типов с различными тегами (пп. 18.3, 20.3, 22.2, 22.4 и 25.2).

Г! р и м е ч а н и е. Различные теги могут понадобиться для правильного де­кодирования значения получателем в тех случаях, когда протокол допускает передачу значений различных типов данных в произвольный момент времени.

  1. Обозначения для тегированного тина должны иметь вид «ТегнрованнынТии»:

ТегированныйТип : : = Тег Тип |

Тег IMPLICIT Тип

Тег : = [Класс НомерВКлассе}

. . . НомерВКлассе : ; = Число | ОнределенноеЗначьи-twt- 1

Класс : : =* UNIVERSAL

APPLICATION

PRIVATE пусто

  1. «ОпределенноеЗначение» должно быть ссылкой на неот­рицательное значение целочисленного типа или производного от целочисленного помеченного типа.

  2. Новый тир изоморфен исходному типу, но имеет тег с классом, заданным последовательностью «Класс», и номер, за­данный последовательностью «НомерВКлассе», если для после- ч довательности «Класс» был выбран вариант, отличный от «пус­то»; если же был выбран вариант «пусто», то тег относится к кон­текстно-зависимому классу и имеет номер, заданный последова­тельностью «НомерВ Классе».

  3. Для типов, определяемых вне рамок настоящего стандар­та, «Класс» не должен быть универсальным классом («UNIVER­SAL»).

Примечание. Иейользовапие тегов универсального класса периодически согласовывается между ЙСО И МККТТ.

  1. Если «Класс» тега является прикладным («APPLICA­TION»), то тот же самый «Тег» не может быть использован пов­торно в том же самом модуле.

  2. Если «Класс» тега явлйотся пользовательским («PRIVA­TE»), то тег доступен для нсйольэования по правилам, устанавли­ваемым организациями-пользователями.

  3. Если «Классом» тега является «пусто», то на использо­вание «ТйГа» не накладывается никаких ограничений, кроме тех, Которые вызваны требованиями различия тегов, сформулирован­ными в пп. 18.3, 20.3 и 22.2,

Вариант «IMPLICIT» является ;боэдачением того, что для тех Правил кодирования, которые обеспечивают эту возмож­ность, явное указание тега, который, имел исходный «Тйи», не требуемся при передаче данных.Примечание, Сохранение старого тега может оказаться полезным, еслн он относится к универсальному классу, и поэтому однозначно идентифицирует исходный тип при отсутствии информации об определении, с помощью АСН.1 нового типа. Однако с помощью варианта «IMPLICIT» обеспечивается мини­мальное количество октетов при передаче. Пример кодирования для использо­вания варианта «LMPLICIT» дан в ИСО 8825 (ГОСТ ).

  1. Вариант «IMPLICIT» нс должен использоваться, если тип, определенный последовательностью «Тип», . является выбо­рочным («CHOICE») или произвольным типом («ANY»).

  2. Обозначения для определения значения тегированного типа должны иметь вид «ТегированноёЗиачение»:

ТегированноеЗначение : : =° Значение, где «Значение» является обозначением значения того типа, кото­рый был задан последовательностью «Тип» в продукции «Тегироч ванныйТип».

ГІ р и м е ч а и и е. Отметим, чти в этом обозначении отсутствует «Тег».

  1. ОБОЗНАЧЕНИЯ ПР0ИЗВОЛЬНОГ0 ТИПА

    1. Обозначение для произвольного типа определяется про­дукцией «ПроизвольныйТнп»;

ПроизвольныйТнп : : — ANY ■ ■ ‘

Примечание. «ANY» используется в тех случаях, когда требуется до­полнительная стандартизация. При использовании «ANt» до того, как станет возможным обмен информацией, требуется дополнительное описвние тиПов дан-’ ных и их семантики; соответствующее описание типа должно быть Подставлено вместо «ANY». Использование произвольного типа («ANY») в стандартах ЙСО или Рекомендациях МККТТ сопровождается, как правило, комментарием, ука­зывающим источник Дополнительных описаний. -

  1. Произвольный тип имеет неопределенный тег; он не дол-, жен использоваться в тех случаях, где требованием настоящего стандарта является использование типов с различными тегами (пп. 18.3, 20.3, 22.2 и 22.4). /

  2. Запись значения йроизвольногО типа Должна осуществ­ляться по правилам АСН.1 и определяется следующей продукци», ей «ПроизвольноеЗкачение».

ПроизвольноеЗяачение : : = Тиїі Значение,. .

где «Тип» ■*-*обозначение некоторого типа,, а «Значение» — обо­значение для записи значения этого типа. .

  1. О&03ЙАЧ£НИЯ ТИПА «ИДЕНТЙШКАІСЙ» ОБЪЕКТА» ;

    1. Ссылка на тип «идентификатор объекта» (п. 3.31) долж­на иметь вид «Тип-ИдентификаторОбъекта»:

-. Тип-ИдентификаторОбъекта : : - OBJECT IDENTIFIER

  1. Этот тип имеет тег универсального класса с номером 6.

  2. Обозначения для записи идентификатора объекта долж­ны иметь вид «Значение-ИдентификаторОбъекта»:

Значение-ИдентификаторОбъекта : : = {СписокКомпонентовИдОбъекта} | {ОпределенноеЗначение СписокКомпонентовИдОбъекта}

■СписокКомпонентовИдОбъекта : : =

КомпонентИдОбъекта :

КомпонентИдОбъекта СписокКомпонентовИдОбъекта

КомпонентИдОбъекта : : = ИменнаяФорма :

ЧисловаяФорма : Смешаннаяформа

Именная форма : : = Идентификатор

Числовая форма : : = Число : ОпределенноеЗначение Смешаннаяформа : : = Идентификатор (ЧисловаяФорма) 26.4. Определенное значение в продукции «ЧисловаяФорма» должно быть ссылкой на значение целочисленного типа или теги­рованного типа, производного от целочисленного.

  1. Определенное значение в продукции «Значение-Идентифи­каторОбъекта» должно быть значением целочисленного типа или тегированного типа, производного от целочисленного.

  2. «ИменнаяФорма» используется только для тех компонентов идентификатора объекта, численные значения которых определе­ны в приложениях 2—4 настоящего стандарта, и должна совпа­дать с одним из идентификаторов, определенных в этих приложе­ниях.

  3. «Число» в продукции «ЧисловаяФорма» должна быть чис­ловым значением, присвоенным компоненту идентификатора объекта.

  4. «Идентификатор» в продукции «Смешаннаяформа» зада­ется в тех случаях, когда данному компоненту идентификатора объекта присвоено Целочисленное значение.

Семантическое значение идентификаторов задается {де­ревом идентификаторов объектов}. Дерево идентификаторов объектов является графом вида «дерево с корнем», причем корень дерева соответствует настоящему стандарту, вершины соответ­ствуют службам — источникам идентификации, осуществляющим выделение ребер, исходящих из данной вершины. Каждому ребру дерева ставится в соответствие компонент идентификатора объек­та, являющийся целочисленным значением. Каждому информа­ционному объекту, подлежащему идентификации, соответствует в точности одна вершина (обычно — висящая вершина) и отсут­ствуют другие информационные объекты, которым назначена та дке вершина. Таким образом, информационный объект однознач­но й .непротиворечиво идентифицируется последовательностью числовых значений (компонентов идентификаторов объектов), ко­торые соответствуют ребрам в пути от корня графа до вершины, соответствующей данному информационному объекту.

Примечание. Значения вида «идентификатор объекта» состоят,, по крайней мере, из двух компонентов, как определяется в приложениях 2—4.

  1. Значение вида «идентификатор объекта» представляет из себя упорядоченный список значений вида «компонент иденти­фикатора объекта». Начиная с корня дерева идентификаторов объектов, каждое значение вида «компонент идентификатора объ­екта» соответствует ребру этого дерева. Последнее из этих значений, идентифицирует ребро, ведущее к вершине, соответству­ющей информационному объекту. Это тот самый информационный объект, который идентифицируется данным значением вида «иден­тификатор объекта». Существенной частью значения вида «ком­понент идентификатора объекта» является «именная форма» или «числовая форма», к которой сводится «именная форма». «Чис­ловая форма» («NumberForm») представляет собой численное значение компонента идентификатора объекта.

Примечание. Как правило, информационный объект представляет собой класс информации (например формат файла), а не конкретный предста­витель этого класса (например конкретный файл). Таким образом, каждая вер­шина дерева задает некоторый информационный класс (определяемый неко­торым описанием, на которое дается ссылка), а не какой-то объем информации, относящейся к этому классу.

  1. В тех случаях, когда «Значение-ИдентификаторОбъек- та» включает «ОпределенноеЗначение», список компонентов иден­тификатора объекта, задаваемый этим «ОпределеннымЗначени- ем», ставится непосредственно перед компонентами, явно присут­ствующими в значении.