1. Внешний тип (EXTERNAL) может быть определен с по­мощью нотации АСН.1 следующим образом:

EXTERNAL : : = [UNIVERSAL 8] IMPLICIT SEQUENCE {direct-reference OBJECT IDENTIFIER OPTIONAL, indirect-reference INTEGER OPTIONAL, data-value-descriptor ObjectDescriptor OPTIONAL, encoding CHOICE

{single-ASNI-type [0] ANY,

octet-aligned [1] IMPLICIT OCTET STRING, arbitrary [2] IMPLICIT BIT STRING}}

  1. Когда для данного значения внешнего типа («EXTER­NAL») не используется диалог по установлению правил кодиро­вания на уровне представления, а используется предварительная договоренность относительно синтаксиса передачи, то в значении должен присутствовать идентификатор объекта для прямой ссыл­ки («direct-reference OBJECT IDENTIFIER»). В этом случае идентификация множества значений осуществляется посредством идентификатора объекта (являющегося прямой ссылкой на абст­рактный синтаксис) и подставляемого в поле «идентификатора объекта для прямой ссылки» («direct reference OBJECT IDENTI­FIER»). В этом случае правила кодирования также определяются с использованием осуществленной ранее регистрации абстрактно­го синтаксиса и целочисленная косвенная ссылка (indirect-refe­rence INTEGER») не используется.

  2. Когда используется диалог по установлению правил коди­рования на уровне представления для данного значения внешне­го типа («EXTERNAL»), то должна быть задана «целочисленная косвенная ссылка» («indirect-reference INTEGER»). В этом случае идентификатором множества значений данных является целое число, являющееся ссылкой на конкретное использование абстракт- його синтаксиса. Это число называется идентификатором контекс­та представления и подставляется в поле «целочисленная косвен­ная ссылка» (indirect-reference INTEGER»). Если диалог по уста­новлению правил кодирования на уровне представления завер­шен, то идентификатор контекста представления также идентифи­цирует правила кодирования (синтаксис передачи), применяемые к данному значению данных, при этом «идентификатор объекта для прямой ссылки» («direct reference OBJECT IDENTIFIER») не задается. Если диалог по установлению правил кодирования на уровне представления не завершен, то значение идентификато­ра объекта также необходимо для идентификации используемых в данный момент правил кодирования (синтаксиса передачи). При использовании диалога по установлению правил кодирования допустимость (или необходимость) элемента «идентификатор объекта для прямой ссылки» («direct reference OBJECT IDENTI­FIER») должна быть указана в комментарии, описывающем ис­пользование обозначения «EXTERNAL»), если же соответствую­щее указание отсутствует, то этот идентификатор не должен ис­пользоваться.

Примечания:

  1. Следствием из пп. 32.5 и 32.6 является требование обязательного присут­ствия по крайней мере одного из вариантов «прямая ссылка» или «косвенная ссылка».

  2. Если диалог по установлению параметров на уровне представления ис­пользуется, но не завершен, то используются обе ссылки.

  1. Если рассматриваемое значение данных является значе­нием какого-либо одного типа данных, определенного с помощью АСН.1, и если правила кодирования для этого значения данных те же, что и для всего внешнего типа («EXTERNAL»), то в кон­кретной реализации на стороне отправителя может быть исполь­зован любой из вариантов элемента «кодовое представление» («encoding»):

single-ASNl-type octet-aligned arbitrary

  1. Если кодовое представление данных, использующее пра­вила кодирования, установленные в результате предварительной договоренности или в результате диалога по установлению пара­метров, имеет целое число октетов, то в конкретной реализации на стороне отправителя может быть использован любой из сле­дующих вариантов элемента «кодовое представление» («enco­ding») :

octet-aligned arbitrary

Примечание. Если значение данных является последовательностью зна­чений, относящихся к различным типам АСИ. I, и правила кодирования пред­писывают простую постановку друг за другом строк октетов, полученных при­менением базовых правил кодирования к каждому нз значений разных типов, то такое значение относится К категории, описываемой в данном пункте, а не к категории, описанной в п. 32.7.

  1. Если кодовое представление значения данных, исполь­зующее правила кодирования, установленные в резулыате пред­варительной договоренности или в результате диалога по уста­новлению параметров, содержит не целое число актетов, то дол­жен использоваться следующий вариант элемента «кодовое пред­ставление («encoding»):

