---
title: "\"ГОСТ Р ИСО/МЭК 8824-2-2001. Государственный стандарт Российской Федерации. Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 2. Спецификация информационного объекта\""
number: "ГОСТ Р ИСО/МЭК 8824-2-2001"
issuer: "Государственный комитет Российской Федерации по стандартизации и метрологии"
status: действует
canonical: "https://bukva.ai/docs/gost-r-isomek-8824-2-2001"
---

## "ГОСТ Р ИСО/МЭК 8824-2-2001. Государственный стандарт Российской Федерации. Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 2. Спецификация информационного объекта"

# "ГОСТ Р ИСО/МЭК 8824-2-2001. Государственный стандарт Российской Федерации. Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 2. Спецификация информационного объекта"

(принят и введен в действие Постановлением Госстандарта России от 06.09.2001 N 375-ст)

> [!IMPORTANT]
> КонсультантПлюс: примечание.
> С 1 июля 2003 года до вступления в силу технических регламентов акты федеральных органов исполнительной власти в сфере технического регулирования носят рекомендательный характер и подлежат обязательному исполнению только в части, соответствующей целям, указанным в пункте 1 статьи 46 Федерального закона от 27.12.2002 N 184-ФЗ.
> Документ [введен](#p100012) в действие с 1 июля 2002 года.


<div align="right">

<a id="p100001"></a>Принят и введен в действие<br>
Постановлением Госстандарта России

</div>

от 6 сентября 2001 г. N 375-ст

<a id="p100002"></a>**ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ**

<a id="p100003"></a>**ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ**

<a id="p100004"></a>**АБСТРАКТНАЯ СИНТАКСИЧЕСКАЯ НОТАЦИЯ ВЕРСИИ ОДИН (АСН.1)**

<a id="p100005"></a>**ЧАСТЬ 2**

<a id="p100006"></a>**СПЕЦИФИКАЦИЯ ИНФОРМАЦИОННОГО ОБЪЕКТА**

<a id="p100007"></a>Information technology. Abstract Syntax Notation
One (ASN.1). Information object specification

<a id="p100008"></a>**ГОСТ Р ИСО/МЭК 8824-2-2001**

<div align="right">

<a id="p100009"></a>Группа П85

<a id="p100010"></a>ОКС 35.100.60

<a id="p100011"></a>ОКСТУ 4002

</div>


<a id="p100012"></a>Дата введения

<div align="right">

1 июля 2002 года

</div>



### <a id="p100013"></a>Предисловие


1. <a id="p100014"></a>Разработан Государственным научно-исследовательским и конструкторско-технологическим институтом "ТЕСТ" Министерства Российской Федерации по связи и информатизации.
<a id="p100015"></a>Внесен Министерством Российской Федерации по связи и информатизации.
2. <a id="p100016"></a>Принят и введен в действие Постановлением Госстандарта России от 6 сентября 2001 г. N 375-ст.
3. <a id="p100017"></a>Настоящий стандарт содержит полный аутентичный текст международного стандарта ИСО/МЭК 8824-2-98 "Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 2. Спецификация информационного объекта" с Дополнением N 1 (1999 г.).
4. <a id="p100018"></a>Введен впервые.


### 1. <a id="p100019"></a>Область применения


<a id="p100020"></a>Настоящий стандарт является частью абстрактной синтаксической нотации версии 1 (АСН.1) и устанавливает нотацию для спецификации классов информационных объектов, информационных объектов и множеств информационных объектов.


### 2. <a id="p100021"></a>Нормативные ссылки


<a id="p100022"></a>В настоящем стандарте использованы ссылки на следующие стандарты:
<a id="p100023"></a>[ГОСТ Р ИСО/МЭК 8824-1-2001](https://bukva.ai/docs/gost-r-isomek-8824-1-2001). Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 1. Спецификация основной нотации [Рекомендация МККТТ Х.680 (1997)]
<a id="p100024"></a>ИСО/МЭК 8824-3-98. Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 2. Спецификация ограничения [Рекомендация МККТТ Х.682 (1997)]
<a id="p100025"></a>ИСО/МЭК 8824-4-95. Информационная технология. Абстрактная синтаксическая нотация версии один (АСН.1). Часть 4. Параметризация спецификации АСН.1 [Рекомендация МККТТ Х.683 (1997)].


### 3. <a id="p100026"></a>Определения



#### <a id="p100027"></a>3.1. Спецификация базовой нотации

<a id="p100028"></a>В настоящем стандарте используют термины, определенные в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001).

#### <a id="p100029"></a>3.2. Спецификация ограничения

<a id="p100030"></a>В настоящем стандарте используют термин, определенный в ИСО/МЭК 8824-3: табличное ограничение.

#### <a id="p100031"></a>3.3. Параметризация спецификации АСН.1

<a id="p100032"></a>В настоящем стандарте используют термины, определенные в ИСО/МЭК 8824-4:
<a id="p100033"></a>а) параметризованный тип;
<a id="p100034"></a>б) параметризованное значение.

#### <a id="p100035"></a>3.4. Дополнительные определения