arbitrary

  1. Если для элемента «кодовое представление» («enco­ding») выбран вариант «единственный тип АСН.1» («single-ASNI- type»), то вместо «ANY» должен быть подставлен тип значения, подлежащего кодированию.

Примечание. Множество значений, которые могут встретиться в этом случае определяются осуществленной ранее регистрацией значения вида «иден­тификатор объекта», задаваемого «прямой ссылкой» («direct reference»), и/или целочисленного значения, задаваемого «косвенной ссылкой» («indirect reference»),

    1. Если для элемента «кодовое представление» («enco­ding») выбран вариант «октетио-выравненное» («octet-aligned»), то значение данных должно быть закодировано в соответствии с синтаксисом передачи, установленным в результате предваритель­ной договоренности или в результате диалога по установлению параметров, и полученные в результате октеты должны составлять значение — строку актетов.

    2. Если для элемента «кодовое представление» («enco­ding») был выбран вариант «произвольное» («arbitrary»), то зна­чение данных должно быть закодировано в соответствии с син­таксисом передачи, установленным в результате предварительной договоренности или в результате диалога по установлению правил кодирования, а результат должен быть значением — строкой би­тов. ' ’ .

    3. Тег этого типа должен соответствовать определению типа в п. 32.4.

    4. Обозначения для записи значения должны быть обозна­чениями для записи значения типа, определенного в п. 32.4.

  1. ТИП «ОПИСАТЕЛЬ ОБЪЕКТА»

    1. Ссылка на этот тип осуществляется с помощью имени ObjectDeScriptor.

    2. Этот тип составляют тексты, ориентированные на восприя­тие человеком и предназначенные для описания информационных объектов. Текст, являющийся значением данного типа, необяза­тельно должен идентифицировать информационный объект, но предполагается, что использование одного и того же текста для описания разных информационных объектов маловероятно.

Примечание. Желательно, чтобы значения типа «описатель объекта» («ObjectPescriptor») присваивались информационным объектам теми же служ­бами, которые присваивает информационным объектам значення типа «иденти­фикатор объекта» («OBJECT tOENTlFIER»).

  1. Этот тин может быть определен с помощью нотации АСИ.і следующим образом:

ObjectDescriptor : : =»

[UNIVERSAL?] IMPLICIT

Graphicstring

«Графическая строка* («Graphicstring») содержит текст, опи­сывающий информационный объект.

  1. Тег этого типа должен соответствовать определению типа в п. 33.3. '

Обозначения для записи значения должны быть обозна­чениям»‘Для записи значения типа, определенного в п. 33.3

,ПРИЛОЖЕНИЕ 1

Обязательное

МАКРОНОТАЦИЯ

  1. Введение

В АСН.1 предусмотрен способ, с помощью которого пользователь АСН.І может определить новую систему обозначений, с помощью которой он может строить те же типы данных, что и в АСН.1, и ссылаться на них, а также зада­вать значения этих типов. Эта новая система обозначений определяется с по­мощью обозначения нотации АСН.1 «Макроопределение». «Макроопределение» одновременно определяет как обозначения для построения типов и осуществле­ния ссылок на них, так и обозначения для записи значений (п. 6.3, содержащий пример использования макронотации).

С помощью «Макроопределения» пользователь АСН.1 определяет новые обозначения с помощью некоторого множества продукций аналогично тому, как это делается в настоящем стандарте. Составитель макроопределения дол­жен:

  1. полностью определить синтаксис, который предполагается использовать для определения всех типов, обеспечиваемых данным макроопределением (это описание синтаксиса вызывается для синтаксического анализа каждый раз при появлении в обозначении типа АСН.1 имени макроопределения);

  2. полностью определить синтаксис, который предполагается использовать для определения значений этих типов (это описание синтаксиса вызывается для синтаксического анализа каждый раз, когда ожидается значение типа, опи­санного с помощью макроопределения);

  3. определить в виде значений стандартных типов АСН.1 (произвольного уровня сложности) получающиеся в результате типы и значения для всех слу­чаев использования макрообозначений для записи значений.

Конкретное использование синтаксиса, определенного с помощью макро­определения, может содержать обозначения типов и значений , заданных в обычной нотации АСН.1. Эти типы или значения (присутствующие в конкрет­ном использовании макрообозначений) могут быть присвоены на время выпол­нения синтаксического анализа локальным ссылкам на тип или локальным ссылкам на значение с помощью соответствующих конструкций в макроопре­делении. Возможно также включение в макроопределение присвоение ссылкам обычных определений типов АСН.1. Описанные выше присвоения активизиру­ются, когда соответствующая синтаксическая категория макроопределения со­поставляется с элементом (или элементами), входящими в использование новой нотации. Время их действия ограничено временем выполнения синтаксического анализа.