<a id="p100036"></a>3.4.1. Ассоциированная таблица (для некоторого информационного объекта или множества информационных объектов): абстрактная таблица, получаемая из объекта или множества объектов путем выравнивания иерархической структуры, полученной из-за присутствия полей связи (см. [3.4.13](#p100056)).
<a id="p100037"></a>*Примечание.* Ассоциированная таблица может быть использована для определения точной природы некоторого ограничения (см. ИСО/МЭК 8824-3), которое было определено с использованием множества объектов.

<a id="p100038"></a>3.4.2. Синтаксис по умолчанию: нотация, которая должна использоваться для определения информационных объектов тех классов, авторы определения которых не предоставляют определенный синтаксис (см. пример [11.9](#p100289)).
<a id="p100039"></a>3.4.3. Определяемый синтаксис: нотация, предоставленная автором определения класса, которая позволяет определять информационные объекты этого класса дружественным пользователю образом.
<a id="p100040"></a>Примечание. Например определяемый синтаксис для класса OPERATION может позволить определять экземпляры класса с помощью слова ARGUMENT с последующим &ArgumentType, далее - RESULT с последующим &ResultType и CODE с последующим &operationCode (см. пример [11.10](#p100292)).

<a id="p100041"></a>3.4.4. Расширяемое множество объектов: множество объектов с маркером расширения.
<a id="p100042"></a>3.4.5. Поле: компонент класса информационных объектов. Каждое поле есть поле типа, поле значения фиксированного-типа, поле значения переменного-типа, поле множества значений фиксированного-типа, поле множества значений переменного-типа, поле информационного объекта или поле множества информационных объектов.
<a id="p100043"></a>3.4.6. Имя поля: имя, которое идентифицирует поле некоторого класса; либо класса, который специфицирует поле непосредственно, и в этом случае имя является примитивным именем поля, либо класса, который имеет цепочку полей связи к тому, в котором поле фактически определено (см. [9.13](#p100180) и [9.14](#p100183)).
<a id="p100044"></a>3.4.7. Поле идентификатора: поле класса значений фиксированного-типа, выбранное для обеспечения однозначной идентификации информационных объектов данного класса. Значения поля идентификатора, если они применяются, должны быть недвусмысленными в пределах любого множества информационных объектов, которое определяется для данного класса. Они могут, но не обязаны служить для недвусмысленной идентификации информационных объектов данного класса в некоторой широкой области.
<a id="p100045"></a>Примечания
1. <a id="p100046"></a>Поле идентификатора имеет фиксированный тип АСН.1, но значения этого типа могут быть введены в протокол для идентификации информационных объектов в классе.
2. <a id="p100047"></a>Область, в которой идентификатор является недвусмысленным, является множеством информационных объектов. Однако она может быть также недвусмысленной в пределах данного абстрактного синтаксиса или в пределах целого прикладного контекста, или даже может быть глобальной для всех классов и всех прикладных контекстов при использовании типа "идентификатор объекта" для поля идентификатора.

<a id="p100048"></a>3.4.8. Информационный объект: экземпляр некоторого класса информационных объектов, сформированный из множества полей, которые соответствуют спецификациям полей этого класса.
<a id="p100049"></a>Примечание. Например одним конкретным экземпляром информационного объекта класса OPERATION (упоминаемого в 3.4.9) может быть invertMatrix, который имеет поле &ArgumentType, содержащее тип Matrix, поле &ResultType, содержащее также тип Matrix, и поле &operationCode, содержащее значение 7 (см. пример в [10.13](#p100255)).

<a id="p100050"></a>3.4.9. Класс информационного объекта (класс): множество полей, формирующее шаблон для определения возможно неограниченной совокупности информационных объектов (экземпляров класса).
<a id="p100051"></a>*Примечание.* Например класс информационного объекта OPERATION может быть определен так, чтобы соответствовать понятию операции "operation" для удаленных операций. Каждая спецификация различных поименованных полей будет соответствовать некоторому аспекту, который может изменяться от одного экземпляра операции к другому. Таким образом, в ней могут быть поля &ArgumentType, &ResultType и &operationCode, из которых два первых поля определяют тип, а третье - поле значения.

<a id="p100052"></a>3.4.10. Поле информационного объекта: поле, которое содержит информационный объект некоторого заданного класса.
<a id="p100053"></a>3.4.11. Множество информационных объектов: непустое множество информационных объектов, все из которых одного и того же класса информационных объектов.
<a id="p100054"></a>Примечание. Например одно множество информационных объектов, MatrixOperations, класса OPERATION (использованного в примере [3.4.9](#p100050)) может содержать invertMatrix (упомянутую В [3.4.8](#p100048)) вместе с другими связанными операциями, такими как addMatrices, multiplyMatrices, и т.д. Такое множество объектов может использоваться при определении абстрактного синтаксиса, который обеспечивает вызов и возврат результата всех этих операций (см. пример в [12.7](#p100313)).

<a id="p100055"></a>3.4.12. Поле множества информационных объектов: поле, которое содержит множество информационных объектов некоторого заданного класса.
<a id="p100056"></a>3.4.13. Тип "экземпляр-из": тип, определяемый указанием класса информационных объектов, который связывает идентификаторы объектов с типами.

##### <a id="p100057"></a>3.4.14 Поле связи: поле объекта или множества объектов.

<a id="p100058"></a>3.4.15. Тип поле класса объектов: тип, задаваемый путем указания некоторого поля класса информационных объектов. В ИСО/МЭК 8824-3 определена нотация, обеспечивающая возможность ограничения этого типа путем указания множества информационных объектов данного класса.
<a id="p100059"></a>3.4.16. Примитивное имя поля: имя, заданное непосредственно определением класса информационных объектов без использования поля связи.
<a id="p100060"></a>3.4.16 bis. Рекурсивное определение (класса информационных объектов): набор определений АСН.1, который не может быть переупорядочен таким образом, что все классы информационных объектов, использованные в конструкции, определены до определения конструкции.
<a id="p100061"></a>*Примечание.* Рекурсивные определения классов информационных объектов допустимы в АСН.1. Рекурсивные определения информационных объектов и множеств информационных объектов недопустимы.


##### <a id="p100062"></a>3.4.17 Поле типа: поле, которое содержит произвольный тип.

<a id="p100063"></a>3.4.18. Поле значения: поле, которое содержит значение. Такое поле может быть либо фиксированного-, либо переменного-типа. В первом случае тип значения зафиксирован спецификацией поля. Во втором случае тип значения содержится в некотором (заданном) поле типа того же самого информационного объекта.
<a id="p100064"></a>3.4.19. Поле множества значений: поле, которое содержит непустое множество значений некоторого типа. Такое поле может быть либо фиксированного-, либо переменного-типа. В первом случае тип значений зафиксирован спецификацией поля. Во втором случае тип значений содержится в некотором (заданном) поле типа того же самого информационного объекта.
<a id="p100065"></a>*Примечание.* Множество значений в поле множества значений для информационного объекта образует подтип заданного типа.


### 4. <a id="p100066"></a>Сокращения


<div align="center">

<a id="p100067"></a>В настоящем стандарте используют следующие сокращения:

</div>

<a id="p100068"></a>АСН.1 - абстрактная синтаксическая нотация версии 1;
<a id="p100069"></a>БНФ - Бекуса-Науэра форма.


### 5. <a id="p100070"></a>Соглашение


<a id="p100071"></a>В настоящем стандарте используют соглашения, приведенные в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), раздел 5.


### 6. <a id="p100072"></a>Нотация


<a id="p100073"></a>В настоящем разделе приводят сводку нотаций, определенных в настоящем стандарте.

#### <a id="p100074"></a>6.1. Присвоения

<a id="p100075"></a>В настоящем стандарте определены следующие нотации, которые могут использоваться как альтернативы для "Assignment" (см. [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), раздел 12):
- <a id="p100076"></a>ObjectClassAssignment (см. [9.1](#p100139));
- <a id="p100077"></a>ObjectAssignment (см. [11.1](#p100259));
- <a id="p100078"></a>ObjectSetAssignment (см. [12.1](#p100296)).

#### <a id="p100079"></a>6.2. Типы

<a id="p100080"></a>6.2.1. В настоящем стандарте определены следующие нотации, которые могут использоваться как альтернативы для встроенного типа "BuiltinType" (см. ГОСТ Р ИСО [МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 16.2):
- <a id="p100081"></a>ObjectClassFieldType (см. [14.1](#p100340));
- <a id="p100082"></a>InstanceOfType (см. [Приложение C](#p100458)).
<a id="p100083"></a>6.2.2. В настоящем стандарте определены следующие нотации, которые могут использоваться как альтернативы для указываемого типа "ReferencedType" (см. ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 16.3):
- <a id="p100084"></a>TypeFromObject (см. [раздел 15](#p100363));
- <a id="p100085"></a>ValueSetFromObject (см. [раздел 15](#p100363)).

#### <a id="p100086"></a>6.3. Значения

<a id="p100087"></a>6.3.1. В настоящем стандарте определены следующие нотации, которые могут использоваться как альтернативы для встроенного значения "BuiltinValue" (см. ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 16.8):
- <a id="p100088"></a>ObjectClassFieldValue (см. [14.6](#p100356));
- <a id="p100089"></a>InstanceOfValue (см. [Приложение C](#p100458)).
<a id="p100090"></a>6.3.2. В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для указываемого значения "ReferencedValue" (см. ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 16.9):
- <a id="p100091"></a>ValueFromObject (см. [раздел 15](#p100363)).

#### <a id="p100092"></a>6.4. Элементы

<a id="p100093"></a>В настоящем стандарте определена следующая нотация, которая может использоваться как альтернатива для элементов "Elements" (см. ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 46.3):
- <a id="p100094"></a>ObjectSetElements (см. [12.3](#p100305)).


### 7. <a id="p100095"></a>Элементы АСН.1


<a id="p100096"></a>Дополнительно к элементам АСН.1, определенным в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), раздел 11, в настоящем стандарте используют элементы АСН.1, определенные в последующих подразделах. Общие правила, применяемые к этим элементам, те же самые, что и определенные в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.1. Эти новые элементы АСН.1 используют набор символов АСН.1, определенный в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), раздел 10, и дополнительно знак амперсанд ("&").
<a id="p100097"></a>Примечание. Примечание в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 10.1 также применяется к элементам, специфицированным в 7.1 - [7.9](#p100122).


#### <a id="p100098"></a>7.1. Ссылки на класс информационных объектов

<a id="p100099"></a>Имя элемента - objectclassreference
<a id="p100100"></a>Ссылка на класс информационных объектов "objectclassreference" должна состоять из последовательности символов, определенной в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.2 для "typereference", за исключением того, что в нее не должны включаться буквы нижнего регистра.

#### <a id="p100101"></a>7.2. Ссылки на информационный объект

<a id="p100102"></a>Имя элемента - objectclassreference
<a id="p100103"></a>Ссылка на информационный объект "objectreference" должна состоять из последовательности символов, определенной в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.4 для "valuereference".

#### <a id="p100104"></a>7.3. Ссылки на множество информационных объектов

<a id="p100105"></a>Имя элемента - objectclassreference
<a id="p100106"></a>Ссылка на множество информационных объектов "objectsetreference" должна состоять из последовательности символов, определенной в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.2 для "typereference".

#### <a id="p100107"></a>7.4. Ссылки на поле типа

<a id="p100108"></a>Имя элемента - typefieldreference
<a id="p100109"></a>Ссылка на поле типа "typefieldreference" должна состоять из амперсанда ("&"), за которым непосредственно следует последовательность символов, определенная в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.2 для "typereference".

#### <a id="p100110"></a>7.5. Ссылки на поле значения

<a id="p100111"></a>Имя элемента - valuefieldreference
<a id="p100112"></a>Ссылка на поле значения "valuefieldreference" должна состоять из амперсанда ("&"), за которым непосредственно следует последовательность символов, определенная в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.4 для "valuereference".

#### <a id="p100113"></a>7.6. Ссылки на поле множества значений

<a id="p100114"></a>Имя элемента - valuesetfieldreference
<a id="p100115"></a>Ссылка на поле множества значений "valuesetfieldreference" должна состоять из амперсанда ("&"), за которым непосредственно следует последовательность символов, определенная в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.2 для "typereference".

#### <a id="p100116"></a>7.7. Ссылки на поле объекта

<a id="p100117"></a>Имя элемента - objectfieldreference
<a id="p100118"></a>Ссылка на поле объекта "objectfieldreference" должна состоять из амперсанда ("&"), непосредственно за которым следует последовательность символов, определенная в [7.2](#p100101) для "objectreference".

#### <a id="p100119"></a>7.8. Ссылки на поле множества объектов

<a id="p100120"></a>Имя элемента - objectsetfieldreference
<a id="p100121"></a>Ссылка на поле множества объектов "objectsetfieldreference" должна состоять из амперсанда ("&"), непосредственно за которым следует последовательность символов, определенная в [7.3](#p100104) для "objectsetreference".

#### <a id="p100122"></a>7.9. Слово

<a id="p100123"></a>Имя элемента - word
<a id="p100124"></a>Слово "word" должно состоять из последовательности символов, определенной в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.2 для "typereference", за исключением того, что в нее не должны включаться буквы или цифры нижнего регистра.

#### <a id="p100125"></a>7.10. Дополнительные ключевые слова

<a id="p100126"></a>Имена CLASS, INSTANCE, SINTAX и UNIQUE приведены в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.18 как зарезервированные слова.


### 8. <a id="p100127"></a>Определения ссылок



#### <a id="p100128"></a>8.1 Конструкции

<a id="p100129"></a>         DefinedObjectClass ::=
             ExternalObjectClassReference |
             objectclassreference |
             UsefulObjectClassReference
         DefinedObject ::=
             ExternalObjectReference |
             objectreference
         DefinedObjectSet ::=
             ExternalObjectSetReference |
             objectsetreference
<a id="p100130"></a>используются для ссылок на определения класса, информационного объекта и множества информационных объектов соответственно.
<a id="p100131"></a>8.2. За исключением, определенным в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 12.15, альтернативы "objectclassreference", "objectreference" и "objectsetreference" должны использоваться только в том модуле, в котором класс, информационный объект или множество информационных объектов (см. [9.1](#p100139), [11.1](#p100259) и [12.1](#p100296)) присвоены этой ссылке.
<a id="p100132"></a>Альтернативы "ExternalObjectClassReference", "ExternalObjectReference" и "ExternalObjectSetReference" определяются следующим образом:
<a id="p100133"></a>         ExternalObjectClassReference ::=
             modulereference
             "."
             objectclassreference
         ExternalObjectReference ::=
             modulereference
             "."
             objectreference
         ExternalObjectSetReference ::=
             modulereference
             "."
             objectsetreference
<a id="p100134"></a>Эти альтернативы должны использоваться только в том случае, если соответствующим "objectclassreference", "objectreference" или "objectsetreference" были присвоены класс, информационный объект или множество информационных объектов соответственно (см. [9.1](#p100139), [11.1](#p100259) и [12.1](#p100296)) в модуле (отличном от ссылающегося модуля), идентифицированном соответствующей ссылкой "modulereference". Это и есть именно те, соответственно, класс, информационный объект или множество информационных объектов, которые указываются.

#### <a id="p100135"></a>8.3 Альтернатива "UsefulObjectClassReference" для "DefinedObjectClass" определяется следующим образом:

<a id="p100136"></a>UsefulObjectClassReference::= TYPE-IDENTIFIER | ABSTRACT-SYNTAX, где первая альтернатива определена в [Приложении A](#p100434), а вторая - в [Приложении B](#p100445).
<a id="p100137"></a>Примечание. Имена TYPE-IDENTIFIER и ABSTRACT-SYNTAX приведены в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 11.18 как зарезервированные слова.


### 9. <a id="p100138"></a>Определение и присвоение класса информационных объектов


<a id="p100139"></a>9.1. Конструкция "ObjectClassAssignment" используется для присвоения класса информационных объектов имени ссылки ("objectclassreference"). Эта конструкция является одной из альтернатив для "Assignment" в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), раздел 12 и определяется следующим образом:
<a id="p100140"></a>         ObjectClassAssignment ::=
             objectclassreference
             "."
             ObjectClass
<a id="p100141"></a>9.2. Класс информационного объекта - тот, который определяется конструкцией "ObjectClass".
<a id="p100142"></a>         ObjectClass ::=
             DefinedObjectClass |
             ObjectClassDefn |
             ParametrizedObjectClass
<a id="p100143"></a>если "ObjectClass" есть:
<a id="p100144"></a>а) "DefinedObjectClass", то определение класса - то же самое, как определение указываемого класса;
<a id="p100145"></a>б) "ObjectClassDefn", то класс определяется, как описано в 9.3;
<a id="p100146"></a>в) "ParameterizedObjectClass", то класс определяется, как описано в ИСО/МЭК 8824-4, 9.2.

#### <a id="p100147"></a>9.3 Каждый класс, в конечном счете, определяется "ObjectClassDefn":

<a id="p100148"></a>         ObjectClassDefn ::=
             CLASS
             "{" FieldSpec "," + "}"
             WithSyntaxSpec?
         WithSyntaxSpec ::= WITH SYNTAX SyntaxList
<a id="p100149"></a>Эта нотация позволяет разработчику класса предоставить спецификации поименованных полей, каждая из которых является "FieldSpec", как определено в 9.4. Факультативно автор определения может предоставить синтаксис определения информационных объектов ("SyntaxList"), как указано в [10.5](#p100209). Автор определения класса может также специфицировать семантику, связанную с определением класса.
<a id="p100150"></a>9.4. Каждая альтернатива "FieldSpec" специфицирует и называет одно из полей, которое будет или может быть связано с экземплярами класса.
<a id="p100151"></a>         FieldSpec ::=
             TypeFieldSpec |
             FixedTypeValueFieldSpec |
             VariableTypeValueFieldSpec |
             FixedTypeValueSetFieldSpec |
             VariableTypeValueSetFieldSpec |
             ObjectFieldSpec |
             ObjectSetFieldSpec
<a id="p100152"></a>Различные альтернативы для "FieldSpec" определяются в последующих пунктах.
<a id="p100153"></a>9.5. Альтернатива "TypeFildSpec" определяет, что поле является полем типа (см. [3.4.17](#p100062)).
<a id="p100154"></a>         TypeFildSpec ::=
             typefieldreference
             TypeOptionalitySpec?
             TypeOptionalitySpec ::= OPTIONAL | DEFAULT Type
<a id="p100155"></a>Имя поля есть "typefieldreference". Если продукция "TypeOptionalitySpec" отсутствует, то все определения информационных объектов этого класса обязательно должны включать в себя спецификацию типа для этого поля. Если присутствует "OPTIONAL", то поле может быть оставлено неопределенным. Если присутствует "DEFAULT", то последующий "Type" обеспечивает установку умолчания для поля, если оно опущено в определении.
<a id="p100156"></a>9.6. Продукция "FixedTypeValueFieldSpec" определяет, что поле является полем значения фиксированного-типа (см. [3.4.18](#p100063)).
<a id="p100157"></a>         FixedTypeValueFieldSpec ::=
             valuefieldreference
             Type
             UNIQUE?
             ValueOptionalitySpec?
         ValueOptionalitySpec ::= OPTIONAL | DEFAULT Value
<a id="p100158"></a>Имя поля есть "valuefieldreference". Конструкция "Type" специфицирует тип значения, содержащегося в поле. Продукция "ValueOptionalitySpec", если присутствует, специфицирует, что значение может быть опущено в определении информационного объекта или, в случае "DEFAULT", это опускание порождает последующее значение "Value", которое должно быть того же самого типа. Присутствие ключевого слова "UNIQUE" специфицирует, что это поле является полем идентификатора. Если присутствует ключевое слово, то продукция "ValueOptionalitySpec" не должна быть альтернативой "DEFAULT Value".
<a id="p100159"></a>9.7. Когда полю идентификатора присваивается значение, то требуется, чтобы это значение было недвусмысленным в определенном множестве информационных объектов.
<a id="p100160"></a>9.8. Продукция "VariableTypeValueFieldSpec" определяет, что поле является полем значения переменного-типа (см. [3.4.18](#p100063)).
<a id="p100161"></a>         VariableTypeValueFieldSpec ::=
             valuefieldreference
             FieldName
             ValueOptionalitySpec?
<a id="p100162"></a>Имя поля есть "valuefieldreference". Продукция "FieldName" (см. [9.14](#p100183)), которая относится к определяемому классу, должна быть полем типа; поле типа, которое либо находится в том же информационном объекте как поле значения, либо связывается цепочкой полей объектов, ссылки на которые появляются в "FieldName", должно содержать тип значения. (Все поля связи, ссылки на которые появляются в "FieldName", должны быть полями объектов). Продукция "ValueOptionalitySpec", если присутствует, специфицирует, что значение может быть опущено в определении информационного объекта или, в случае "DEFAULT", это опускание порождает последующее значение "Value". Продукция "ValueOptionalitySpec" должна быть такой, что:
<a id="p100163"></a>а) если поле типа, обозначенное "FieldName", имеет продукцию "TypeOptionalitySpec" "OPTIONAL", то "ValueOptionalitySpec" должна также быть "OPTIONAL", и
<a id="p100164"></a>б) если продукция "ValueOptionalitySpec" есть "DEFAULT Value", то поле типа, обозначенное "FieldName", должно иметь продукцию "TypeOptionalitySpec" "DEFAULT Type", и значение "Value" должно быть значением этого типа.
<a id="p100165"></a>9.9. Продукция "FixedTypeValueSetFieldSpec" определяет, что поле является полем множества значений фиксированного-типа (см. [3.4.19](#p100064)):
<a id="p100166"></a>         FixedTypeValueSetFieldSpec ::=
             valuesetfieldreference
             Type
             ValueSetOptionalitySpec?
             ValueSetOptionalitySpec ::= OPTIONAL | DEFAULT ValueSet
<a id="p100167"></a>Примечание. Продукция "ValueSet" определяется в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 15.4, 15.5 и позволяет явно перечислять (в фигурных скобках) множество значений или использовать ссылку "typereference" для подтипа "Type".

<a id="p100168"></a>Имя поля есть "valuesetfieldreference". Конструкция "Туре" специфицирует тип значений, содержащихся в поле. Продукция "ValueSetOptionalitySpec", если присутствует, указывает, что поле в определении информационного объекта может быть неспецифицированным или, в случае "DEFAULT", это опускание порождает последующее множество значений "ValueSet", которое должно быть подтипом этого типа.
<a id="p100169"></a>9.10. Продукция "VariableTypeValueSetFieldSpec" определяет, что поле является полем множества значений переменного-типа (см. [3.4.19](#p100064)).
<a id="p100170"></a>         VariableTypeValueSetFieldSpec ::=
             valuesetfieldreference
             FieldName
             ValueSetOptionalitySpec?
<a id="p100171"></a>Имя поля есть "valuesetfieldreference". Продукция "FieldName" (см. [9.14](#p100183)), которая относится к определяемому классу, должна быть полем типа; поле типа, которое либо находится в том же информационном объекте как поле множества значений, либо связывается цепочкой полей объектов, ссылки на которые появляются в "FieldName", должно содержать тип значений. (Все поля связи, ссылки на которые появляются в "FieldName", должны быть полями объектов). Продукция "ValueSetOptionalitySpec", если присутствует, специфицирует, что множество значений может быть опущено в определении информационного объекта или, в случае "DEFAULT", это опускание порождает последующее множество значений "ValueSet". Продукция "ValueSetOptionalitySpec" должна быть такой, что:
<a id="p100172"></a>а) если поле типа, обозначенное "FieldName", имеет продукцию "TypeOptionalitySpec" "OPTIONAL", то продукция "ValueSetOptionalitySpec" должна также быть "OPTIONAL", и
<a id="p100173"></a>б) если продукция "ValueSetOptionalitySpec" есть "DEFAULT ValueSet", то поле типа, обозначенное "FieldName", должно иметь продукцию "TypeOptionalitySpec" "DEFAULT Type", а множество значений "ValueSet" должно быть значением этого типа.
<a id="p100174"></a>9.11. Продукция "ObjectFieldSpec" определяет, что поле является полем информационного объекта (см. [3.4.10](#p100052)).
<a id="p100175"></a>    ObjectFieldSpec ::=
        objectfieldreference
        DefinedObjectClass
        ObjectOptionalitySpec?
    ObjectOptionalitySpec ::= OPTIONAL | DEFAULT Object
<a id="p100176"></a>Имя поля есть "objectfieldreference". Продукция "DefinedObjectClass" указывает класс объекта, содержащегося в поле (который может быть классом "ObjectClass", определяемым в настоящее время). Продукция "ObjectOptionalitySpec", если присутствует, устанавливает, что поле в определении информационного объекта может быть неспецифицированным или, в случае "DEFAULT", это опускание порождает последующий объект "Object" (см. [11.2](#p100261)), который должен быть "DefinedObjectClass".
<a id="p100177"></a>9.12. Продукция "ObjectSetFieldSpec" определяет, что поле является полем множества информационных объектов (см. [3.4.12](#p100055)).
<a id="p100178"></a>    ObjectSetFieldSpec ::=
        objectsetfieldreference
        DefinedObjectClass
        ObjectSetOptionalitySpec?
    ObjectSetOptionalitySpec ::= OPTIONAL | DEFAULT ObjectSet
<a id="p100179"></a>Имя поля есть "objectsetfieldreference". Продукция "DefinedObjectClass" указывает класс объектов, содержащихся в поле. Продукция "ObjectSetOptionalitySpec", если присутствует, устанавливает, что поле в определении информационного объекта может быть неспецифицированным или, в случае "DEFAULT", это опускание порождает последующее множество объектов "ObjectSet" (см. [12.2](#p100298)), все объекты которого должны быть "DefinedObjectClass".
<a id="p100180"></a>9.13. Конструкция "PrimitiveFieldName" используется для идентификации поля относительно класса, содержащего его спецификацию:
<a id="p100181"></a>    PrimitiveFieldName ::=
        typefieldreference |
        valuefieldreference |
        valuesetfieldreference |
        objectfieldreference |
        objectsetfieldreference
<a id="p100182"></a>Имена всех полей, специфицированных в определении класса, должны быть различными.
<a id="p100183"></a>9.14. Конструкция "FieldName" используется для идентификации поля относительно некоторого класса, который либо непосредственно содержит спецификацию поля, либо имеет цепочку полей связи к содержащему классу. Цепочка указывается списком имен "PrimitiveFieldName", разделенных точками.
<a id="p100184"></a>FieldName::= PrimitiveFieldName "." +

#### <a id="p100185"></a>9.15 Если имеется любая цепочка (одна или более) спецификаций полей связи (см. [3.4.14](#p100057)) такая, что:

<a id="p100186"></a>а) первое поле находится в том классе, который определяется, и
<a id="p100187"></a>б) каждое последующее является полем класса, использованного при определении предыдущего, и
<a id="p100188"></a>в) последнее поле определяют, используя класс, который определяется, то, по крайней мере, одна из спецификаций полей должна иметь "ObjectOptionalitySpec" или "ObjectSetOptionalitySpec".
<a id="p100189"></a>*Примечание.* Это условие должно предотвратить рекурсивные определения классов информационных объектов без конечного представления для информационных объектов этого рекурсивного класса.


#### <a id="p100190"></a>9.16 Примеры

<a id="p100191"></a>Расширенная версия класса информационных объектов, описанного неформально как пример в [3.4.9](#p100050), может определяться следующим образом:
<a id="p100192"></a>    OPERATION ::= CLASS
    {
        &ArgumentType   OPTIONAL,
        &ResultType     OPTIONAL,
        &Errors         ERROR OPTIONAL,
        &Linked         OPERATION OPTIONAL,
        &resultReturned BOOLEAN DEFAULT TRUE,
        &code           INTEGER UNIQUE
    }
    ERROR ::= CLASS
    {
        &ParameterType OPTIONAL,
        &code          INTEGER UNIQUE
    }
<a id="p100193"></a>Примечания
1. <a id="p100194"></a>Этот пример основывается на понятиях операции и ошибки из стандартов по удаленным операциям, но упрощен с целью наглядности.
2. <a id="p100195"></a>Поля, специфицируемые для этого класса, включают два поля типа (&ArgumentType и &ResultType) двух полей множеств объектов (&Errors и &Linked) и двух полей значений (&resultReturned и &code), последнее является полем идентификатора.
3. <a id="p100196"></a>Множество информационных объектов, образованное классом OPERATION, должно быть таким, чтобы не было двух объектов в множестве, имеющих одно и то же значение для поля &code. (То же самое применяется к множествам объектов ERROR).
4. <a id="p100197"></a>Класс информационных объектов OPERATION включает цепочку полей связи, описанную в [9.15](#p100185). Цепочка длиной единица образуется полем &Linked, которое специфицируется (рекурсивно) с помощью OPERATION. Однако это недопустимо, так как поле обозначено как OPTIONAL.
5. <a id="p100198"></a>Никакой из этих примеров не содержит продукцию "WithSyntaxSpec". Соответствующие примеры приводятся в [10.13](#p100255).


### 10. <a id="p100199"></a>Список синтаксисов


<a id="p100200"></a>10.1. Часто бывает, что одна спецификация определяет класс информационных объектов, для которого несколько других независимых отдельных спецификаций определяют информационные объекты. Возможно, автору определения класса следует предоставить дружественную пользователю нотацию для определения информационных объектов этого класса.
<a id="p100201"></a>*Примечание.* Именно для этого (исторически) использовалась главным образом "макронотация" АСН.1 до того, как была заменена настоящим стандартом.

<a id="p100202"></a>10.2. В данном разделе установлена нотация, с помощью которой разработчик класса информационных объектов определяет специфический для класса синтаксис определения информационных объектов этого класса.
<a id="p100203"></a>10.3. Нотация является синтаксической конструкцией "SyntaxList", которая встречается в синтаксической конструкции "ObjectClassDefn".
<a id="p100204"></a>10.4. Конструкция "SyntaxList" специфицирует синтаксис для определения единственного информационного объекта определяемого класса. Синтаксис появляется как "DefinedSyntax" в последующих пунктах.
<a id="p100205"></a>*Примечание.* Свойством настоящей спецификации является то, что конец любой синтаксической конструкции, определенный "SyntaxList" (экземпляра "DefinedSyntax"), может быть найден путем:
<a id="p100206"></a>а) игнорирования комментариев АСН.1;
<a id="p100207"></a>б) трактовки значений символьных строк как лексических признаков;
<a id="p100208"></a>в) проставления начальной "{", согласовывая вложенные "{" и "}", и завершения конструкции несогласованной "}".

<a id="p100209"></a>10.5. Конструкция "SyntaxList" специфицирует последовательность "DefinedSyntaxToken", которая должна появляться в "DefinedSyntax" (см. [11.5](#p100275)).
<a id="p100210"></a>    SyntaxList ::= "{" TokenOrGroupSpec empty + "}"
    TokenOrGroupSpec ::= RequiredToken | OptionalGroup
    OptionalGroup ::= "[" TokenOrGroupSpec empty + "]"
    RequiredToken ::=
        Literal |
        PrimitiveFieldName
<a id="p100211"></a>*Примечание.* Разработчику конструкции "SyntaxList" не предоставляются полные возможности БНФ. Грубо говоря, мощность нотации эквивалента той, которая обычно используется при спецификации синтаксисов командной строки для интерпретаторов команд. Список возможных признаков "RequiredToken" дается в том порядке, в каком они допустимы; один или несколько последовательных признаков могут быть сделаны факультативными путем заключения их в квадратные скобки.


#### <a id="p100212"></a>10.6 Признак "word", используемый как литерал "Literal", не должен быть одним из следующих:

<a id="p100213"></a>**BIT**
<a id="p100214"></a>**BOOLEAN**
<a id="p100215"></a>**CHARACTER**
<a id="p100216"></a>**CHOICE**
<a id="p100217"></a>**EMBEDDED**
<a id="p100218"></a>**END**
<a id="p100219"></a>**ENUMERATED**
<a id="p100220"></a>**EXTERNAL**
<a id="p100221"></a>**FALSE**
<a id="p100222"></a>**INSTANCE**
<a id="p100223"></a>**INTEGER**
<a id="p100224"></a>**INTERSECTION**
<a id="p100225"></a>**MINUS-INFINITY**
<a id="p100226"></a>**NULL**
<a id="p100227"></a>**OBJECT**
<a id="p100228"></a>**OCTET**
<a id="p100229"></a>**PLUS-INFINITY**
<a id="p100230"></a>**REAL**
<a id="p100231"></a>**RELATIVE-OID**
<a id="p100232"></a>**SEQUENCE**
<a id="p100233"></a>**SET**
<a id="p100234"></a>**TRUE**
<a id="p100235"></a>**UNION**
<a id="p100236"></a>*Примечание.* Этот список включает только те (и все те) зарезервированные слова АСН.1, которые могут появляться в первом элементе продукций "Type", "Value", "ValueSet", "Object" или "ObjectSet", а также зарезервированное слово "END". Использование других зарезервированных слов АСН.1 не вызывает двусмысленности и разрешается. Когда определяемый синтаксис используется в окружении, в котором "word" является также "typereference" или "objectsetreference", то их использование в качестве "word" имеет предпочтение.

<a id="p100237"></a>10.7. Продукция "Literal" специфицирует фактическое включение того литерала "Literal", который является либо "word", либо запятой (","), в данной позиции в определяемом синтаксисе.
<a id="p100238"></a>    Literal ::=
        word |
        ","
<a id="p100239"></a>10.8. Каждая альтернатива "PrimitiveFieldName" специфицирует включение (в данной позиции в новом синтаксисе) продукции "Setting" (см. [11.6](#p100278)) для соответствующего поля.
<a id="p100240"></a>10.9. Каждая альтернатива "PrimitiveFieldName" класса информационных объектов должна появляться ровно один раз.
<a id="p100241"></a>10.10. Когда в процессе синтаксического разбора встречается альтернатива "OptionalGroup", а следующий элемент АСН.1 является синтаксически приемлемым в качестве первого элемента АСН.1 в факультативной группе, то принимается, что эта группа присутствует. Если следующий элемент не является синтаксически приемлемым в качестве первого элемента АСН.1 в факультативной группе, то принимается, что эта группа отсутствует.
<a id="p100242"></a>*Примечание.* Для того чтобы предотвратить неожиданные эффекты, разработчики обычно делают первым элементом АСН.1 в факультативной группе литерал "Literal".

<a id="p100243"></a>10.11. Экземпляр использования "DefinedSyntax" является недопустимым, если он не специфицирует все обязательные поля для класса информационных объектов.
<a id="p100244"></a>10.12. Для того чтобы обеспечить простой синтаксический разбор нового синтаксиса и предотвратить правильное употребление, следующие дополнительные ограничения накладываются на автора определения нового синтаксиса:
<a id="p100245"></a>а) требуется, чтобы каждая продукция "OptionalGroup" содержала в себе по крайней мере одну продукцию "PrimitiveFieldName" или "OptionalGroup";
<a id="p100246"></a>*Примечание* 1. Это помогает предотвратить видимое скопление информации, которое не отражается ни в каком поле информационного объекта.

<a id="p100247"></a>б) использование продукции "OptionalGroup" должно быть таким, чтобы в процессе синтаксического разбора никогда не могла появиться продукция "Setting", которая потенциально может быть установкой для более чем одного "FieldName";
<a id="p100248"></a>в) если продукция "OptionalGroup" начинается с альтернативы "Literal", то первый признак, следующий за "OptionalGroup", должен также быть "Literal" и отличаться от первого литерала "Literal" во всех непосредственно следующих конструкциях "OptionalGroup".
<a id="p100249"></a>Следующие ограничения накладываются на пользователя продукции "DefinedSyntax":
<a id="p100250"></a>г) всякий раз, когда альтернатива "Literal" присутствует в "DefinedSyntax", которая встречается в "OptionalGroup", альтернатива "Setting" для "PrimitiveFieldName" в этой "OptionalGroup" также должна присутствовать.
<a id="p100251"></a>Примечания
2. <a id="p100252"></a>Это ограничение помогает предотвратить видимое скопление информации, которая не отражается ни в каком поле информационного объекта.
3. <a id="p100253"></a>Следующий пример является допустимым синтаксисом, но ограничение г) не позволяет пользователю писать "LITERAL" без следующих за ним одной или обеих факультативных групп.
<a id="p100254"></a>[LITERAL [A &field] [B &field2]]


#### <a id="p100255"></a>10.13 Примеры

<a id="p100256"></a>Примеры определений классов из [9.16](#p100190) могут быть дополнены определяемым синтаксисом для обеспечения дружественного пользователям способа определения экземпляров классов. (Этот определяемый синтаксис используется в примере в [11.10](#p100292)).
<a id="p100257"></a>    OPERATION ::= CLASS
    {
        &ArgumentType   OPTIONAL,
        &ResultType     OPTIONAL,
        &Errors         ERROR OPTIONAL,
        &Linked         OPERATION OPTIONAL,
        &resultReturned BOOLEAN DEFAULT TRUE,
        &operationCode  INTEGER UNIQUE
    }
    WITH SYNTAX
    }
        [ARGUMENT       &ArgumentType]
        [RESULT         &ResultType]
        [RETURN RESULT  &resultReturned]
        [ERRORS         &Errors]
        [LINKED         &Linked]
        CODE            &operationCode
    }
    ERROR ::= CLASS
    {
        &ParameterType  OPTIONAL
        &errorCode      INTEGER UNIQUE
    }
    WITH SYNTAX
    }
        [PARAMETER      &ParameterType]
        CODE            &errorCode
    }


### 11. <a id="p100258"></a>Определение и присвоение информационного объекта


<a id="p100259"></a>11.1. Синтаксическая конструкция "ObjectAssignment" используется для присвоения информационному объекту заданного класса ссылочного имени ("objectreference"). Эта конструкция является одной из альтернатив для "Assignment" в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), раздел 12 и определяется следующим образом:
<a id="p100260"></a>    ObjectAssignment ::=
        objectreference
        DefinedObjectClass
        "::="
        Object
<a id="p100261"></a>11.2. Информационный объект, который должен быть класса, указанного "DefinedObjectClass", является объектом, определяемым конструкцией "Object".
<a id="p100262"></a>    Object ::=
        DefinedObject |
        ObjectDefn |
        ObjectFromObject |
        ParameterizedObjeet
<a id="p100263"></a>Если "Object" является:
<a id="p100264"></a>а) "DefinedObject", то объект - тот, который указан;
<a id="p100265"></a>б) "ObjectDefn", то объект определяется, как специфицировано в 11.3;
<a id="p100266"></a>в) "ObjectFromObject", то объект определяется, как специфицировано в [разделе 15](#p100363);
<a id="p100267"></a>г) "ParameterizedObjeet", то объект определяется, как специфицировано в ИСО/МЭК 8824-4, 9.2.

#### <a id="p100268"></a>11.3 Каждый информационный объект, в конечном счете, определяется "ObjectDefn".:

<a id="p100269"></a>    ObjectDefn ::=
        DefaultSyntax |
        DefinedSyntax
<a id="p100270"></a>Продукция "ObjectDefn" должна быть альтернативой "DefaultSyntax" (см. 11.4), если определение класса не содержит "WithSyntaxSpec", и "DefinedSyntax" (см. [11.5](#p100275)), если содержит.

#### <a id="p100271"></a>11.4 Синтаксис по умолчанию "DefaultSyntax" определяется следующим образом:

<a id="p100272"></a>DefaultSyntax::= "{" FieldSetting", "," * "}"
<a id="p100273"></a>FieldSetting::= PrimitiveFieldNameSetting
<a id="p100274"></a>Здесь должна быть ровно одна альтернатива "FieldSetting" для каждой конструкции "FieldSpec" в определении класса, для которой не указано "OPTIONAL" или "DEFAULT", и должно быть не более одной альтернативы "FieldSetting" для каждой конструкции "FieldSpec". Альтернативы "FieldSetting" могут появляться в произвольном порядке. Конструкция "PrimitiveFieldName" в каждой конструкции "FieldSetting" должна быть именем соответствующей продукции "FieldSpec". Конструкция "Setting" определяется в [11.6](#p100278).

#### <a id="p100275"></a>11.5 Определяемый синтаксис "DefinedSyntax" задается следующим образом:

<a id="p100276"></a>    DefinedSyntax ::= "{" DefinedSyntaxToken emply * "}"
    DefinedSyntaxToken ::=
        Literal |
        Setting
<a id="p100277"></a>Конструкция "SintaxList" в конструкции "WithSyntaxSpec" (см. [раздел 10](#p100199)) определяет последовательность конструкций "DefinedSyntaxToken", которая должна появляться в конструкции "DefinedSyntax". Конструкция "Setting" определяется в 11.6; каждое ее появление специфицирует установку для некоторого поля информационного объекта. Конструкция "Literal" определена в [10.7](#p100237); конструкции "Literal" присутствуют для удобочитаемости.
<a id="p100278"></a>11.6. Конструкция "Setting" специфицирует установку некоторого поля в определяемом информационном объекте.
<a id="p100279"></a>    Setting ::=
        Type |
        Value |
        ValueSet |
        Object |
        ObjectSet
<a id="p100280"></a>Если поле является:
<a id="p100281"></a>a) полем типа, то выбирается альтернатива "Type";
<a id="p100282"></a>b) полем значения, то выбирается альтернатива "Value";
<a id="p100283"></a>c) полем множества значений, то выбирается альтернатива "ValueSet";
<a id="p100284"></a>d) полем информационных объектов, то выбирается альтернатива "Object";
<a id="p100285"></a>e) полем множества информационных объектов, то выбирается альтернатива "ObjectSet".
<a id="p100286"></a>Примечание. Установка ограничивается, как описано в [9.5](#p100153) - [9.12](#p100177) и 11.7 - 11.8.

<a id="p100287"></a>11.7. Установка поля значений переменного-типа должна быть значением типа, заданного соответствующим полем типа того же самого или связанного объекта (то есть нотация значения для открытого типа не допускается).
<a id="p100288"></a>11.8. Установка поля множества значений переменного-типа должна быть множеством значений типов, заданных соответствующим полем типа того же самого или связанного объекта (то есть нотация значения для открытого типа не допускается).

#### <a id="p100289"></a>11.9 Примеры (синтаксис по умолчанию)

<a id="p100290"></a>Для определений классов информационных объектов из [9.16](#p100190) (которые не содержат "WithSyntaxSpec") экземпляры классов определяются с использованием "DefaultSyntax". Например (расширенная версия примера, данного в [3.4.7](#p100044)):
<a id="p100291"></a>    invertMatrix OPERATION ::=
    {
        &ArgumentType   Matrix
        &ResultType     Matrix
        &Errors         {determinant IsZero}
        &operationCode  7
    }
    determinantIsZero ERROR ::=
    {
        &errorCode 1
    }

#### <a id="p100292"></a>11.10 Примеры (определяемый синтаксис)

<a id="p100293"></a>В [10.13](#p100255) примеры классов содержат "WithSyntaxSpec" и, таким образом, элементы классов определяются с использованием "DefinedSyntax". Примеры [11.9](#p100289) могли бы быть написаны следующим образом:
<a id="p100294"></a>    invertMatrix OPERATION ::=
    {
        ARGUMENT Matrix
        RESULT Matrix
        ERRORS {determinantIsZero}
        CODE 7
    }
    determinantIsZero ERROR ::=
    {
        CODE 1
    }


### 12. <a id="p100295"></a>Определение и присвоение множества информационных объектов


<a id="p100296"></a>12.1. Синтаксическая конструкция "ObjectSetAssignment" используется для присвоения множеству информационных объектов заданного класса ссылочного имени ("objectsetreference"). Эта конструкция является одной из альтернатив для "Assignment" в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), раздел 12 и определяется следующим образом:
<a id="p100297"></a>    ObjectSetAssignment ::=
        objectsetreference
        DefinedObjectClass
        "::="
        ObjectSet
<a id="p100298"></a>12.2. Множество информационных объектов, которые должны быть класса, указанного "DefinedObjectClass", является множеством, определяемым конструкцией "ObjectSet":
<a id="p100299"></a>    ObjectSet ::= "{" ObjectSetSpec "}"
    ObjectSetSpec ::=
        RootElementSetSpec |
        RootElementSetSpec "," "..." |
        "..." |
        "..." "," AdditionalElementSetSpec |
        RootElementSetSpec "," "..." "," AdditionalElementSetSpec
<a id="p100300"></a>Конструкции "RootElementSetSpec" и "AdditionalElementSetSpec" определены в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001) и позволяют специфицировать множество информационных объектов в терминах информационных объектов или их множеств из управляющего класса. В множестве должен быть хотя бы один информационный объект, если в "ObjectSetSpec" не задается третья альтернатива ("..."). В последнем случае многоточие указывает, что множество объектов первоначально пусто, но объекты будут динамически добавляться к нему прикладной программой.
<a id="p100301"></a>Примечания
1. <a id="p100302"></a>Элементы, на которые указывает "ObjectSetSpec", являются объединением элементов, указываемых "RootElementSetSpec" и "AdditionalElementSetSpec".
2. <a id="p100303"></a>В отличие от расширяемых типов, таких как множество или последовательность, или ограничений расширяющих подтипов, которые являются статическими относительно множества "понятных" значений, устанавливаемых для каждой версии спецификации АСН.1, расширяемое множество объектов может динамически расти и сжиматься в пределах данной версии. Действительно, оно может расширяться и сжиматься с данным экземпляром использования прикладной программы по мере того, как программа динамически определяет и уничтожает объекты.

<a id="p100304"></a>12.2.1. Результат арифметической установки, применяемой к множествам расширяемых объектов, определен в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), раздел 46.
<a id="p100305"></a>12.3. Если расширяемое множество объектов A указывается в определении другого множества объектов B, то его маркер расширения наследуется B.
<a id="p100306"></a>12.4. Если конструкция "ValueSetFromObjects" (см. [раздел 15](#p100363)) определена с использованием расширяемого множества объектов, то результирующее множество значений не наследует маркер расширения от множества объектов.
<a id="p100307"></a>12.5. Если тип ограничен табличным ограничением (см. 10.3 ИСО/МЭК 8824-3) и множество объектов, указанных в табличном ограничении, является расширяемым, то тип не наследует маркер расширения от множества объектов. Если тип предназначается для того, чтобы быть расширяемым, то маркер расширения должен быть явно добавлен к его "ElementSetSpecs".

#### <a id="p100308"></a>12.6 Нотация для "ObjectSetElements" следующая:

<a id="p100309"></a>    ObjectSetElements ::=
        Object |
        DefinedObjectSet |
        ObjectSetFromObjects |
        ParameterizedObjectSet
<a id="p100310"></a>Элементы, специфицированные этой нотацией, определяются использованной альтернативой следующим образом:
<a id="p100311"></a>а) если используется альтернатива "Object", то определяется только объект, который также обозначен. Этот объект должен быть объектом управляющего класса;
<a id="p100312"></a>б) если используется любая из оставшихся альтернатив, то определяются все объекты множества, обозначенные также. Объекты должны быть объектами управляющего класса. Если используется альтернатива "DefinedObjectSet", то множество объектов есть то, которое указано. Если используется альтернатива "ObjectSetFromObjects", то множество объектов такое, как определено в [разделе 15](#p100363). Если используется альтернатива "ParameterizedObjectSet", то множество объектов такое, как определено в ИСО/МЭК 8824-4, 9.2.

#### <a id="p100313"></a>12.7 Пример

<a id="p100314"></a>Множество информационных объектов, неформально описанное в примечании к [3.4.11](#p100053), может быть специфицировано следующим образом:
<a id="p100315"></a>    MatrixOperations OPERATION ::=
    {
        invert Matrix |
        addMatrices |
        subtractMatrices |
        multiplyMatrices
    }


### 13. <a id="p100316"></a>Ассоциированные таблицы


<a id="p100317"></a>13.1. Каждый информационный объект или множество информационных объектов могут быть представлены как таблица - его ассоциированная таблица. Каждая ячейка ассоциированной таблицы соответствует установке некоторого поля информационного объекта или является пустой. Совокупность столбцов ассоциированной таблицы определяется классом, к которому объект или объекты относятся; совокупность строк определяется объектом или объектами, которые вызваны.

#### <a id="p100318"></a>13.2 Для заданного определения класса совокупность столбцов определяется следующим образом:

<a id="p100319"></a>а) имеется по одному столбцу для каждой спецификации поля в определении класса. Каждый такой столбец называется соответствующим именем "PrimitiveFieldName";
<a id="p100320"></a>б) имеется дополнительная совокупность столбцов, соответствующих каждой спецификации поля связи. Эта совокупность определяется применением настоящих правил к управляющему классу поля связи, за исключением того, что их имена дополняются префиксом "PrimitiveFieldName" поля связи и точкой (".").
<a id="p100321"></a>*Примечание.* Эти правила являются рекурсивными, и таким образом, если класс, прямо или косвенно, является самоссылающимся, то совокупность столбцов не ограничена. Это не запрещается.

<a id="p100322"></a>13.3. Для данного информационного объекта некоторого класса ассоциированной таблицей является та, которая появляется в результате применения 13.4 к множеству объектов, содержащему только этот объект.
<a id="p100323"></a>13.4. Для данного множества информационных объектов некоторого класса совокупность строк в ассоциированной таблице является той, которая получается при осуществлении следующей рекурсивной процедуры:
<a id="p100324"></a>а) сначала имеется одна строка для каждого объекта в множестве объектов. В каждой такой строке ячейки в столбцах, названных именами "PrimitiveFieldName", будут соответствовать установке соответствующего поля в объекте, а все другие ячейки будут пустыми;
<a id="p100325"></a>б) для каждого поля связи, появляющегося в некоторой строке в совокупности:
1) <a id="p100326"></a>создается (подчиненная) ассоциированная таблица содержимого поля связи;
2) <a id="p100327"></a>далее строка, в которой появилось поле связи, заменяется совокупностью строк по одной для каждой строки подчиненной ассоциированной таблицы. Каждая строка в этой совокупности является такой же, как и замененная, за исключением того, что ячейки из выбранной строки подчиненной ассоциированной таблицы используются для наполнения соответствующих ячеек (прежде пустых), имена "FieldName" которых имеют в качестве префикса "PrimitiveFieldName" полей связи.
<a id="p100328"></a>*Примечание.* Эти правила рекурсивны и такие, что, если информационный объект, прямо или косвенно, является самоссылающимся, то процедура не будет завершаться. Это не запрещается. На практике необходимо только знать содержимое ячеек с именами конечной длины, а для них может быть создана конечная процедура.


#### <a id="p100329"></a>13.5 Примеры допустимых конструкций "FieldName"

<a id="p100330"></a>Следующие конструкции "FieldName" относятся к допустимым для ассоциированной таблицы для объектов или множеств объектов класса OPERATION (определенного в [10.13](#p100255)):
<a id="p100331"></a>&ArgumentType
<a id="p100332"></a>&Errors.&Parameter
<a id="p100333"></a>&EiTors.&errorCode
<a id="p100334"></a>&Linked.&ArgumentType
<a id="p100335"></a>&Linked.&Linked. x operationCode
<a id="p100336"></a>&Linked.&Linked.&Linked.&Linked.&Linked.&Errors.&ErrorCode
<a id="p100337"></a>Так как класс OPERATION является самоссылающимся (из-за поля &Linked), то количество столбцов не ограничено.


### 14. <a id="p100338"></a>Нотация для типа "поле класса объектов"


<a id="p100339"></a>Тип, который указывается этой нотацией, зависит от категории имени поля. Для различных категорий имен полей в [14.2](#p100343) - [14.5](#p100355) специфицируется тип, который они указывают.

#### <a id="p100340"></a>14.1 Нотацией для типа "поле класса объектов" (см. [3.4.15](#p100058)) должна быть "ObjectClassFieldType":

<a id="p100341"></a>    ObjectClassFieldType ::=
        DefinedObjectClass
        "."
        FieldName
<a id="p100342"></a>где "FieldName" определяется, как в [9.14](#p100183), относительно класса, идентифицированного "DefinedObjectClass".
<a id="p100343"></a>14.2. Для поля типа нотация определяет открытый тип, то есть тот, множество значений которого является полным множеством всех возможных значений, которые можно специфицировать, используя АСН.1. Спецификация ограничений, использующая соответствующее множество информационных объектов (см. ИСО/МЭК 8824-3), может ограничивать этот тип конкретным типом. Следующие ограничения на использование данной нотации применяются, когда "FieldName" указывает поле типа.
<a id="p100344"></a>а) Эта нотация не должна, прямо или косвенно, использоваться в определении типа поля значения или множества значений класса информационных объектов.
<a id="p100345"></a>б) Эта нотация имеет неопределенный тег и, таким образом, не может быть использована там, где требуется, чтобы тег отличался от некоторых других типов.
<a id="p100346"></a>Примечания
1. <a id="p100347"></a>Это ограничение обычно можно обойти (явным) тегированием типа.
2. <a id="p100348"></a>Несмотря на утверждение в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 47.7.3, что концептуально добавляемый элемент для маркера расширения имеет тег, отличный от тегов всех известных типов АСН.1, открытый тип не должен использоваться, когда требуется, чтобы он имел тег, отличный от тега концептуально добавляемого элемента.

<a id="p100349"></a>в) Эта нотация не должна быть неявно тегированной.
<a id="p100350"></a>*Примечание* 3. Причиной этого ограничения является то, что, когда данный открытый тип ограничивается до конкретного типа, последний может оказаться выборочным типом.

<a id="p100351"></a>г) Требуется, чтобы правила кодирования для значения, присвоенного определенному таким образом компоненту, были такими, чтобы получатель мог успешно определить абстрактные значения, соответствующие всем другим частям конструкции, в которую компонент вставлен, без какого-либо знания о фактическом типе этого компонента.
<a id="p100352"></a>*Примечание* 4. Такая конструкция "Type" обычно ограничивается использованием множества информационных объектов и "AtNotation", как определено в ИСО/МЭК 8824-3, раздел 10. Однако пользователи АСН.1 должны учитывать, что применение этой нотации без ограничения может привести к двусмысленности в требованиях к реализации, и обычно ее следует избегать.

<a id="p100353"></a>14.3. Для поля значения фиксированного-типа или множества значений фиксированного-типа нотация обозначает тип "Type", который появляется в спецификации этого поля в определении класса информационных объектов.
<a id="p100354"></a>14.4. Для поля значения переменного-типа или множества значений переменного-типа нотация определяет открытый тип. Она используется при тех же ограничениях, оговоренных в [14.2](#p100343).
<a id="p100355"></a>14.5. Эта нотация недопустима, если поле является полем объекта или полем множества объектов.

#### <a id="p100356"></a>14.6 Нотацией для определения значения этого типа должно быть "ObjectClassFieldValue":

<a id="p100357"></a>    ObjectClassFieldValue ::=
        OpenTypeFieldVal |
        FixedTypeFieldVal

        OpenTypeFieldVal ::= Type ":" Value

        FixedTypeFieldVal ::= BuiltinValue | ReferencedValue
<a id="p100358"></a>14.7. Для поля значения или множества значений фиксированного-типа, используемого в "ObjectClassFieldType", должна использоваться альтернатива "FixedTypeFieldVal" и должно быть значение "Type", указанное в определении класса информационных объектов.
<a id="p100359"></a>14.8. Для поля типа, поля значения или множества значений переменного-типа, использованного в "ObjectClassFieldType", должна использоваться альтернатива "OpenTypeFieldVal". Тип "Type" в "OpenTypeFieldVal" должен быть любым типом АСН.1, а значение "Value" - любым значением того типа.

#### <a id="p100360"></a>14.9 Пример использования конструкции "ObjectClassFieldType"

<a id="p100361"></a>Каждый из следующих примеров основывается на примере в [10.13](#p100255) и показывает: а) возможный "ObjectClassFieldType", б) тип, которому тип примера а) эквивалентен (когда используется неограниченно), и в) нотацию для примера значения того типа.
<a id="p100362"></a>    1(a) OPERATION.&operationCode
    (b) INTEGER
    (c) 7
    2(a) OPERATION.&ArgumentType
    (b) открытый тип
    (c) Матрица:
    {{1, 0, 0, 0},
     {0, 1, 0, 0},
     {0, 0, 1, 0},
     {0, 0, 0, 1}}
    3(a) OPERATION.&Linked.&Linked.&Errors.&errorCode
    (b) INTEGER
    (c) 1
    4(a) OPERATION.&Linked.&ArgumentType
    (b) открытый тип
    (c) UniversalString: {planckConstant, "and", hamiltonOperator}


### 15. <a id="p100363"></a>Информация из объектов


<a id="p100364"></a>15.1. Информация из столбцов ассоциированной таблицы для объекта или множества объектов может быть указана различными способами в нотации "InformationFromObjects".
<a id="p100365"></a>    InformationFromObjects ::=
        ValueFromObject |
        ValueSetFromObjects |
        TypeFromObject |
        ObjectFromObject |
        ObjectSetFromObjects
    ValueFromObject ::=
        ReferencedObjects
        "."
        FieldName
    ValueSetFromObjects ::=
        ReferencedObjects
        "."
        FieldName
    TypeFromObject ::=
        ReferencedObjects
        "."
        FieldName
    ObjectFromObject ::=
        ReferencedObjects
        "."
        FieldName
    ObjectSetFromObjects ::=
        ReferencedObjects
        "."
        FieldName
    ReferencedObjects ::=
        DefinedObject | ParameterizedObject |
        DefinedObjectSet | ParameterizedObjectSet
<a id="p100366"></a>15.2. Эта нотация ссылается на все содержимое указываемого столбца ассоциированной таблицы для объектов "ReferencedObjects".
<a id="p100367"></a>15.3. В зависимости от формы "ReferencedObjects" и "FieldName" данная нотация может обозначать значение, множество значений, тип, объект или множество объектов. Эти пять случаев обозначаются конструкциями "ValueFromObject", "ValueSetFromObjects", "TypeFromObject", "ObjectFromObject" и "ObjectSetFromObjects" соответственно. Каждая такая конструкция является частным случаем нотации "InformationFromObjects".
<a id="p100368"></a>15.4. Продукция "InformationFromObjects" может быть разделена на две части. Первая часть образуется удалением последнего (или единственного) "PrimitiveFieldName" и предшествующей точки. Если первая часть обозначает объект или множество объектов, то применяются положения [15.5](#p100372) - [15.9](#p100412). В противном случае нотация недопустима. Вторая часть является последним (или единственным) "PrimitiveFieldName".
<a id="p100369"></a>*Примечание.* Применимо в качестве примера следующее определение:
<a id="p100370"></a>obi.&a.&b.&c.&d
<a id="p100371"></a>Первая часть в определении есть obi.&a.&b.&c, а вторая часть есть &d.

<a id="p100372"></a>15.5. В первом столбце таблицы 1 показана первая часть, во втором столбце - вторая часть, определенные в [15.4](#p100368). В третьем столбце указано, какой из пяти случаев "InformationFromObjects" (из перечисленных в [15.3](#p100367)) применяется.

<a id="p100373"></a>Таблица 1

<div align="right">

<a id="p100374"></a>Допустимые варианты "InformationFromObjects"

</div>



<table>
<colgroup><col width="31%"><col width="37%"><col width="32%"></colgroup>
<tr><td><a id="p100375"></a>Первая часть InformationFromObjects</td><td><a id="p100376"></a>Вторая часть InformationFromObjects</td><td><a id="p100377"></a>Конструкция</td></tr>
<tr><td rowspan="7"><a id="p100378"></a>Объект</td><td><a id="p100379"></a>Поле значения фиксированного-типа</td><td><a id="p100380"></a>"ValueFromObject"</td></tr>
<tr><td><a id="p100381"></a>Поле значения переменного-типа</td><td><a id="p100382"></a>"ValueFromObject"</td></tr>
<tr><td><a id="p100383"></a>Поле множества значений фиксированного-типа</td><td><a id="p100384"></a>"ValueSetFromObjects"</td></tr>
<tr><td><a id="p100385"></a>Поле множества значений переменного-типа</td><td><a id="p100386"></a>"ValueSetFromObjects"</td></tr>
<tr><td><a id="p100387"></a>Поле типа</td><td><a id="p100388"></a>"TypeFromObject"</td></tr>
<tr><td><a id="p100389"></a>Поле объекта</td><td><a id="p100390"></a>"ObjectFromObject"</td></tr>
<tr><td><a id="p100391"></a>Поле множества объектов</td><td><a id="p100392"></a>"ObjectSetFromObject"</td></tr>
<tr><td rowspan="7"><a id="p100393"></a>Множество объектов</td><td><a id="p100394"></a>Поле значения фиксированного-типа</td><td><a id="p100395"></a>"ValueSetFromObjects"</td></tr>
<tr><td><a id="p100396"></a>Поле значения переменного-типа</td><td><a id="p100397"></a>Не допускается</td></tr>
<tr><td><a id="p100398"></a>Поле множества значений фиксированного-типа</td><td><a id="p100399"></a>"ValueSetFromObjects"</td></tr>
<tr><td><a id="p100400"></a>Поле множества значений переменного-типа</td><td><a id="p100401"></a>Не допускается</td></tr>
<tr><td><a id="p100402"></a>Поле типа</td><td><a id="p100403"></a>Не допускается</td></tr>
<tr><td><a id="p100404"></a>Поле объекта</td><td><a id="p100405"></a>"ObjectSetFromObjects"</td></tr>
<tr><td><a id="p100406"></a>Поле множества объектов</td><td><a id="p100407"></a>"ObjectSetFromObjects"</td></tr>
</table>


<a id="p100408"></a>15.6. Если имеются множества объектов и последнее имя "PrimitiveFieldName" идентифицирует поле множества значений фиксированного-типа, то "ValueSetFromObjects" является объединением выбранных множеств значений.
<a id="p100409"></a>Примечание. ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 44.6 запрещает определение множества значений, не содержащего значений.

<a id="p100410"></a>15.7. Если имеются множества объектов и последнее имя "PrimitiveFieldName" идентифицирует поле множества объектов, то "ObjectSetFromObjects" является объединением выбранных множеств объектов.

<div align="center">

<a id="p100411"></a>15.8. Как показано в [таблице 1](#p100374), нотация не допускается, если включается множество объектов, а последнее имя "PrimitiveFieldName" идентифицирует поле значения множества значений переменного-типа или поле типа.<br>
<a id="p100412"></a>15.9. Использование этой нотации не допускается, если все ячейки в столбце, который указывается, пусты, за исключением случаев, когда это используется для непосредственного определения поля информационного объекта, для которого указано "OPTIONAL" (или "DEFAULT"), что приводит к полю, являющемуся пустым (или принимаемым по умолчанию).

</div>


#### <a id="p100413"></a>15.10 Пример информации из объектов

<div align="center">

<a id="p100414"></a>Для определений в примерах [11.9](#p100289), [11.10](#p100292) и [12.7](#p100313) следующие конструкции (в левых столбцах) являются допустимыми и могут использоваться в качестве эквивалентов выражений в правых столбцах.

</div>


<a id="p100415"></a>"ValueFromObject"


| <a id="p100416"></a>invertMatrix.&operationCode | <a id="p100417"></a>7 |
| --- | --- |
| <a id="p100418"></a>determinantlsZero.&errorCode | <a id="p100419"></a>1 |


<div align="center">

<a id="p100420"></a>"TypeFromObject"

</div>



| <a id="p100421"></a>invertMatrix.&ArgumentType | <a id="p100422"></a>Matrix |
| --- | --- |


<div align="center">

<a id="p100423"></a>"ValueSetFromObject"

</div>



| <a id="p100424"></a>invertMatrix.&Errors.&errorCode | <a id="p100425"></a>{1} |
| --- | --- |
| <a id="p100426"></a>MatrixOperations.&operationCode | <a id="p100427"></a>{7 \| и другие} |


<div align="center">

<a id="p100428"></a>"ObjectSetFromObjects"

</div>



| <a id="p100429"></a>invertMatrix.&Errors | <a id="p100430"></a>{determinantIsZero} |
| --- | --- |
| <a id="p100431"></a>MatrixOperations.&Errors | <a id="p100432"></a>{determinantIsZero \| и другие} |






<div align="right">

<a id="p100433"></a>Приложение A

</div>

(обязательное)

<div align="center">

<a id="p100434"></a>**КЛАСС ИНФОРМАЦИОННЫХ ОБЪЕКТОВ TYPE-IDENTIFIER**

</div>


<a id="p100435"></a>A.1. В данном приложении определяется полезный класс информационных объектов со ссылкой на класс TYPE-IDENTIFIER.
<a id="p100436"></a>*Примечание.* Этот класс информационных объектов является простейшим классом, имеющим ровно два поля - поле идентификатора типа OBJECT IDENTIFIER и поле типа, который определяет тип АСН.1 для передачи всей информации, касающейся любого конкретного объекта этого класса. Он определяется в настоящем стандарте из-за широко распространенного использования информационных объектов этой формы.

<a id="p100437"></a>A.2. Класс информационных объектов TYPE-IDENTIFIER определяется как:
<a id="p100438"></a>    TYPE-IDENTIFIER ::= CLASS
    {
        &id OBJECT IDENTIFIER UNIQUE,
        &Type
    }
    WITH SYNTAX {&Type IDENTIFIED BY &id}
<a id="p100439"></a>A.3. Этот класс определяется как "полезный" класс информационных объектов и доступен в любом модуле без необходимости его импорта.
<a id="p100440"></a>A.4. Пример
<a id="p100441"></a>Тело связи MHS может быть определено как:
<a id="p100442"></a>    MHS-BODY-CLASS ::= TYPE-IDENTIFIER

    g4FaxBody MHS-BODY-CLASS ::=
        {BIT STRING IDENTIFIED BY {mhsbody 3}}
<a id="p100443"></a>Разработчик протокола мог бы определять компонент для передачи MHS-BODY-CLASS, специфицируя тип "INSTANCE OF MHS-BODY-CLASS", определенный в [C.9](#p100475).





<a id="p100444"></a>Приложение B

<div align="right">

(обязательное)

<a id="p100445"></a>**ОПРЕДЕЛЕНИЯ АБСТРАКТНЫХ СИНТАКСИСОВ**

</div>


<a id="p100446"></a>B.1. В данном приложении определяется полезный класс информационного объекта, ABSTRACT-SYNTAX, для определения абстрактных синтаксисов.
<a id="p100447"></a>*Примечание.* Рекомендуется, чтобы экземпляр этого класса информационного объекта определялся каждый раз, когда абстрактный синтаксис определяется как значения единственного типа АСН.1.

<a id="p100448"></a>B.2. Класс информационных объектов ABSTRACT-SYNTAX определяется как:
<a id="p100449"></a>    ABSTRACT-SYNTAX ::= CLASS {
        &id         OBJECT IDENTIFIER,
        &Type,
        &property BIT STRING {handles-invalid-encodings (0)} DEFAULT {}
    }WITH SYNTAX {
        &Type IDENTIFIER BY &id [HAS PROPERTY &property]
    }
<a id="p100450"></a>Поле &id каждого объекта ABSTRACT-SYNTAX является именем абстрактного синтаксиса, а поле &Type содержит единственный тип АСН.1, значения которого образуют абстрактный синтаксис. Свойство "handles-invalid-encodings" указывает, что недопустимое кодирование не должно рассматриваться как ошибка во время процесса декодирования, а решение о том, как рассматривать такое недопустимое кодирование, остается за приложением.
<a id="p100451"></a>B.3. Этот класс информационных объектов определен как "полезный" из-за его общей употребимости, и он доступен в любом модуле без необходимости его импорта.
<a id="p100452"></a>B.4. Пример
<a id="p100453"></a>Если определен тип АСН.1, названный XXX-PDU, то может быть определен абстрактный синтаксис, который содержит все значения XXX-PDU, с помощью нотации:
<a id="p100454"></a>    xxx-Abstract-Syntax ABSTRACT-SYNTAX ::=
        {XXX-PDU IDENTIFIED BY {xxx 5}}
<a id="p100455"></a>Подробные примеры использования класса информационных объектов ABSTRACT-SYNTAX см. в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), C.3.
<a id="p100456"></a>B.5. Часто бывает, что абстрактный синтаксис определяется в терминах параметризованного типа (как определено в ИСО/МЭК 8824-4), например с параметрами, представляющими границы некоторых компонентов протокола. Такие параметры, ограниченные, как определено в ИСО/МЭК 8824-4, раздел 10, могут быть разрешены при определении абстрактного синтаксиса или переданы дальше как параметры абстрактного синтаксиса.





<a id="p100457"></a>Приложение C

<div align="right">

(обязательное)

<a id="p100458"></a>**ТИП "ЭКЗЕМПЛЯР-ИЗ"**

</div>


<a id="p100459"></a>C.1. В настоящем приложении специфицирована нотация типа и значение для типов "экземпляр-из" (см. [3.4.13](#p100056)). Такие типы могут передавать любые значения из любого информационного объекта в классе информационных объектов, определенного как класс TYPE-IDENTIFIER (см. [Приложение A](#p100434)), используя присвоение класса информационных объектов (ссылка на класс информационных объектов определяется как часть этой нотации).
<a id="p100460"></a>C.2. Нотация "InstanceOfType", указанная в ГОСТ Р ИСО/МЭК [8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001), 16.2 как одна из нотаций, образующих "Type", определяется следующим образом:
<a id="p100461"></a>InstanceOfType::= INSTANCE OF DefinedObjectClass
<a id="p100462"></a>*Примечание.* В ИСО/МЭК 8824-3, раздел 10 установлен способ, в котором этот тип может быть ограничен с использованием "табличного ограничения". При этом значения типа ограничиваются теми, которые представляют некоторое конкретное множество информационных объектов этого класса.

<a id="p100463"></a>C.3. Данная нотация специфицирует тип, который переносит поле &id (OBJECT IDENTIFIER) и значение поля &Type из любого экземпляра класса "DefinedObjectClass".
<a id="p100464"></a>*Примечание.* Обычно эта конструкция будет ограничиваться множеством объектов, которое будет (но не обязательно) пустым именем ссылки, как определено в ИСО/МЭК 8824-4, 8.3 - 8.11, с фактическим множеством объектов, определенным в другом месте.

<a id="p100465"></a>C.4. Все типы "экземпляр-из" имеют тег универсального класса 8.
<a id="p100466"></a>*Примечание.* Это тот же самый универсальный тег, что и для внешнего типа, и использование типа "экземпляр-из" может быть бит-совместимым с внешним типом, когда используются базовые правила кодирования АСН.1.

<a id="p100467"></a>C.5. Тип "экземпляр-из" имеет ассоциированный тип "последовательность", который используется для определения значений и подтипов типа "экземпляр-из".
<a id="p100468"></a>*Примечание.* Когда этот тип ограничивается нотацией ограничения ИСО/МЭК 8824-3, то также ограничивается ассоциированный тип "последовательность". Ограничения на ассоциированный тип "последовательность", получающиеся из ограничения на тип "экземпляр-из", определены в ИСО/МЭК 8824-3, приложение A.

<a id="p100469"></a>C.6. Принимается, что ассоциированный тип "последовательность" должен определяться в окружении, в котором установлено тегирование "EXPLICIT TAGS".
<a id="p100470"></a>C.7. Ассоциированный тип "последовательность" должен быть:
<a id="p100471"></a>    SEQUENCE
    {
        type-id   <DefinedObjectClass>.&id,
        value     [0] <DefinedObjectClass>.&Type
    }
<a id="p100472"></a>где "<DefinedObjectClass>" замещается конкретным классом "DefinedObjectClass", использованным в нотации "InstanceOfType".
<a id="p100473"></a>C.8. Нотацией значения "InstanceOfValue" для нотации "InstanceOfType" должна быть нотация значения для ассоциированного типа "последовательность".
<a id="p100474"></a>InstanceOfValue::= Value
<a id="p100475"></a>C.9. Пример
<a id="p100476"></a>На примере, данном в [A.4](#p100440), можно построить следующий пример.
<a id="p100477"></a>Тип
<a id="p100478"></a>**INSTANCE OF MHS-BODY-CLASS**
<a id="p100479"></a>имеет ассоциированный тип "последовательность"
<a id="p100480"></a>    SEQUENCE
    {
        type-id MHS-BODY-CLASS.&id,
        value   [0] MHS-BODY-CLASS.&Type
    }
<a id="p100481"></a>*Пример* применения табличного ограничения к этому типу приведен в ИСО/МЭК 8824-3, приложение A.





<a id="p100482"></a>Приложение D

<div align="right">

(справочное)

<a id="p100483"></a>**ПРИМЕРЫ**

</div>



### <a id="p100484"></a>D.1. Пример использования упрощенного класса OPERATION

<a id="p100485"></a>Применим следующее упрощенное определение классов информационных объектов OPERATION и ERROR:
<a id="p100486"></a>**OPERATION::= CLASS**
<a id="p100487"></a>{
<a id="p100488"></a>&ArgumentType OPTIONAL,
<a id="p100489"></a>&ResultType OPTIONAL,
<a id="p100490"></a>&Errors ERROR OPTIONAL,
<a id="p100491"></a>&Linked OPERATION OPTIONAL,
<a id="p100492"></a>&resultReturned BOOLEAN DEFAULT TRUE,
<a id="p100493"></a>&operationCode INTEGER UNIQUE
<a id="p100494"></a>}
<a id="p100495"></a>**WITH SYNTAX**
<a id="p100496"></a>{
<a id="p100497"></a>[ARGUMENT &ArgumentType]
<a id="p100498"></a>[RESULT &ResultType]
<a id="p100499"></a>[RETURN RESULT &resultReturned]
<a id="p100500"></a>[ERRORS &Errors]
<a id="p100501"></a>[LINKED &Linked]
<a id="p100502"></a>CODE &operationCode
<a id="p100503"></a>}
<a id="p100504"></a>**ERROR::= CLASS**
<a id="p100505"></a>{
<a id="p100506"></a>&ParameterType OPTIONAL
<a id="p100507"></a>&errorCode INTEGER UNIQUE
<a id="p100508"></a>}
<a id="p100509"></a>**WITH SYNTAX**
<a id="p100510"></a>}
<a id="p100511"></a>[PARAMETER &ParameterType]
<a id="p100512"></a>CODE &errorCode
<a id="p100513"></a>}
<a id="p100514"></a>Можно определить следующее множество объектов, которое содержит два объекта OPERATION:
<a id="p100515"></a>My-Operations OPERATION::= {operationA | operationB}
<a id="p100516"></a>operationA OPERATION::= {
<a id="p100517"></a>**ARGUMENT INTEGER**
<a id="p100518"></a>**ERRORS {{PARAMETER INTEGER CODE 1000} | {CODE 1001}}**
<a id="p100519"></a>**CODE 1**
<a id="p100520"></a>}
<a id="p100521"></a>operationB OPERATION::= {
<a id="p100522"></a>    ARGUMENT IA5String
**RESULT    BOOLEAN**
ERRORS    {{CODE 1002} | {PARAMETER IA5String CODE 1003}}
**CODE      2**
<a id="p100523"></a>}
<a id="p100524"></a>Извлечение множества объектов ERROR из приведенного выше множества объектов проводят следующим образом:
<a id="p100525"></a>My-OperationErrors ERROR::= {My-Operations.&Errors}
<a id="p100526"></a>Результирующее множество объектов есть:
<a id="p100527"></a>My-OperationErrors ERROR::= {
<a id="p100528"></a>        {PARAMETER INTEGER CODE 1000} |
        {CODE 1001} |
        {CODE 1002} |
        {PARAMETER IA5String CODE 1003}
<a id="p100529"></a>Извлечение множества кодов ошибок операций проводят следующим образом:
<a id="p100530"></a>My-OperationErrorCodes INTEGER::= {My-Operations.&Errors.&errorCode}
<a id="p100531"></a>Результирующее множество значений есть:
<a id="p100532"></a>My-OperationErrorCodes INTEGER::= {1000 | 1001 | 1002 | 1003}

### <a id="p100533"></a>D.2. Пример использования "ObjectClassFieldType"

<a id="p100534"></a>Продукция "ObjectClassFieldType" может использоваться в спецификации типов, например:
- <a id="p100535"></a>- Типы "ObjectClassFieldType" извлекаются из этого класса.
- <a id="p100536"></a>- Только первые пять полей могут быть использованы при извлечении.
<a id="p100537"></a>    EXAMPLE-CLASS ::= CLASS {
    &TypeField                                OPTIONAL,
    &fixedTypeValueField                      INTEGER OPTIONAL,
    &variableTypeValueField     &TypeField    OPTIONAL,
    &FixedTypeValueSetField           INTEGER OPTIONAL,
    &VariableTypeValueSetField  &TypeField    OPTIONAL,
    &objectField                SIMPLE-CLASS  OPTIONAL,
    &ObjectSetField             SIMPLE-CLASS  OPTIONAL
    }
    WITH SYNTAX {
    [TYPE-FIELD                      &TypeField]
    [FIXED-TYPE-VALUE-FIELD          &fixedTypeValueField]
    [FIXED-TYPE-VALUE-SET-FIELD      &variableTypeValueField]
    [FIXED-TYPE-VALUE-SET-FIELD      &FixedTypeValueSetField]
    [VARIABLE-TYPE-VALUE-SET-FIELD   &VariableTypeValueSetField]
    [OBJECT-FIELD                    &obiectField]
    [OBJECT-SET-FIELD                &ObiectSetField]
    }
    SIMPLE-CLASS ::= CLASS {
    &value INTEGER
    }
    WITH SYNTAX {
    &value
    }
- <a id="p100538"></a>- Этот тип содержит компоненты, которые специфицированы с
- <a id="p100539"></a>- использованием нотации "ObjectClassFieldType".
- <a id="p100540"></a>- В случае полей типа, полей значений и множеств значений
- <a id="p100541"></a>- переменного-типа результирующий тип компонента является
- <a id="p100542"></a>- открытым типом. В случае полей значения и множества значений
- <a id="p100543"></a>- фиксированного-типа результирующим типом компонента является INTEGER.
- <a id="p100544"></a>- Примечание:
- <a id="p100545"></a>- Ограничения опущены из всех последующих
- <a id="p100546"></a>- использований "ObjectClassFieldType"; обычно можно использовать
- <a id="p100547"></a>- ограничения при ссылке на "ObjectClassFieldType".

<a id="p100548"></a>    ExampleType ::= SEQUENCE {
    openTypeComponent1    EXAMPLE-CLASS.&TypeField,
    integerComponent1     EXAMPLE-CLASS.&fixedTypeValueField,
    openTypeComponent2    EXAMPLE-CLASS.&variableTypeValueField,
    integerComponent2     EXAMPLE-CLASS.&FixedTypeValueSetField,
    openTypeComponent3    EXAMPLE-CLASS.&VariableTypeValueSetField
    }
    exampleValue ExampleType ::= {
    openTypeComponent1    BOOLEAN: TRUE,
    integerComponent1     123,
    openTypeComponent2    IA5String: "abcdef",
    integerComponent2     456,
    openTypeComponent3    BIT STRING: '0101010101' B

### <a id="p100549"></a>D.3. Пример использования объектов и множества объектов

<a id="p100550"></a>Пример использования класса объектов, определенного в [D.2](#p100533):
<a id="p100551"></a>    objectA EXAMPLE-CLASS ::= {
    FIXED-TYPE-VALUE-FIELD             123
    FIXED-TYPE-VALUE-SET-FIELD         {1 | 2 | 3}
    OBJECT-FIELD                       {1}
    OBJECT-SET-FIELD                   {{2} | {3}}
    }
    objectB EXAMPLE-CLASS ::= {
    TYPE-FIELD                         IA5String
    FIXED-TYPE-VALUE-FIELD             456
    VARIABLE-TYPE-VALUE-FIELD          "abc"
    VARIABLE-TYPE-VALUE-SET-FIELD      {"d" | "e" | "f"}
    }
- <a id="p100552"></a>- Следующее множество объектов содержит два определяемых
- <a id="p100553"></a>- объекта и один встроенный.
<a id="p100554"></a>    ObjectSet EXAMPLE-CLASS ::= {
        objectA |
        objectB |
        {
        TYPE-FIELD                     INTEGER
        FIXED-TYPE-VALUE-FIELD         789
        VARIABLE-TYPE-VALUE-SET-FIELD  {4 | 5 | 6}
        }
    }
- <a id="p100555"></a>- Следующие определения извлекают информацию из объектов и
- <a id="p100556"></a>- множества объектов.
<a id="p100557"></a>integerValue INTEGER::= objectA.&fixedTypeValueField
<a id="p100558"></a>stringValue IA5String::= obiectB.&variableTypeValueField
<a id="p100559"></a>IntegerValueSetFromObjectA INTEGER::= {objectA.&FixedTypeValueSetField}
<a id="p100560"></a>StringValueSet IA5String::= {objectB.&VariableTypeValueSetField}
<a id="p100561"></a>StringType::= objectB.&TypeField
<a id="p100562"></a>objectFromObjectA SIMPLE-CLASS::= objectA.&objectField
<a id="p100563"></a>ObjectSetFromObjectA SIMPLE-CLASS::= {objectA.&ObjectSetField}
<a id="p100564"></a>SetOfValuesInObjectSet INTEGER::= {ObjectSet.&fixedTypeValueField}
<a id="p100565"></a>SetOfValueSetsInObjectSet INTEGER::= {ObjectSet.&FixedTypeValueSetField}
<a id="p100566"></a>SetOfObjectsInObjectSet SIMPLE-CLASS::= {ObjectSet.&objectField}
<a id="p100567"></a>SetOfObjectSetsInObjectSet SIMPLE-CLASS::= {ObjectSet&ObjectSetField}





<div align="right">

<a id="p100568"></a>Приложение E

</div>

(справочное)

<div align="center">

<a id="p100569"></a>**РУКОВОДСТВО**<br>
**ПО МОДЕЛИ АСН.1 РАСШИРЕНИЯ МНОЖЕСТВА ОБЪЕКТОВ**

</div>


<a id="p100570"></a>Спецификация АСН.1 может определять множества информационных объектов, и эти множества объектов с помощью маркера расширения могут быть помечены как расширяемые. Использование маркера расширения с множествами объектов отличается от использования с типами тем, что часто этот маркер указывает на требование к приложению динамически добавлять объекты в множество или удалять из него. Табличные ограничения и ограничения связи компонентов, которые при этом не удовлетворяются, сами по себе не рассматриваются как ошибки, если множество объектов является расширяемым. В таких случаях не является ошибкой, если значение указанного типа не найдено в множестве объектов, но если оно найдено, то должно удовлетворяться ограничение для ссылающегося типа.





<div align="right">

<a id="p100571"></a>Приложение F<br>
(справочное)

</div>


<div align="center">

<a id="p100572"></a>**СВОДКА НОТАЦИИ**

</div>


<a id="p100573"></a>Следующие элементы определены в [разделе 7](#p100095):
<a id="p100574"></a>objectclassreference
<a id="p100575"></a>objectreference
<a id="p100576"></a>objectsetreference
<a id="p100577"></a>typefieldreference
<a id="p100578"></a>valuefieldreference
<a id="p100579"></a>valuesetfieldreference
<a id="p100580"></a>objectsetfieldreference
<a id="p100581"></a>word
<a id="p100582"></a>**CLASS**
<a id="p100583"></a>**INSTANCE**
<a id="p100584"></a>**SYNTAX**
<a id="p100585"></a>**UNIQUE**
<a id="p100586"></a>Следующие элементы определены в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001) и используются в настоящем стандарте:
<a id="p100587"></a>empty
<a id="p100588"></a>modulereference
<a id="p100589"></a>"::="
<a id="p100590"></a>"{"
<a id="p100591"></a>"}"
<a id="p100592"></a>","
<a id="p100593"></a>"."
<a id="p100594"></a>"["
<a id="p100595"></a>"]"
<a id="p100596"></a>":"
<a id="p100597"></a>**DEFAULT**
<a id="p100598"></a>OF
<a id="p100599"></a>**OPTIONAL**
<a id="p100600"></a>**WITH**
<a id="p100601"></a>Следующие продукции определены в [ГОСТ Р ИСО/МЭК 8824-1](https://bukva.ai/docs/gost-r-isomek-8824-1-2001) и используются в настоящем стандарте:
<a id="p100602"></a>ElementSetSpec
<a id="p100603"></a>Type
<a id="p100604"></a>Value
<a id="p100605"></a>ValueSet
<a id="p100606"></a>Следующие продукции определены в ИСО/МЭК 8824-4 и используются в настоящем стандарте:
<a id="p100607"></a>ParameterizedObjectClass
<a id="p100608"></a>ParameterizedObjectSet
<a id="p100609"></a>ParameterizedObject
<a id="p100610"></a>Следующие продукции определены в настоящем стандарте:
<a id="p100611"></a>    DefinedObjectClass ::=
        ExternalObjectClassReference | objectclassreference |
        UsefulObjectClassReference
    ExternalObjectClassReference ::= modulereference "."
        objectclassreference
    UsefulObjectClassReference ::=
        TYPE-IDENTIFIER |
        ABSTRACT-SYNTAX
    ObjectClassAssignment ::= objectclassreference "::=" ObjectClass
    ObjectClass ::= DefinedObjectClass | ObjectClassDefn |
        ParameterizedObjectClass
    ObjectClassDefn ::= CLASS "{" FieldSpec "," + "}" WithSyntaxSpec?
    FieldSpec ::=
        TypeFieldSpec |
        FixedTypeValueFieldSpec |
        VariableTypeValueFieldSpec |
        FixedTypeValueSetFieldSpec |
        VariableTypeValueSetFieldSpec |
        ObjectFieldSpec |
        ObjectSetFieldSpec
    PrimitiveFieldName ::=
        typefieldreference |
        valuefieldreference |
        valuesetfieldreference |
        objectfieldreference |
        objectsetfieldreference
    FieldName ::= PrimitiveFieldName "." +
    TypeFieldSpec ::= typefieldreference TypeOptionalitySpec?
    TypeOptionalitySpec ::= OPTIONAL | DEFAULT Type
    FixedTypeValueFieldSpec ::= valuefieldreference UNIQUE?
ValueOptionalitySpec?
    ValueOptionalitySpec ::= OPTIONAL | DEFAULT Value
    VariableTypeValueFieldSpec ::= valuefieldreference
FieldNameValueOptionalitySpec?
    FixedTypeValueSetFieldSpec ::= valuesetfieldreference
TypeValueSetOptionalitySpec?
    ValueSetOptionalitySpec ::= OPTIONAL | DEFAULT ValueSet
    VariableTypeValueSetFieldSpec ::= valuesetfieldreference
FieldNameValueSetOptionalitySpec?
    ObjectFieldSpec ::= objectfieldreference
DefinedObjectClassObjectOptionalitySpec?
    ObjectOptionalitySpec ::= OPTIONAL | DEFAULT Object
    ObjectSetFieldSpec ::= objectsetfieldreference
DefinedObjectClassObjectSetOptionalitySpec?
    ObjectSetOptionalitySpec ::= OPTIONAL | DEFAULT ObjectSet
    WithSyntaxSpec ::= WITH SYNTAX SyntaxList
    SyntaxList ::= "{" TokenOrGroupSpec empty * "}"
    TokenOrGroupSpec ::= RequiredToken | OptionalGroup
    OptionalGroup ::= "[" TokenOrGroupSpec empty + "]"
    RequiredToken ::= Literal | PrimitiveFieldName
    Literal ::= word | ","
    DefinedObject ::= ExternalObjectReference | objectreference
    ExternalObjectReference ::= modulereference "." objectreference
    ObjectAssignment ::= objectreference DefinedObjectClass "::=" Object
    Object ::= DefinedObject | ObjectDefn | ObjectFromObject |
ParameterizedObject
    ObjectDefn ::= DefaultSyntax | DefinedSyntax
    DefaultSyntax ::= "{" FieldSetting "," * "}"
    FieldSetting ::= PrimitiveFieldName Setting
    DefinedSyntax ::= "{" DefinedSyntaxToken empty * "}"
    DefinedSyntaxToken ::= Literal | Setting
    Setting ::= Type | Value | ValueSet | Object | ObjectSet
    DefinedObjectSet ::= ExternalObjectSetReference | objectsetreference
    ExternalObjectSetReference ::= modulereference "." objectsetreference
    ObjectSetAssignment ::= objectsetreference DefinedObjectClass "::="
ObjectSet
    ObjectSet ::= "{" ObjectSetSpec "}"
    ObjectSetSpec ::=
        RootElementSetSpec |
        RootElementSetSpec "," "..." |
        "..." |
        "..." "," AdditionalElementSetSpec |
        RootElementSetSpec "," "..." "," AdditionalElementSetSpec
    ObjectSetElements ::=
        Object | DefinedObjectSet | ObjectSetFromObjects |
        ParameterizedObjectSet
    ObjectClassFieldType ::= DefinedObjectClass "." FieldName
    ObjectClassFieldValue ::= OpenTypeFieldVal | FixedTypeFieldVal
    OpenTypeFieldVal ::= Type ":" Value
    FixedTypeFieldVal ::= Value
    InformationFromObjects ::= ValueFromObject | ValueSetFromObjects |
TypeFromObject | ObjectFromObject |
        ObjectSetFromObjects
    ReferencedObjects ::=
        DefinedObject | ParameterizedObject |
        DefinedObjectSet | ParameterizedObjectSet
    ValueFromObject ::= ReferencedObjects "." FieldName
    ValueSetFromObjects ::= ReferencedObjects "." FieldName
    TypeFromObject ::= ReferencedObjects "." FieldName
    ObjectFromObject ::= ReferencedObjects "." FieldName
    ObjectSetFromObjects ::= ReferencedObjects "." FieldName
    InstanceOfType ::= INSTANCE OF DefinedObjectClass
    InstanceOfValue ::= Value



<a id="p100612"></a>

---