При синтаксическом анализе значения, заданного с помощью макронотации, присвоения, выполненные при синтаксическом анализе типа, продолжают быть доступными. Синтаксический анализ обозначения типа считается логически пред­шествующим анализу соответствующих значений.

Каждое «Макроопределение» определяет систему обозначений (синтаксис) для определения типа и систему обозначений (синтаксис) для определения зна­чений. Тип данных АСН.1, определенный с помощью макрообозначения типа, может зависеть (но необязательно зависит) от макрообозначения конкретного значения, к которому относится макрообозначение типа. В этом отношении использование макронотации типа сходно с использованием выборочного типа («CHOICE») — тег типа в данном случае не определен. Поэтому в случаях вависимости типа от значения макронотация не может быть использована там, где требуется наличие известного тега; в этих случаях не может также при­меняться неявное задание тега.

Тип и значение, полученные в результате использования макронотации, определяются тем, какое значение (и каков его тип) присваивается (в резуль­тате последовательной обработки макроопределения типа, а затем макроопре­деления значения) локальной ссылке на значение, отмеченное в макроопределе­нии ключевым словом VALUE.

  1. Д о п о л н е н и е к набору знаков и множеству эле­ментов АСН.1

В макронотации используются знаки « : » и «>».

Также используются элементы, описанные в последующих пунктах.

  1. Макроссылка

Имя элемента ■— макроссылка.

«Макроссылка» должна состоять из последовательности знаков, удовлетво­ряющей требованиям, установленным для «Ссылки — НаТип» в п. 8.2, с тем отличием, что все буквы должны быть прописными. Внутри одного модуля одна и та же последовательность знаков не должна использоваться одновре­менно, как ссылка на тип и как макроссылка.

  1. Ссылка на продукцию

Имя элемента — СсылкаНаПродукцию

«СсылкаНаПродукцию» должна состоять из последовательности знаков, удовлетворяющих требованиям, установленным для «СсылкиНаТип» в п. 8.2.

  1. Локальная ссылка на тип

Имя элемента — ЛокальнаяСсылкаНаТип

«ЛокальнаяСсылкаНаТип» должна представлять собой последовательность знаков вида «СсылкаНаТип», определенного в п. 8.2. «ЛокальнаяСсылкаНаТип» используется в качестве идентификатора для типов, распознаваемых во время синтаксического анализа макрообозначения типа или значения.

  1. Локальная ссылка на значение

Имя элемента — ЛокальнаяСсылкаНаЗначение

«ЛокальнаяСсылкаНаЗначение» должна представлять собой последователь­ность знаков вида «СсылкаНаТип», определенного в п. 8.2. «ЛокальнаяСсылка НаТип» используется в качестве идентификатора для значений, распознаваемых во время синтаксического анализа макрообозначения типа или значения.

Примечание. «ЛокальнаяСсылкаНаТип» должна начинаться с пропис­ной буквы.

  1. Элемент разграничения вариантов

Имя элемента — I.

Этот элемент состоит из единственного знака «I».

  1. Элемент, обозначающий конец определения

Имя элемента — >

Этот элемент состоит из единственного знака «>».

Примечание. Элемент «<», обозначающий начало определений, при­веден в п. 8.13.

  1. Синтаксический терминальный элемент

Имя элемента ■— а-строка

Элемент «а-строка» («строка в кавычках») должен состоять из произволь­ного (возможно, равного нулю) количества знаков из знакового набора АСН.1 (см. разд. 7), выделенных кавычками (»). Знак (») представляется в «строке в кавычках» в виде пары знаков (»).

  1. Примечание. Использование «строки в кавычках» («a-строки») в мак­рообозначении задает появление в соответствующем месте анализируемого син­таксиса знаков, заключенных между кавычками (»).Элементы — ключевые слова синтаксических категорий Имена элементов — «string»

«identifier»

«number»

«empty»

Элементы с приведенными выше именами должны состоять (в макроопре­делении) из последовательностей знаков, совпадающих с их именами, исключая кавычки (»). Эти элементы исгіользуюТся в макроопределении для задания вхождения в использовании новой нотации последовательностей знаков опре­деленного вида. Вид последовательностей знаков, соответствующих каждому из элементов, определяется в табл. 8 посредством ссылки на раздел настоящего стандарта.