allgosts.ru35.100 Взаимосвязь открытых систем35 ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

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

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

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

ГОСТ P ИСО/МЭК 8824-1-2001

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

Информационная технология

АБСТРАКТНАЯ СИНТАКСИЧЕСКАЯ НОТАЦИЯ ВЕРСИИ ОДИН (АСН.1)

Часть 1

Спецификация основной нотации

Издание официальное

til 5-2001/106

ГОССТАНДАРТ РОССИИ

Москва

ГОСТ Р ИСО/МЭК 8824-1-2001

Предисловие

1 РАЗРАБОТАН Государственным научно-исследовательским и коиструкторско-технологическим институтом -ТЕСТ» Министерства Российской Федерации по связи и информатизации

ВНЕСЕН Министерством Российской Федерации посвяти и информатизации

2 ПРИНЯТ И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Госстандарта России от 6 сентября 2001 г. № 375-ст

3 Настоящий стандарт содержит полный аутентичный текст международного стандарта ИСО/МЭК 8824-1:1998 «Информационная технология. Абстрактная синтаксическая нотация версии один (ЛСН.1). Часть I. Спецификация основной нотации» с Изменением № I (1999 г.) и Дополнением № 2 (2000 г.)

4 ВВЕДЕН ВПЕРВЫЕ

© И ПК Издательство стандартов. 2001

Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Госстандарта России

II

ГОСТ Р ИСО/МЭК 8824-1-2001

Содержание 1 Область применения........................................ 1

2 Нормативные ссылки ....................................... 1

3 Определения............................................. 2

3.1 Спецификация информационного объекта.......................... 2

32 Спецификация ограничения.................................. 2

3.3 Спецификация параметризации АСН.1............................ 2

3.4 Определение услуг уровня представления........................... 2

3.5 Спецификация протокола уровня представления....................... 3

3.6 Структура для иденгификании организаций......................... 3

3.7 Универсальный многооктетный кодовый набор символов (UCS)............. 3

3.8 Дополнительные определения................................. 3

4 Сокращения............................................. 7

5 Обозначения, используемые в настоящем стандарте....................... 8

5.1 Продукции............................................ 8

5.2 Альтернативные совокупности................................. 8

5.3 Пример продукции....................................... 9

5.4 Размещение текста........................................ 9

5.5 Рекурсия............................................. 9

5.6 Ссылки на совокупность последовательностей........................ 9

5.7 Ссылки на элемент....................................... 9

5.8 Краткие формы нотации.................................... 9

5.9 Ссылки на значения и типизация значений.......................... 10

6 Модель АСН. 1 расширения типа.................................. 10

7 Требования расширяемости для правил кодирования...................... II

8 Теги.................................................. II

9 Использование нотации АСН.1................................... 12

10 Набор символов АСН. 1....................................... 12

II Элементы АСН.1........................................... 13

11.1 Общие правила......................................... 13

11.2 Ссылки на тип......................................... 14

11.3 Идентификаторы........................................ 14

11.4 Ссылки на значение...................................... 14

11.5 Ссылка на модуль........................................ 14

11.6 Комментарий.......................................... 14

II.7 Пустой элемент......................................... 15

11.8 Элемент- «число»........................................ 15

11.9 Элемент «двоичная строка».................................. 15

11.10 Элемент «шестнадцатеричная строка»........................... 15

11.11 Элемент «символьная строка»................................ 15

11.12 Элемент «присвоение».................................... 16

11.13 Разделитель диапазона.................................... 16

II. 14.Многоточие.......................................... 16

11.15 Левые скобки версии..................................... 16

11.1611равые скобки версии.................................... 16

11.17 Элементы, состоящие из одного символа.......................... 16

11.183арезервированныеслова................................... 17

12 Определение модуля......................................... 17

13 Ссылки на определения типов и значений............................ 21

14 Нотация для обеспечения ссылок на компоненты АСН.1.................... 22

15 Присвоениетипов и значений................................... 23

16 Определение типов и значений................................... 24

17 Нолация для булевского типа.................................... 26

18 Нотация для целочисленного типа................................. 26

III

ГОСТ Г ИСО/МЭК 8824-1-2001

19 Нотация для перечислимого типа.................................. 27

20 Нотация дм действительного тапа.................................28

21 Нотация для тапа «битовая строка-................................ 29

22 Нотация для тапа -строка октетов»................................. 30

23 Нотация для вырожденного тапа.................................. 31

24 Нотация для типов «последовательность».............................31

25 Нотация для тапов «последователыюсгь-из»........................... 34

26 Нотация для типов «множество».................................. 34

27 Нотация для тапов «множество-из»................................ 35

28 Нотация для выборочных типов................................... 36

29 Нотация для селективных типов..................................37

30 Нотация для тегированных типов.................................. 37

31 Нотация для титта «идентификатор объекта»............................38

32 Нотация для типа «встроенное-таи»................................ 40

33 Нотация для внешнего тапа..................................... 41

34 Типы символьных строк....................................... 43

35 Нотация для типов символьных строк............................... 44

36 Определение ограниченных типов символьных строк.......................44

3 7 Наименование символов и совокупностей, определенных в ИСО/МЭК 10646-1....... 48

38 Канонический порядок символов.................................. 51

39 Определение неограниченных типов символьных строк..................... 52

40 Нотация для типов, определенных в разделах 41—43.......................53

41 Обобщенное время.......................................... 53

42 Всемирное время........................................... 54

43 Тип «описатель объекта»....................................... 55

44 Ограниченные типы......................................... 55

45 Идентификатор исключения.................................... 56

46 Спецификация множества элементов................................57

47 Маркер расширения......................................... 58

48 Элементы подтипа.......................................... 60

48.1 Общие положения........................................ 60

48.2 Единственное значение.....................................62

48.3 Содержащийся подтип..................................... 62

48.4 Диапазон значений.......................................62

48.5 Ограничение размера......................................62

48.6 Ограничение типа........................................ 63

48.7 Допустимый алфавит...................................... 63

48.8 Внутренние подтипы......................................63

11риложение А Использование нотации АСН.1—90......................... 65

А. 1 Сроки действия......................................... 65

А2 Смешанное использование АСН.1 —90 и текущей нотации АСН.1............. 65

АЗ Переход к текущей нотации АСН.1.............................. 65

11риложение В Присвоение значений идентификаторов объектов..................67

Приложение С Примеры и указания................................. 68

С. 1 Пример персональной записи................................. 68

С.2 Руководство по использованию нотации........................... 69

С.3 Идентификация абстрактных синтаксисов...........................78

С.4 Полтины............................................. 79

Приложение D Руководство по использованию символьных строк АСН.1.............82

D.1 Поддержка символьных строк в АСН.1............................ 82

D.2 Типы UniversalString. UTF8String и BMPString........................82

D.3 О требованиях соответствия ИСО/МЭК 10646-1....................... 83

0.4 Рекомендации пользователям АСН. I по соответствию ИСО/МЭК 10646-1........ 83

D.5 Принимаемые поднаборы как параметры абстрактного ситгтаксиса............ 84

0.6Тип CHARACTER STRING................................. 84

IV

ГОСТ Р ИСО/МЭК 8824-1-2001

Приложение Е Замененные характеристики............................. 86

Е. I Использование идентификаторов является обязательным..................86

Е.2 Выборочное значение...................................... 86

Е.З Произвольный тип........................................ 86

Е.4 Макровозможности....................................... 87

11риложение F Правила совместимости типов и значений..................... 88

F.1 Необходимость понятия «отображение значений» (введение)................88

F.2 Отображения значений..................................... 90

F3 Определения идентичных типов................................ 90

F.4 Спецификация отображения значении............................. 92

F.5 Дополнительные отображения значений, определенные для типов символьных строк . . 93

F.6 Специфичные для типов и значений требования совместимости..............93

F.7 Примеры............................................. 94

Приложение G Руководство по модели расширения типа АСН. I................. 95

11 риложеиие Н Сводка нотации АСН. 1................................ 98

V

ГОСТ Р ИСО/МЭК 8824-1-2001

ГОСУДАРСТВЕННЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

И иформационная технология АБСТРАКТНАЯ СИНТАКСИЧЕСКАЯ НОТАЦИЯ ВЕРСИИ ОДИН (ACH.I) Часть!

Спецификация основной нотации

Information technology. Abstract Sy ntax Notation One (ASN. I). Specification of basic notation

Дата введения 2002—01—01

1 Область применения

Настоящий стандарт устанавливает нотацию, называемую абстрактной синтаксической нотацией версии один (ACH.I), которая используется для определения типов данных, значений и ограничений типов данных.

Стандарт определяет:

- ряд простых типов вместе с присвоенными им тегами и обозначения для ссылок на эти типы и задания их значений;

- методы построения новых типов из нескольких базовых и обозначения для определения этих типов, присвоения им тегов и задания их значений:

- наборы символов (через указания других стандартов) для использования в ACH.I:

- ряд полезных типов (используя ACH.I), на которые могут ссылаться пользователи ACH.I.

Нотация ЛСН.1 может применяться во всех случаях, когда требуется определять абстрактный синтаксис информации. Она, в частности (но не единственно), применяется для протоколов прикладного уровня. Ссылки на нотацию АСН.1 содержатся в других стандартах, определяющих правила кодирования для типов ACH.I.

2 Нормативные ссылки

В настоящем стандарте использованы ссылки на следующие стандарты:

ГОСТ 34.971—91 (ИСО 8822—88) Системы обработки информации. Взаимосвязь открытых систем. Спецификация услуг уровня представления для режима с установлением соединения (см. также Рекомендацию МСЭ-Т Х.216)

ГОСТ 34.972-91 (ИСО 8823—88) Системы обработки информации. Взаимосвязь открытых систем. Спецификация протокола уровня представления для режима с установлением соединения (см. также Рекомендацию МСЭ-Т Х.226)

ГОСТ Р ИСО/МЭК 7498-1—99 Информационная технология. Взаимосвязь открытых систем. Базовая эталонная модель. Часть 1. Базовая модель (см. также Рекомендацию МСЭ-Т Х.200)

ГОСТ Р ИСО/МЭК 8824—93 Информационная технология. Взаимосвязь открытых систем. Абстрактно-синтаксическая нотация версии 1 (ACH.I)

ГОСТ Р ИСО/МЭК 8824-2—2001. Информационная технология. Абстрактная синтаксическая нотация версии I (ЛСН.1). Часть 2. Спецификация информационного объекта (см. также Рекомендацию МСЭ-Т Х.681)

Издание официальное

I-2-2II2 I

ГОСТ Р ИСО/М ЭК 8824-1-2001

ИСО/МЭК 646—9Г Информационная технология. 7-битный кодовый набор символов ИСО для информационного обмена

ИСО/МЭК 2022—94* Информационная технология. Структура кода символов и методы расширения

ИСО/МЭК 8824-3—98* Информационная технология. Абстрактная синтаксическая нотация версии 1 (ACH.I). Часть 3. Спецификация ограничения (см. также Рекомендацию МСЭ-Т Х.682)

ИСО/МЭК 8824-4—98* Информационная технология. Абстрактная синтаксическая нотация версии 1 (ACH.I). Часть4. Параметризация спецификаций АСН. 1 (см. также Рекомендацию МСЭ-Т Х.683)

ИСО/МЭК 8825-1—98* Информационная технология. Правила кодирования ACH.I. Спецификация базовых (BER), канонических (CER) и отличительных (DER) правил кодирования (см. также Рекомендацию МСЭ-Т Х.690)

ИСО/МЭК 8825-2—98* Информационная технология. Правила кодирования ACH.I. Спецификация упаковывающих правил кодирования (PER) (см. также Рекомендацию МСЭ-Т Х.691)

ИСО/МЭК 9834-1—93* Информационная технология. Взаимосвязь открытых систем. Процедуры работы полномочных органов регистрации ВОС. Часть I. Общие процедуры (см. также Рекомендацию МСЭ-Т Х.660)

ИСО 6523—84* Обмен данными. Структура идентификаторов организаций

ИСО 8601—88* Элементы данных и форматы обмена. Информационный обмен. Представление лат и времени

ИСО/МЭК 10646-1-93* Информационная технология. Универсальный, многооктетный кодовый набор символов (UCS). Часть I. Архитектура и основная многоязычная плоскость

Рекомендация МСЭ-Т Т. 61 (1988) Репертуар символов и кодовые наборы символов для международных услуг телетекса

Рекомендация МСЭ-Т Т. 100 (1988) Международный информационный обмен для интерактивного видеотекса

Рекомендация МСЭ-Т Т. 101 (1994) Международное межсетевое взаимодействие и .тля услуг видеотекса

3 Определения

3.1 Спецификация информационного объекта

В настоящем стандарте используют следующие термины, определенные в ГОСТ Р ИСО/МЭК 8824-2:

а) информационный объект;

б) класс информационных объектов;

в) набор информационных объектов;

г) экземпляр типа;

д) тин поля класса объектов.

3.2 Спецификация ограничения

В настоящем стандарте используют следующие термины, определенные в ИСО/МЭК 8824-3: а) ограничение связи компонентов;

б) табличное ограничение.

3.3. Спецификация параметризации ЛСН.1

В настоящем стандарте используют следующие термины, определенные в ИСО/МЭК 8824-4: а) параметризованный тип;

б) параметризованное значение.

3.4 Определение услуг у ровня представления

В настоящем стандарте используют следующие термины, определенные в ГОСТ 34.971:

а) абстрактный синтаксис;

б) имя абстрактного синтаксиса;

в) множество определенных контекстов;

г) значение данных уровня представления;

* Оригиналы и проекты международных стандартов — во ВНИИКИ Госстандарта России.

2

ГОСТ Р ИСО/МЭК 8824-1-2001

д) синтаксис передачи;

е) имя синтаксиса передачи.

3.5 Спецификация протокола уровня представления

В настоящем стандарте используют следующий термин, определенный в ГОСТ 34.972:

- идентификатор контекста представления.

3.6 Структура для идентификации организаций

В настоящем стандарте используют следующие термины, определенные в ИСО 6523:

а) выпускающая организация;

б) код организации;

в) Международный кодовый определитель (International Code Designator ICD).

3.7 Универсальный многоок гегныи кодовый набор символов (DCS)

В настоящем стандарте используют следующие термины, определенные в ИСО/МЭК 10646-1:

а) основная многоязычная плоскость (Basic Multilingual Plane — BMP);

б) ячейка;

в) комбинированный символ;

г) графический символ;

д) группа;

е) ограниченное подмножество;

ж) плоскость;

и) строка:

к) выбранное подмножество.

3.8 Дополнительные определения

3.8.1 абстрактный символ: Множество информации, связанное с ячейкой в таблице, определяющей репертуар символов.

П р и м с ч а и и с — Информация обычно включает в себя:

а) графический символ.

б) имя символа или

в) определение функций, связанных с символом при использовании в конкретном окружении.

3.8.2 абстрактное значение: Значение, определение которого основывается только на типе, независимо от его представления в любых правилах кодирования.

Примечание — Термин «абстрактное значение» часто используется в утверждениях, которые, вероятно, могут изменяться для различных используемых правил кодирования.

3.8.3 набор символов ЛСН.1: Набор символов, определенный в разделе К), который используется в нотации ЛСН.1.

3.8.4 спецификация ACH.I: Совокупность одного или нескольких модулей ЛСН.1.

3.8.5 ассоциированный тип: Тип. который используется только для определения значения и нотации подтипа для типа.

Примечание — Ассоциированные типы определены в настоящем стандарте, когда необходимо сделать очевидным, что может быть существенное различие между тем. как тип определен в ACH.I и как он кодируется. Ассоциированные типы нс появляются в спецификациях пользователей.

3.8.6 тип «битовая строка»: Простой тип. различными значениями которого являются упорядоченные последовательности из нуля, одного или нескольких бит.

Примечание— Когда необходимо передать встроенное кодирование абстрактного значения, использование типа «встроеннос-дди* в общем случае предоставляет более гибкий метод для объявления или согласования характера кодирования, чем битовая строка.

3.8.7 булевский тип: Простой тип с двумя различными значениями.

3.8.8 символ: Член набора элементов, используемых для организации, управления или представления данных.

П р и м е ч а н и с — Например, это подразумевает, что знак ударения и строчная 'с' — два разных символа во французской версии ИСО 646. а нс единственный символ с.

3.8.9 символьный абстрактный синтаксис: Любой абстрактный синтаксис, значения которого специфицированы как набор символьных строк из нуля, одного или нескольких символов из некоторой заданной совокупности символов.

1-Г

3

ГОСТ Р ИСО/М ЭК 8824-1-2001

3.8.10 репертуар символов: Символы и наборе символов без какой-либо связи с их кодированием.

3.8.11 типы символьных строк: Простые типы, значениями которых являются строки символов из некоторого определенного набора символов.

3.8.12 символьный синтаксис передачи: Любой синтаксис передачи для символьного абстрактного синтаксиса.

П р и м с ч а н и с — АСН.1 нс поддерживает символьные синтаксисы передачи, которые нс кодируют вес символьные строки как кратные 8 бит.

3.8.13 выборочные типы: Типы, определяемые указанием списка различных типов; каждое значение выборочного типа происходит из значения одного из типов-компонентов.

3.8.14 тип компонента: Один из типов, указанных при определении CHOICE. SET. SEQUENCE. SET OF или SEQUENCE OF.

3.8.15 ограничение: Нотация, которая может быть использована вместе с типом для определения подтипа этого типа.

3.8.16 управляющие символы: Символы, появляющиеся в некоторых репертуарах символов, которым должно быть дано имя (и, возможно, определена функция относительно определенных окружений), но которым не присвоен графический символ и которые не являются символом пробела.

Примечание— NEWLINE к ТАВ являются примерами управляющих символов, которым назначены функции форматирования в среде печати. DLE является примером управляющего символа, которому назначена функция в окружении коммуникации.

3.8.17 Всемирное согласованное время (UTC): Шкала времени, поддерживаемая Международным бюро времени и служащая основой для согласованного распространения стандартных частот и сигналов времени.

П р и м с ч а н и я

I Источником этого определения является Рекомендация 460—2 Международной консультативной комиссии по радио (CC1R). Акроним UTC для всемирного согласованного времени также был введен CC1R.

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

3.8.18 элемент: Член класса элементов, отличный от всех других элементов этого класса.

3.8.19 класс элементов: Гип (элементами которого являются его значения) или информационный объект (элементами которого являются все возможные объекты этого класса).

3.8.20 набор элементов: Один или несколько элементов одного и того же класса элементов.

3.8.21 тип «встроенное-здл»: Тип. множество значений которого является объединением множеств значений во всех возможных абстрактных синтаксисах. Этот тип является частью спецификации АСН.1 и представляет значение, тип которого может быть определен внешне для данной спецификации АСН.1. Он также представляет идентификацию типа передаваемого значения и идентификацию правил кодирования, использованных для кодирования значения.

3.8.22 закодированный: Битовый результат применения правил кодирования к значению данного абстрактного синтаксиса.

3.8.23 правила кодирования (АСН.1): Правила, определяющие представление при передаче значений типов АСН. 1. Правила кодирования позволяют получателю возможность распознать переданную информацию, предоставляя знания о типе.

П р и м е ч а н и с — Для целей спецификации правил кодирования нотации различных указываемых типов (и значений), которые могут предусматривать альтернативные нотации для встроенных типов (и значений). не существенны.

3.8.24 перечислимые типы: Простые типы, значения которых задаются различными идентификаторами как часть нотации типа.

3.8.25 расширяющее дополнение: Одна из дополнительных нотаций в серии расширений. Для типов “множество", "последовательность" и для выборочного типа каждое расширяющее дополнение является добавлением либо одной расширяющей дополнительной группы, либо одного типа компонента. Для перечислимых типов оно является добавлением одного перечисления. Для ограничения оно является добавлением подтипа элемента.

4

ГОСТ Р ИСО/МЭК 8824-1-2001

И р н м с ч а н и с — Расширяющие дополнения упорядочены как текстуально (следом на маркером расширения), так и логически (имеют возрастающие перечислимые значения и. в случае альтернатив CHOICE, возрастающие теги).

3.8.26 расширяющая дополнительная группа: Один или несколько компонентов типов "множество", "последовательность" или выборочного типа, объединенные скобками версии. Расширяющая дополнительная группа используется для ясной идентификации компонентов множества, последовательности или выбора, которые были добавлены в конкретной версии модуля АСН.1.

3.8.27 расширяющий дополнительный тип: Тип. содержащийся в расширяющей дополнительной группе, или единственный тип компонента, который сам является расширяющим дополнением (в этом случае он не содержится в расширяющей дополнительной группе).

3.8.28 расширяемое ограничение: Ограничение подтипа с маркером расширения.

3.8.29 точка вставки расширения: .Место в определении типа, куда вставляются расширяющие дополнения. Это место является конном нотации типа, непосредственно предшествующего типу в серии расширений, если в определении типа имеется единственное многоточие, или находится непосредственно перед вторым многоточием, если в определении типа имеется пара маркеров расширения.

3.8.30 маркер расширения: Синтаксический признак (многоточие), включаемый во все типы, образующие серию расширений.

3.8.31 пара маркеров расширения: Два маркера расширения, между которыми вставлены расширяющие дополнения.

3.8.32 связанные расширением: Два типа, имеющие один и тот же корень расширения, один из которых создан путем добавления к другому нуля или нескольких расширяющих дополнений.

3.8.33 корень расширения: Расширяемый тип. который является первым типом в серии расширений. Он имеет либо маркер расширения без дополнительной нотации, отличной от комментариев и пропусков между маркером расширения и завершающей скобкой ”)” или ")", либо пару маркеров расширения без дополнительной нотации, отличной от запятой, комментариев и пропусков между ними.

П р и м е ч а н и с — Только корень расширения может быть первым типом в серии расширений.

3.8.34 серия расширений: Последовательность типов ACH.I. которые могут быть упорядочены таким образом, что каждый последующий тип образован добавлением текста в точке вставки расширения.

II р и м с ч а н и е — Могут быть расширены как вложенные, гак и невложенные типы.

3.8.35 расширяемый тип: Тип с маркером расширения.

3.8.36 внешняя ссылка: Ссылка на тип, значение, информационный объект и пр., определенные в некотором другом модуле, имя которого указывается в виде префикса к указываемому элементу.

Пример— Module Name. TypeReference

3.8.37 внешний тип: Тип. который является частью спецификации ACH.I. представляющий значение, тип которого может быть определен внешне для данной спецификации АСН.1. Он также предоставляет идентификацию типа, значение которого представляется.

3.8.38 ложно: Одно из двух различающихся значений булевского типа (см. "истинно").

3.8.39 управляющий (тип): Определение типа или ссылка на тип. который влияет на интерпретацию части синтаксиса АСН.1. устанавливая, что часть синтаксиса АСН.1 относится к значениям в управляющем типе.

3.8.39 bis определения идентичных типов: Два экземпляра продукции АСН.1 "Туре" (см. раздел 16). являющиеся определениями идентичных типов, если, после осуществления преобразовании, указанных в приложении F, они являются идентично упорядоченными списками элементов АСН.1 (см. раздел 11).

3.8.40 целочисленный тип: Простой тип. различные значения которого являются всеми положительными и отрицательными целыми числами, включая нуль (как одно значение).

Примечание — Конкретные правила кодирования ограничивают диапазон целых чисел, но эти ограничения выбраны так, чтобы нс сказываться на пользователях АСН.1.

3.8.41 элементы: Поименованные последовательности символов из набора АСН.1. определенного в разделе 9. которые используются для образования нотации АСН.1.

5

ГОСТ Р ИСО/М ЭК 8824-1-2001

3.8.42 модуль: Олин или несколько экземпляров использования нотации ЛСН.1 для типа, значения и т. п.. объединенных с использованием нотации модуля ЛСН.1 (см. раздел 12).

3.8.43 вырожденный тип: Простой тип, состоящий из единственного значения, также называемого null.

3.8.44 объект: Строго определенная порция информации, определения или спецификации, которой требуется имя для идентификации ее использования в конкретном соединении.

3.8.45 тип "описатель объекта": Тип. различными значениями которого является человекочитаемый текст, предоставляющий краткое описание объекта.

П р и м с ч а нис — Значение описателя объекта обычно связано с единственным объектом. Недвусмысленно идентифицирует объект только значение идентификатора объекта.

3.8.46 идентификатор объекта: Значение (отличное от всех других таких значений), которое связано с объектом.

3.8.47 тип "идентификатор объекта": Простой тип, различные значения которого образуют множество всех идентификаторов объектов, выделенных в соответствии с правилами настоящего стандарта.

Примечание — Правилами ГОСТ Р ИСО/МЭК 9834-1 допускается широкий диапазон уполномоченных для независимого связывания идентификаторов объектов с объектами.

3.8.48 тип "строка октетов": Простой тип. различные значения которого являются упорядоченными последовательностями из нуля, одного или нескольких октетов, каждый из которых, в свою очередь, является упорядоченной последовательностью из восьми бит.

3.8.49 нотация открытого типа: Нотация ЛСН.1. используемая для обозначения множества значений из более чем одного типа ЛСН.1.

П р и м с ч а н и я

I В настоящем стандарте термин «открытый тип» используется как синоним термина «нотация открытого типа».

2 Все правила кодирования ACH.I обеспечивают недвусмысленное кодирование значений одного типа ACH.I. Они нс обязательно обеспечивают недвусмысленное кодирование “нотации открытого типа*, представляющей значения из типов АСН.1. которые обычно нс являются определенными на момент спецификации. До того, как абстрактное значение для этого поля может быть недвусмысленно определено, необходимо знание типа кодируемого значения.

3 Единственной нотацией открытого типа в настоящем стандарте является ’ObjeclClassFkldTypc". определенная в ГОСТ Р ИСО/МЭК 8824-2. где ’FicldNamc" обозначает либо поле типа, либо поле значения переменной-типа. Нотация ’ANY", которая определена в ГОСТ Р ИСО/МЭК 8824. была нотацией открытого типа.

3.8.50 порождающий тип (подтипа): Тип, который был ограничен при определении подтипа и который управляет нотацией подтипа.

П р и м е ч а и и е — Порождающий тип сам может быть подтипом другого типа.

3.8.51 продукция: Часть формальной нотации, используемая для спецификации ACH.I.

3.8.52 действительный тип: Простой тип. различные значения которого (заданные в разделе 20) являются членами множества действительных чисел.

3.8.53 рекурсивное определение (типа): Множество определений ЛСН.1, которое не может быть упорядочено таким образом, чтобы все типы, используемые в конструкции, были определены до определения самой конструкции.

П р и м счанис— В АСН.1 допускаются рекурсивные определения: пользователь нотации должен гарантировать, чтобы используемые значения (получающихся типов) имели конечные представления.

3.8.54 ограниченный тип символьных строк: Тил строки символов, которые берутся из фиксированного репертуара символов, идентифицированного в спецификации типа.

3.8.55 селективные типы: Типы, определенные указанием типа компонента выборочного типа, значениями которых являются именно значения этого типа компонента.

3.8.56 типы "последовательность": Типы, определенные указанием упорядоченного списка типов (некоторые из них могут быть объявлены как факультативные); каждое значение типа <после-довательность> является упорядоченным списком значений, по одному из каждого типа компонентов.

П р и м с ч а н и с — Когда тип компонента объявлен факультативным, значение типа «последовательность» нс обязательно содержит значение этого типа компонента.

6

ГОСТ Р ИСО/МЭК 8824-1-2001

3.8.57 типы "послсдоваюльпость-из": Типы, определенные указанием единственного типа компонента; каждое значение типа “последовательность-из" является упорядоченным списком нуля, одного или нескольких значений этого типа компонента.

3.8.58 типы «множество»: Типы, определенные указанием фиксированного, неупорядоченного списка различных типов (некоторые из них могут быть объявлены как факультативные); каждое значение типа "множество" является неупорядоченным списком значений, по одному из каждого типа компонентов.

Примечание — Когда тин компонента объявлен факультативным, значение типа "множество" не обязательно содержит значение этого типа компонента.

3.8.59 типы "множество-из": Типы, определенные указанием единственного типа компонента; каждое значение типа «множество-из» является неупорядоченным списком нуля, одного или нескольких значений этого типа компонента.

3.8.60 простые типы: Тины, определенные непосредственно спецификацией множеств их значений.

3.8.61 символ интервала: Символ в репертуаре символов, который предназначен для включения вместе с графическими символами в печатное представление строки символов, но который в физическом исполнении представляется в виде пустого места; обычно он не рассматривается как управляющий символ (см. 3.8.16).

Примечание — В репертуаре символов может быть единственный символ интервала, а может быть и несколько разной ширины.

3.8.62 подтип (порождающего типа): Тип. значения которого являются подмножеством (или полным подмножеством) значений некоторого другого (порождающего) типа.

3.8.63 тег: Обозначение типа, которое связывается с каждым типом АСН.1.

3.8.64 тегированные типы: Типы, определенные указанием одного существующего типа и тега; новый тип изоморфен существующему типу, но отличается от него.

3.8.65 тегирование: Замена существующего (возможно, по умолчанию) тега типа заданным тегом.

3.8.66 истинно: Одно из двух различающихся значений булевского типа (см. "ложно").

3.8.67 тип: Поименованное множество значений.

3.8.68 ссылочное имя типа: Имя. однозначно связанное с типом в некотором контексте.

Примечание — Ссылочные имена присвоены тинам, определенным в настоящем стандарте; они всеобще доступны в пределах АСН.1. Другие ссылочные имена определяются в других стандартах; они доступны только в контекстах этих стандартов.

3.8.69 неограниченный тип символьных строк: Тип. значениями которого являются значения из символьного абстрактного синтаксиса, идентифицируемого отдельно для каждого случая использования этого типа.

3.8.70 пользователь (АСН.1): Лицо или организация, которое определяет абстрактный синтаксис конкретного вида информации, используя АСН.1.

3.8.71 значение: Отдельный член множества значений.

3.8.71 bis отображение значения: Взаимоотношение 1 — 1 между двумя типами, которое позволяет ссылку на значения одного из них использовать как ссылку на значения другого. Это может быть использовано, например, при спецификации подтипов и значений по умолчанию (см. приложение F).

3.8.72 ссылочное имя значения: Имя, однозначно связанное со значением в некотором контексте.

3.8.73 множество значений: Совокупность значений типа. Семантически эквивалентно подтипу.

3.8.74 скобки версии: Две пары смежных левых и правых квадратных скобок (|| и ||), используемые в начале и конце расширяющей дополнительной группы.

3.8.75 пропуск: Любое действие форматирования, оставляющее пустое место на печатной странице. как символы SPACE или ТАВ, или несколько подряд таких символов.

4 Сокращения

АСН.1 — абстрактно-синтаксическая нотация версии I ЗДП — значение данных представления

7

ГОСТ Р ИСО/МЭК 8824-1-2001

BMP — основная многоязычная плоскость (Basic Multilingual Plane)

BER — базовые правила кодирования (Basic Encoding Rules)

CER — канонические правила кодирования (Canonical Encoding Rules)

DER — отличительные правила кодирования (Distinguished Encoding Rules)

PER — упаковывающие правила кодирования (Packed Encoding Rules)

DCS — универсальный, многооктетный кодовый набор символов (Universal Multi pie-Octet Coded Character Set)

UTC — всемирное согласованное время (Coordinated Universal Time)

1CD — Международный кодовый определитель (International Code Designator)

DCC — цифровой код страны (Data Country Code)

DNIC — идентификационный код сети передачи данных (Data Network Identification Code)

5 Обозначения, используемые в настоящем стандарте

Нотация АСН.1 состоит из последовательностей символов набора АСН.1. определенного в разделе 10.

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

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

Для того чтобы специфицировать эту совокупность, в настоящем стандарте используют фор-мальную нотацию, определяемую в последующих подразделениях.

5.1 Продукции

Новая (более сложная) совокупность последовательностей определяется с помощью продукции. Она использует имена совокупностей последовательностей продукций, определенных в настоящем стандарте, и строит новую совокупность последовательностей продукций, специфицируя либо: а) что новая совокупность из последовательностей продукций должна состоять из любой последовательности. содержащейся в любой из исходных совокупностей, либо

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

Каждая продукция состоит из следующих частей, в одну или несколько строк, в следующем порядке:

I) имя новой совокупности последовательностей продукций:

2) символ : : =

3) одна или несколько альтернативных совокупностей последовательностей продукций, определенных в 5.2 и разделенных знаком |

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

П р и м с ч а н л с — Если одна и та же последовательность продукций появляется более чем в одной альтернативе, то любая появляющаяся семантическая двусмысленность снимается другими частями полной последовательности продукций АСН.1.

5.2 Альтернативные совокупности

Каждая альтернативная совокупность последовательностей продукций в одной или нескольких альтернативных совокупностях (см. 5.1 в) задается списком имен. Каждое имя является либо именем элемента, либо именем совокупности последовательностей продукций, определенной с помощью продукции в настоящем стандарте.

Совокупность последовательностей продукций, определяемая альтернативой, состоит из всех последовательностей продукций, которые получаются, если взять любую из последовательностей продукций (или элемент), связанных с первым именем, за ней — любую из последовательностей продукций (или элемент), связанных со вторым именем, за ней - любую из последовательностей

8

ГОСТ Р ИСО/МЭК 8824-1-2001

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

5.3 Пример продукции

BitStringValue : : = tatring |

hiring | Т IdentifierList "}"

Эта запись является продукцией, которая связывает с именем <BitStringValue> следующие последовательности продукций:

а) любая "talcing" (элемент), или

б) любая "listring" (элемент), или

в) любая последовательность продукций, связанная с "IdentifierList", перед которой стоит знак {. а за которой — знак }.

Примечание — "Г и *}" являются именами элементов, состоящими из одного знака, соответственно (и) (см. 11.17).

В данном примере "IdentifierList" должно быть определено другой продукцией, либо до. либо после продукции "BitStringValue".

5.4 Размещение текста

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

5.5 Рекурсия

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

Примечание — Во многих случаях такое повторение приводит к неограниченной совокупности допустимых последовательностей, некоторые или все из которых сами могут быть неограниченными. Это не является ошибкой.

5.6 Ссылки на совокупность последовательностей

В настоящем стандарте ссылка на совокупность последовательностей (часть нотации АСН.1) осуществляются указанием первого имени в продукции (перед : : =); имя окружается двойными кавычками ("), чтобы отличать от текста на русском языке; в продукции такое выделение не делается.

5.7 Ссылки на элемент

В настоящем стандарте ссылки на элемент осуществляются указанием имени элемента; для того чтобы отличать имя от текста на естественном языке, оно заключается в двойные кавычки О, если только оно не является частью продукции и не является односимвольным элементом.": : = ", ".. ’ или “...".

5.8 Краткие формы нотации

Для того чтобы сделать продукции более сжатыми и более удобочитаемыми, следующие краткие формы нотации используются в определении совокупностей последовательностей продукций АСН.1 в ГОСТ Р ИСО/МЭК 8824-2. ИСО/МЭК 8824-3 и ИСО/МЭК 8824-4 (в настоящем стандарте они не используются):

а) звездочка (♦) следом за двумя именами ("А" и "В") обозначает либо пустой элемент (см. 11.7). либо последовательность продукций, ассоциированную с "А", либо альтернативные серии последовательностей продукций, связанных с "А" и “В", начинающиеся и заканчивающиеся последовательностями. ассоциированными с "А". Так,

С:: = АВ-

эквивалентно

С :: = D | empty

D :: = А | А В D

"D" является вспомогательных» именем, нигде в продукциях не появляющимся.

П р и м е р — "С:: = АВ •" является краткой формой нотации для следующих альтернатив С: empty

А

АВА

А ВЛ В А

Л ВЛ В Л В Л

9

ГОСТ Р ИСО/М ЭК 8824-1-2001

б) знак плюс (+) аналогичен звездочке из перечисления а), за исключением того, что пустой элемент не допускается. Так,

Е:: = АВ +

эквивалентно

Е :: = Л | Л В Е

П р и м е р — "Е :: = Л В +" является краткой формой нотации для следующих альтернатив Е: Л ЛВЛ

Л ВЛ В Л

Л ВА В Л В Л

в) знак вопроса (?) следом за именем обозначает либо пустой элемент (см. 11.7). либо последовательность продукций, ассоциированных с "Л". Так.

F :: = А ?

эквивалентно

F :: = empty | Л

5.9 Ссылки на значения и тиниазация значений

5.9.1 АСН.1 определяет нотацию присваивания значений, которая позволяет дать имя значению специфицированного типа. Это имя может использоваться всякий раз. когда нужна ссылка на значение. В приложении F описан и установлен метод отображения значений, который позволяет ссылочному имени значения одного типа идентифицировать значение другого типа. Таким образом, ссылка на первое значение может использоваться тогда, когда требуется ссылка на значение второго типа.

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

6 Модель АСН.1 расширения типа

При декодировании расширяемого типа декодер может выявить:

а) отсутствие ожидаемых расширяющих дополнений в типе "последовательность" или "множество", или

б) присутствие либо произвольных неожидаемых расширяющих дополнений, кроме тех, которые определены (если были определены) в типе “последовательность" или "множество", либо неизвестной альтернативы в выборочном тиле, либо неизвестного перечисления в перечислимом типе, либо неожиданной длины или значения типа, ограничение которого расширяется.

Формально говоря, абстрактный синтаксис, определяемый расширяемым типом "X". содержит не только значения типа "X", но и значения всех типов, связанных расширением с "X". Таким образом, процесс декодирования никогда не сигнализирует об ошибке при выявлении любой из перечисленных ситуаций а) и б). Действия, которые должны быть предприняты в такой ситуации, должны быть специфицированы проектировщиком прикладного уровня.

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

Неожидаемые расширяющие дополнения, выявленные декодером в расширяемом типе, могут быть позже включены в последующие кодирования этого типа (для передачи обратно отправителю или какой-либо третьей стороне), при условии, что для последующей передачи используется тот же самый синтаксис передачи.

10

ГОСТ Р ИСО/МЭК 8824-1-2001

7 Требования расширяемости для правил кодирования

7.1 Все правила кодирования ЛСН.1 должны допускать кодирование значения расширяемого типа "X" таким образом, что оно может быть декодировано с использованием расширяемого типа "Y", который связан расширением с "X ". Более того, правила кодирования должны допускать, чтобы значения, декодированные с использованием "Y". были повторно закодированы (используя "Y") и декодированы с использованием третьего расширяемого типа "Z". который связан расширением с "Y" (и. следовательно, с "X").

Примечание — Тины "X". *Y* и *Z" могут появляться в последовательности расширения в любом порядке.

Если значение расширяемого типа "X" закодировано и передано (непосредственно или через ретранслирующее приложение, использующее связанный расширением тип "Z") другому приложению. которое декодирует значение, используя расширяемый тип "Y". связанный расширением с “X ", то декодер, использующий тип ’Y”, получит абстрактное значение, составленное из:

а) абстрактного значения типа кормя расширения;

б) абстрактного значения каждого расширяющего дополнения, которое присутствует как в "X", так и в ’Y";

в) выделенного кодирования для каждого расширяющего дополнения, которое есть в "X". но отсутствует в "Y" (если такие имеются).

Кодирование в случае в) должно быть пригодно для включения в последующее кодирование значения "Y", если это требуется приложением. Это кодирование должно быть допустимым кодированием значения "X".

Пример — Если система А использует тип расширяемого корня (тип "X"), являющийся типом ’’последовательность’’ или "множество" с расширяющим дополнением факультативного целого типа, а система В использует связанный расширением тип (тип "Y"), имеющий два расширяющих дополнения, каждое из которых — факультативный целый тип. то при передаче от В значения "Y" с опущенным целым значением первого расширяющего дополнения и включенным вторым, оно не должно быть перепутано системой А с наличием первого (единственного) расширяющего дополнения "X", о котором ей известно. Более того, Л должна быть в состоянии повторно закодировать значение "X" со значением, предоставленным для первого целого типа, с последующим вторым целым значением, полуденным от В. если это требуется прикладным протоколом.

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

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

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

Примечание — Все варианты базовых и упаковывающих правил кодирования АСН.1 удовлетворяют всем этим требованиям.

8 Теги

8.1 Тег задается указанием его класса и номера в классе. Определены следующие классы тегов: - универсальный (universal);

- прикладной (application);

- пользовательский (private);

- контекстно зависимый (context — specific).

II

ГОСТ Р ИСО/М ЭК 8824-1-2001

8.2 Номер является неотрицательным целым числом, заданным в десятичной нотации.

Ограничения на теги, присваиваемые пользователем ЛСН.1, определены в разделе 32.

В таблице 1 приведена сводка тегов универсального класса, присвоенных в настоящем стандарте.

8.3 Некоторые правила кодирования требуют канонического порядка тегов. Для обеспечения единообразия канонический порядок тегов определен в 8.4.

8.4 Канонический порядок тегов определяется следующим образом:

а) первыми должны появляться элементы или альтернативы с тегами универсального класса, далее — прикладного, затем — контекстно зависимого и последними — с тегами пользовательского класса;

б) в пределах каждого класса элементы или альтернативы должны появляться в порядке возрастания номеров их тегов.

Т а б л и u а 1 — Присвоенные теги универсального класса

UNIVERSAL 0 UNIVERSAL 1 UNIVERSAL 2 UNIVERSAL!

UNIVERSAL 4 UNIVERSALS UNIVERSAL 6 UNIVERSAL? UNIVERSALS UNIVERSAL 9 UNIVERSAL 10 UNIVERSAL II UNIVERSAL 12 UNIVERSAL 13-15 UNIVERSAL 16 UNIVERSAL 17

UNIVERSAL 18-22, 25-30 UNIVERSAL 23-24 UNIVERSAL 31—...

Зарезервировано для использования правилами кодирования

Булевский тип

Целочисленный тип

Тип "битовая строка"

Тип "строка октетов'

Вырожденный тип

Тип 'идентификатор объекта"

Тип "описатель объекта”

Внешний тип и пш "экземиляр-из'

Вещественный тип

Перечислимый тип

Тип 'встроснное-здп"

Тип UTFSSlnng

Зарезервировано для последующих редакций стандарта

Типы "последовательность" и 'последовательность-из"

Типы "множество" и "множсство-из"

Типы символьных строк

Типы времени

Зарезервировано для дополнений к стандарту

9 Использование нотации АСН.1

9.1 Нотацией ЛСН.1 для определения типа должна быть Гуре" (см. 16.1).

9.2 Нотацией ЛСН.1 для определения значения должна быть "Value" (см. 16.7).

П р и м е ч а н и е — В общем случае невозможно интерпретировать нотацию значения без знания тина.

9.3 Нотацией ЛСН.1 для присвоения типа ссылочному имени типа должна быть либо "TypeAssignment" (см. 15.1), либо "ValueSetTypeAssignment" (см. 15.4), либо Tarameteri-zedType.Assignment" (см. ИСО/МЭК 8824-4. 8.2), либо TarameterizedValueSetTypeAssignment" (см. ИСО/МЭК 8824-4. 8.2).

9.4 Нотацией ЛСН.1 для присвоения значения ссылочному имени значения должна быть либо “ValueAssignment" (см. 15.2). либо "ParameterizedValueAssignment" (см. ИСО/МЭК 8824-4.8.2).

9.5 Альтернативы продукции нотации «Assignment» должны использоваться только в нотации "ModuleDefinition" (за исключением, указанным в примечании 2 к 12.1).

10 Набор символов АСН.1

10.1 Каждый элемент ЛСН.1 состоит из последовательности символов, приведенных в таблице 2, за исключением случаев, указанных в 10.2 и 10.3. В таблице 2 символы идентифицируются именами, данными в ИСО/МЭК 10646-1.

12

Т а б л и u а 2 — Символы АСН.1

ГОСТ Р ИСО/МЭК 8824-1-2001

Or А до Z (or LATIN CAPITAL LETTER А до LATIN CAPITAL LETTER Z — прописные латинские буквы

от А д о Z)

От а до z (от LATIN SMALL LETTER А до LATIN SMALL LETTER Z -до z)

Or 0 до 9 (or DIGIT ZERO до DIGIT 9 — цифры от нуля до 9)

: (COLON — двоеточие)

(EQUALS SIGN — знак "равно")

, (СОММА — занятая)

| (LEFT CURLY BRACKET — левая фигурная скобка)

J (RIGHT CURLY BRACKET — правая фигурная скобка)

(LESS-THAN SIGN — знак "меньше, чем")

(FULL STOP - точка)

Ф (COMMERCIAL АТ — коммерческое "эт")

( (LEFT PARENTHESIS - левая скобка)

) (RIGHT PARENTHESIS — правая скобка)

(LEFT SQUARE BRACKET — левая квадратная скобка) (RIGHT SQUARE BRACKET — правая квадратная скобка)

- (HYPHEN-MINUS - дефис)

(APOSTROPHE — апостроф)

" (QUOTATION MARK - кавычка)

| (VERTICAL LINE — вертикальная черта)

& (AMPERSAND — амперсанд)

(CIRCUMFLEX ACCENT — знак ударения) (ASTERISK — звездочка)

; (SEMICOLON — точка с запятой)

(EXCLAMATION MARK — восклицательный знак)

строчные латинские буквы от а

II р и м е ч а н и е — В стандартах, производных от данного стандарта, которые разрабатываются национальными организациями по стандартизации, дополнительные символы могут присутствовать в следую

щих элементах: type reference identifier value reference modulcrcfcrcncc

(см. 11.2);

(см. 11.3);

(см. 11.4);

(см. 11.5).

Когда дополнительные знаки вводятся для соответствия алфавитам, в которых различие между строчными и прописными буквами не имеет значения, синтаксическое различие, достигаемое за счет предписания регистра первого символа некоторых из приведенных выше элементов АСН.1, должно обеспечиваться каким-то другим способом. Тем самым допускается написание допустимых спецификаций АСН.1 на разных языках.

10.2 При использовании нотации для спецификации значения типа символьная строка в нотации АСН.1 могут появляться все графические символы для определенного набора символов, взятые в двойные кавычки (") (см. 11.11).

10.3 Дополнительные (произвольные) графические символы могут появляться в элементе "комментарии" (см. 11.6).

10.4 Не следует придавать какого-либо значения типографскому стилю, размеру, цвету, яркости и другим характеристикам отображения.

10.5 Строчные и прописные буквы следует рассматривать как различные знаки.

11 Элементы АСН.1

11.1 Общие правила

11.1.1 В последующих подразделах определяются символы в элементах АСН.1. В каждом случае даются имя элемента и определение символьных последовательностей, которые образуют элемент.

11.1.2 Каждый элемент, определяемый в последующих подразделах (за исключением "bstring". "haring" и "caring"), должен располагаться в пределах одной строки и (за исключением элементов "comment", "baring", "haring" и "caring") не должен содержать пробелов (см. 11.9—11.11).

3-1-2112

13

ГОСТ Р ИСО/М ЭК 8824-1-2001

11.1.3 Длина строки не ограничивается.

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

11.1.5 Каждый элемент должен быть отделен от следующего за ним элемента пробелом, новой строкой или комментарием, если начальный символ (или символы) следующего элемента являются допустимыми для включения в коней последовательности символов предыдущего элемента.

11.1.6 В настоящем стандарте использованы термины “новая строка", "конец строки", "пропуск". При представлении пропуска и новой строки (конца строки) в машиночитаемых спецификациях могут использоваться любые из следующих символов в любой комбинации (символы названы и идентифицированы десятичными значениями, которые являются значениями кодов символов по ИСО/МЭК 646):

- для пропуска

HORIZONTAL TABULATION (9) — горизонтальная табуляция.

SPACE (32) - пробел.

LINE FEED (10) — пропуск строки.

VERTICAL ТАВ (11) — вертикальная табуляция.

FORM FEED (12) — пропуск страницы.

CARRIAGE RETURN (13) - возврат каретки;

- для новой строки:

LINE FEED (10) — пропуск строки,

VERTICAL TAB (II) — вертикальная табуляция.

FORM FEED (12) — пропуск страницы,

CARRIAGE RETURN (13) — возврат каретки.

11.2 Ссылки на тип

Имя элемента — type reference.

11.2.1 Элемент "typereference* должен состоять из произвольного количества (большего или равного единице) букв, цифр и дефисов. Начальный символ должен быть прописной буквой. Последний символ не должен быть дефисом. Два дефиса не должны следовать друг за другом.

Примечание — Правила использования дефиса должны исключать двусмысленность с (возможным последующим) комментарием.

11.2.2 Элемент "typereference" не должен совпадать с одной из зарезервированных символьных последовательностей, приведенных в 11.18.

11.3 Идентификаторы

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

Элемент "identifier должен состоять из произвольного количества (большего или равного единице) букв, цифр и дефисов. Начальный символ должен быть строчной буквой. Последний символ не должен быть дефисом. Два дефиса не должны следовать друг за другом.

П р и м с ч а и и е — Правила, относящиеся к использованию дефиса, направлены на то. чтобы избежать двусмысленности с (возможным последующим) комментарием.

11.4 Ссылки на значение

Имя элемента - valuereference.

Элемент "valuereference" должен состоять из последовательности символов, заданных для "identifier" в 11.3. При анализе конкретного использования данной нотации элемент "valuereference" отличается от элемента "identifier" контекстами, в которых они появляются.

11.5 Ссылка на модуль

Имя элемента - modulereference.

Элемент "modulereference" должен состоять из последовательности символов, заданной для элемента "typereference" в 11.2. При анализе конкретного использования данной нотации элемент "modulereference" отличается от элемента "typereference" контекстами, в которых они появляются.

11.6 Комментарий

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

11.6.1 Комментарий не указывается в определении нотации АСН.1. Однако он может появляться в любом месте между другими элементами нотации АСН.1. но не имеет синтаксического значения.

14

ГОСТ Р ИСО/МЭК 8824-1-2001

11.6.2 Элемент "comment" должен начинаться с пары следующих друг та другом дефисов и заканчиваться следующей парой таких же дефисов или текущей строкой, в зависимости от того, что встретиться раньше. Комментарий не должен содержать пар следующих друг за другом дефисов, кроме начальных и завершающих (в случае наличия). Комментарии может содержать графические символы, не входящие в символьный набор, определенный в 10.1 (см. 10.3).

11.7 Пустой элемент

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

Элемент "empty" не содержит никаких символов. Он используется в нотации раздела 5, когда заданы альтернативные множества последовательностей продукций для указания на возможное от-сутствие всех альтернатив.

11.8 Элемент "число"

Имя элемента - number.

Элемент "number" состоит из одной или нескольких цифр. Первая цифра не может быть нулем, за исключением случая, когда "number" состоит из одной цифры.

П р и м с ч а н и с — Элемент "number* всегда отображается в целочисленное значение путем интерпретации его как десятичною обозначения.

11.9 Элемент "двоичная строка"

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

Элемент "bstring" состоит из произвольного количества (возможно — нулевого) нулей, единиц, пропусков или новых строк, перед которыми стоит одиночная кавычка (’) и за которыми следует пара символов

В

Пропуски и новые строки, которые появляются в двоичной строке, значения не имеют.

11 ример- ’ОПОШЮ’В

11.10 Элемент "шестнадцатеричная строка"

Имя элемента - bstring.

11.10.1 Элемент "hstring" состоит из произвольного количества (возможно — нулевого) символов

Л В С D Е Е 0 I 2 3 4 5 6 7 8 9

или пропусков и новых строк, перед которыми стоит одиночная кавычка (') и за которыми следует пара символов

Н

Пропуски и новые строки, которые появляются в шестнадцатеричной строке, значения не имеют.

Пример- 'АВ0196Н

11.10.2 Каждый символ используется для обозначения значения полуоктета в шестнадцатеричном представлении.

11.11 Элемент «символьная строка»

Имя элемента - cstring.

11.11.1 Элемент "cstring" состоит из произвольного количества (возможно - нулевого) графических символов и интервалов из набора символов, определяемого типом рассматриваемой строки, перед которыми и после них следуют двойные кавычки ("). Если набор символов содержит двойные кавычки, то этот символ (если он присутствует в символьной строке, представляемой "cstring") должен быть представлен в "cstring" парой двойных кавычек в одной и той же строке, без интервала между ними, "cstring" может занимать несколько строк текста; в этом случае представляемая символьная строка не должна содержать символов интервала в позиции до или после конца строки в "cstring". Пропуски, которые появляются непосредственно до или после копна строки в "cstring". значения не имеют.

При м с ч а н и я

I Элемент "cstring” может использоваться только для представления символьных строк, всем представляемым символам которых либо был присвоен графический знак, либо они являются символом интервала. Когда требуется обозначить символьную строку, содержащую управляющие символы, имеется альтернативный синтаксис АСН.1 (см. раздел 34).

2 Символьная строка, представленная "cstring", состоит из символов, связанных с печатными графическими символами и символами интервала. Символы интервала, непосредственно предшествующие концу строки в "cstring" или следующие непосредственно за ним. не являются частью представляемой символьной строки

15

ГОСТ Р ИСО/М ЭК 8824-1-2001

(они игнорируются). Когда символы интервала входят в "cstring* или графические символы в символьном репертуаре являются двусмысленными, символьная строка, обозначаемая "cstring'. может быть двусмысленной.

ПримерЗ — Элемент "cstring"

"АВС DE FGH

IJK""XYZ"

может быть использован для представления значения символьной строки типа IA5String. Представленное значение состоит из символов

ABCDE FGHUK'XYZ

где точное число пробелов между Е и F может быть неоднозначным, если в спецификации используется пропорциональный шрифт.

11.11.2 Когда символ является комбинированным, он должен быть обозначен в "cstring" как один символ. Он не должен являться наложением символов, из которых скомбинирован. (Тем самым подразумевается, что порядок комбинирования символов в значении строки определен однозначно).

Пример— Комбинация ударения и строчного ’е' является двумя символами во французской версии ИСО 646 и. таким образом, в соответствующей "cstring" записывается как два символа ’е’, а не один.

11.11.3 Элемент "cstring" не должен использоваться для представления значений символьных строк, содержащих управляющие символы. В нем допустимы только графические символы и знаки интервала.

11.12 Элемент «присвоение*

Имя элемента — ":: ="

Этот элемент состоит из последовательности символов

Примечание — Эта последовательность нс содержит пробелов (см. 11.1.2).

11.13 Разделитель диапазона

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

Этот элемент состоит из последовательности символов

П римечание — Эта последовательность нс содержит пробелов (см. 11.1.2).

11.14 Многоточие

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

Этот элемент состоит из последовательности символов

Примечание— Эта последовательность нс содержит пробелов (см. 11.1.2).

11.15 Левые скобки версии

Имя элемента - "Ц"

Этот элемент должен состоять из последовательности символов

II

Примечание— Эта последовательность нс содержит символов пропуска (см. 11.1.2).

11.16 Правые скобки версии

Имя элемента - "Ц"

Этот элемент должен состоять из последовательности символов

II

П римечание— Эта последовательность нс содержит символов пропуска (см. 11.1.2).

11.17 Элементы, состоящие из одного символа

Имена элементов —

т

т

16

ГОСТ Р ИСО/МЭК 8824-1-2001

т

(дефис)

т и

Элемент с любым из перечисленных выше имен состоит из единственного символа без кавы

чек.

11.18 Зарезервированные слова

Имена зарезервированных слов следующие:

ABSENT

END

INTEGER

SEQUENCE

ABSTRACT-SYNTAX

ENUMERATED

INTERSECTION

SEI

ALL

EXCEPT

ISO646String

SIZE

APPLICATION

EXPLICIT

MAX

STRING

AUTOMATIC-

EXPORTS

MIN

SYNTAX

BEGIN

EXTENSIBILITY

MINUS-INFINITY

T6I String

BIT

EXTERNAL

NULL

TAGS

BMPString

FALSE

NumericString

TeletexString

BOOLEAN

FROM

OBJECT

TRUE

BY

GeneralizedTime

Object Descri ptor

TYPE - IDENTIFIER

CHARACTER

GeneralString

OCTET

UNION

CHOICE

Graphicstring

OF

UNIQUE

CLASS

lASString

OPTIONAL

UNIVERSAL

COMPONENT

IDENTIFIER

PDV

UniversaiString

COMPONENTS

IMPLICIT

PLUS-INFINITY

UTCTitne

CONSTRAINED

IMPLIED

PRESENT

UTF8String

DEFAULT

IMPORTS

PrintableString

Videotexstring

DEFINITIONS

INCLUDES

PRIVATE

VisibleString

EMBEDDED

INSTANCE

REAL

WITH

Элементы с перечисленными выше именами состоят из последовательностей символов в имени и являются зарезервированными символьными последовательностями.

Приме чан и я

1 В приведенных выше последовательностях символов отсутствуют пробелы.

2 Ключевые слова CLASS. CONSTRAINED. INSTANCE, SYNTAX и UNIQUE нс используются в настоящем стандарте; они используются в ГОСТ Р ИСО/МЭК 8824-2. ИСО/МЭК 8824-3 и ИСО/МЭК 8824-4.

12 Определение модуля

12.1 Определение модуля "Module Definition" задается следующими продукциями: Module Definition : : =

Moduleldentifier DEFINITIONS Tag Default BEGIN ModuleBodv END

2.2-2112

17

ГОСТ Р ИСО/М ЭК 8824-1-2001

Module Identifier : : = module reference Definitiveidentifier

Definitiveidentifier : : =

T DefinitiveObj IdComponentList “}" (empty

DefinitiveObj IdComponentList : : =

DefinitiveObj IdComponent |

DefinitiveObj IdComponent DefinitiveObj IdComponentList DefinitiveObj IdComponent : : =

NameForm |

DefinitiveNumberForm |

Definitive NameAnd NumberForm

DefinitiveNumberForm :: = number

DefinitiveNameAndNumberForm : : = identifier T DefinitiveNumberForm ")“ TagDefault: : =

EXPLICIT TAG |

IMPLICIT TAG

AUTOMATIC TAGS (

empty Extension Default: : =

EXTENSIBILITY IMPLIED | empty ModuleBody :: =

Exports Imports Assignment List | empty

Exports : : =

EXPORTS Symbols Exported T |

empty Symbols Exported : : =

SymbolList | empty Imports:: =

IM PORTS Symbols Imported | empty

Sy mbolsim ported : : =

SymbolsFromModuleList |

empty SymbolsFromModuleList : : =

SymtokFromModule |

SymbolsFromModuleList SymbolsFromModule SymbolsFromModule : : =

SymbolList FROM Global Module Reference

GIobalModuleReference :: =

mod ule re Ie rence Ass ign ed 1 de n t i fie r

Assigned Identifier : : =

Object Identifiervalue |

DelinedValue |

empty SymbolList :: =

Symbol |

SymbolList "," Symbol

Symbol : : =

Reference |

Parameterized Reference

ГОСТ Р ИСО/МЭК 8824-1-2001

Reference :: = type reference |

valuereference objectclassreference object reference objectsetreference

.Assignment List :: = Assignment | Assignment List Assignment

.Assignment: : =

TypeAssignment |

ValueAssignment

ValueSetTypeAssignment ObjectClassAssignment ObjectAssignment

Object Set Assign me nt

ParameterizedAssignment

П p и м с ч а н и я

l Использование ParameterizedReference в списках EXPORTS и IMPORTS специфицировано в ИСО/МЭК 8824-4.

2 В примерах (и определениях в настоящем стандарте типов с тегами универсального класса» "ModuleBody" может использоваться вне "ModuleDefinition".

3 Продукции "TypeAssignmenr и "ValueAssignment" специфицированы в разделе 15.

4 Группирование типов данных АСН.1 в модули нс определяет обязательного формирования значении данных уровня представления в поименованные абстрактные синтаксисы с целью определения контекста представления.

5 Значение "TagDcfault" для определения модуля влияет только на типы, явно определенные в модуле. Оно нс влияет на интерпретацию импортированных типов.

6 Точка с занятой не ставиться в спецификации списка присвоений "AssignmentList" или в какой-либо подчиненной продукции, а зарезервирована для использования разработчиками инструментов АСН.1.

12.2 Если тег по умолчанию "TagDefault" равен "empty", то подразумевается "EXPLICIT TAGS". Примечание- Смысл "EXPLICIT TAGS'. "IMPLICIT TAGS" и "AUTOMATIC TAGS" определяется в разделе 32.

12.3 Когда выбрана альтернатива "AUTOMATIC TAGS" для TagDefault", то говорят, что для модуля выбрано автоматическое тегирование. Автоматическое тегирование — это синтаксическое преобразование, которое применяется (с дополнительными условиями) к продукциям "ComponentTypeList" и "AlternativeTypeList", встретившимся в определении модуля. Это преобразование формально специфицировано в подразделах 24.7—24.9, 26.3 и 28.2 для нотаций типов последовательностей. множеств и выборочных типов соответственно.

12.4 Опция "EXTENSIBILITY IMPLIED" эквивалентна вставке в модуле маркера расширения (...) в определении каждого типа, для которого это допустимо. Подразумеваемый маркер расширения располагается в типе в последней позиции, в которой допустима явная спецификация маркера расширения. Отсутствие "EXTENSIBILITY IMPLIED" означает, что расширение обеспечивается только для тех типов в модуле, для которых маркер расширения присутствует явно.

Примечание — "EXTENSIBILITY IMPLIED" влияет только на тины, ио нс влияет на множества объектов.

12.5 Ссылка на модуль "modulereference", появляющаяся в продукции "Moduleidentifier", называется именем модуля.

П р и м с ч а и и с — Возможность определения одного модуля АСН.1 с помощью нескольких элементов “ModuleBody" с присвоением одной и гой же "modulerefercncc" допускалась предшествующими спецификациями. Настоящей спецификацией это нс допускается.

12.6 Имена модулей должны использоваться только один раз (за исключением, определенным в 12.9) в сфере применения определения модуля.

12.7 Если определяющий идентификатор "Deimiliveldentifier" не пуст, то значение идентификатора объекта недвусмысленно и однозначно идентифицирует определяемый модуль. Не определенное значение может быть использовано в определяющем значении идентификатора объекта.

19

ГОСТ Р ИСО/М ЭК 8824-1-2001

И римечание— Вопрос, какие изменения потребуются в модуле для нового "Definitivcldcnlifier". не рассматривается в настоящем стандарте.

12.8 Если присвоенный идентификатор "AssignedIdentifier" не пуст, то альтернативы "ObjectIdentifterValue" и "DeiinedValue" недвусмысленно и однозначно идентифицируют модуль, из которого должны быть импортированы элементы. Когда в “Assignedldentifier" используется альтернатива “DeiinedValue", она должна быть значением идентификатора типа объекта. Каждая ссылка на значение "valuereference", текстуально появляющаяся в "Assignedldentifier". должна удовлетворять одному из следующих правил.

а) ссылка определена в "AssignmentList" определяемого модуля и все "valuereference", текстуально появляющиеся в правой части предложения присваивания, также удовлетворяют этому (правило “а") или следующему (правило "б") правилу.

б) ссылка появляется как “Symbol" в "SymbolsFromModule", ".Assignedldentifier" которого не содержит текстуально никаких "valuereference".

Примечание — Рекомендуется, чтобы идентификатор объекта был присвоен таким образом, чтобы можно было недвусмысленно ссылаться на модуль.

12.9 Глобальная ссылка на модуль "Global Module Re fere псе" в "SymbolsFromModule" должна появляться в "ModuleDefinition" другого модуля, и. за исключением случая, когда он содержит непустой "Definitiveidentifier", "modulereference" может различаться в этих двух модулях.

Примечание — Отличающаяся "modulcrefcrencc" в другом модуле должна использоваться, только когда импортируются символы с одним и тем же именем из двух разных модулей (модули были названы без учета 12.6). Использование альтернативных различных имен делает эти имена доступными для использования в теле модуля (см. 12.15».

12.10 Когда в ссылающемся модуле используются и "modulereference", и непустой "Assignedldentifier". то последний должен рассматриваться как определяющий.

12.11 Когда указываемый модуль имеет непустой "Definitiveidentifier", тогда "GlobalModule-Reference". указывающая этот модуль, не должна иметь пустой "Assignedldentifier".

12.12 Когда в "Exports" выбрана альтернатива "SymbolsExported", тогда:

а) каждый "Symbol" в "Symbols Exported" должен удовлетворять в точности одному из следующих условий:

i) он является единственным, определенным в создаваемом модуле, или

ii) он появляется ровно один раз и только в альтернативе "Symbolstmponed" в "Imports";

б) каждый "Symbol", для которого предназначена ссылка из внешнего модуля, должен быть включен в "SymbolsExported", и только эти "Symbol" могут быть указаны вне модуля, и

в) если нет таких "Symbol", то должна быть выбрана пустая альтернатива для "Symbols Exponed" (а не для "Expons").

12.13 Когда выбрана альтернатива "empty" для "Exports", каждый "Symbol", определенный в модуле, может быть указан вне модуля.

П римечание — Альтернатива "empty" для "Exports" включена для совместимости с предшествующими версиями нотации.

12.14 Идентификаторы, которые появляются в "NamedNumberList", "ЕпитегаНоп"или “Named Bit List", экспортируются неявно, если определяющая их ссылка на тип экспортируется или появляется как компонент (или подкомпонент) в экспортируемом типе.

12.15 Когда выбрана альтернатива "Symbolslmported" в "Imports", тогда:

а) каждый "Symbol" в "SymbolsFromModule" должен быть либо определен в теле модуля, либо представлен в разделе IMPORTS модуля, обозначенного "Global.ModuleReference" в "SymbolsFromModule". Импорт символа "Symbol", присутствующего в разделе IMPORTS указываемого модуля. допустим, если имеется только одно появление "Symbol" в этом разделе и "Symbol" не определен в указываемом модуле.

I I римечание! — Не запрещается одно и то же имя символа, определенное в двух разных модулях, импортировать в другой модуль. Однако если одно и то же имя "Symbol’ встречается несколько раз в разделе IMPORTS модуля А. то это имя "Symbol* нс может быть экспортировано из А в другой модуль В:

б) если для "Exports" выбрана альтернатива "SymbolsExported" в определении модуля, обозначенного "Global Module Reference" в "SymbolsFromModule". то "Symbol" должен присутствовать в его “Symbols Exported":

20

ГОСТ Р ИСО/МЭК 8824-1-2001

в) только тот "Symbol" из присутствуют их в "Symbol List" для "SymbolsFrom Module" может быть использован в качестве символа в любой ссылке "External<X>Reference", который имеет ссылку "modulereference", обозначенную "Global Module Reference" в этом "SymbolsFrom Module" (где <X> есть "value", "type", "object", "objectclass" или "objectset");

г) если нет такого "Symbol", то для "Symbolslreported" должна быть выбрана пустая альтернатива "empty”.

Примечание! — Из в) и г) следует утверждение: "IMPORTS:" подразумевает, что модуль не может содержать *External<X> Reference":

д) все "Symbols From Module" в "SymbolsFrom Module List” должны содержать экземпляры ссылки "Global Module Reference", такие, что:

i) все "modulereference" в ней отличны друг от друга и от "modulereference", ассоциированной со ссылающимся модулем, и

ii) "Assignedldentilier". когда он не пуст, обозначает значения идентификаторов объектов, которые отличны друг от друга и от значения идентификатора объекта (если он есть), ассоциированного со ссылающимся модулем.

12.16 Когда для "Imports" выбрана пустая альтернатива "empty", то модуль может ссылаться на "Symbol", определенный в другом модуле с помощью "ExternaKX Reference".

П р и м с ч а н и с — Альтернатива ’empty" для "Imports" включена для совместимости с предшествующими версиями нотации.

12.17 Идентификатор, который появляется в "NamedNumberList". "Enumeration" или "Named Bit List", импортируется неявно, если определяющая его ссылка на тип импортируется или появляется как компонент (или подкомпонент) в импортируемом типе.

12.17 bis Символ "Symbol" из "SymbolsFromModule" может появляться в "ModuleBody" в качестве ссылки "Reference". Смысловое значение, связанное с "Symbol", то же самое, какое он имеет в модуле, обозначенном соответствующей ссылкой "GlobalModuleReference".

12.18 Когда символ "Symbol" также появляется в ’AssignmentList" (не рекомендуется) или в одном или нескольких других экземплярах "SymbokFromModule", он должен использоваться только в ссылках "External<X> Reference". Если он таким образом не появляется, то он должен использоваться непосредственно как ссылка "Reference".

12.19 Различные альтернативы для присвоения "Assignment" определены в следующих разделах настоящего и последующих стандартов:

Атьтернатива присвоения

Определяющий раздел

Type Assignment"

15.1

"ValueAssignment*

15.2

“ValueSetTypeAs&ignment"

15.4

"ObjectClassAssignment"

ГОСТ P ИСО/МЭК 8824-2, 9.1

"Object Assignment"

ГОСТ Р ИСО/МЭК 8824-2. 11.1

"ObjectSetAssignment"

ГОСТ Р ИСО/МЭК 8824-2. 12.1

"ParameterizedAssignment"

ИСО/МЭК 8824-4. 8.1

Первый символ в любом "Assignment" является одной из альтернатив для "Reference", обозначающей определяемое ссылочное имя. Ни для каких двух присвоений в списке “AssignmentList" не может быть одинаковых ссылочных имен.

13 Ссылки на определения типов и значений

13.1 Последовательности, которые должны использоваться для ссылок на определения типов и значений, определяются следующими продукциями:

DefinedType :: =

Externaltypereference | typereference | Parameterized Гуре | Parameterized ValueSetType

DeftnedValue : : =

Externalvaluereference | valuereference |

ParameterizedValue

21

ГОСТ Р ИСО/М ЭК 8824-1-2001

Тип. идентифицированный "ParameterizedType" и " ParameterizedValueSet Туре", и значение, идентифицированное "ParameterizedValue", определены в ИСО/МЭК 8824-4.

13.2 За исключением случаев, определенных в 12.18, альтернативы “typereference", "valuereference", "ParameterizedType", "ParameterizedValueSetType" или "ParameterizedValue" не должны использоваться, если ссылка не находится в том же теле "ModuleBody", в котором тип или значение были присвоены (см. 15.1 и 15.2) ссылке на тип или значение.

13.3 Внешние ссылки "Externaltypereference" и "Externalvaluereference" не должны использоваться. если соответствующей ссылке "typereference" или "valuereference":

а) не был присвоен, соответственно, тип или значение (см. 15.1 и 15.2). или

б) она не находится в разделе IMPORTS

в теле "ModuleBody", использованном для определения соответствующей ссылки "modulereference". Указание элементов в разделе IMPORTS другого модуля допустимо, только когда имеется не более одного экземпляра этого "Symbol" в данном разделе.

Примечая и е — Нс запрещается один и тот же "Symbol", определенный в двух разных модулях, импортировать в другой модуль. Однако если один и тот же "Symbol" встречается несколько раз в разделе IMPORTS модуля А, то этот "Symbol” нс может быть указан с использованием модуля А во внешней ссылке.

13.4 Внешняя ссылка должна использоваться в модуле только для указания элемента, определенного в другом модуле, и задается следующими продукциями:

Externaltypereference : : =

modulereference

К м

type reference

Externalvaluereference : : =

modulereference

•I ■•

value reference

П p и м с ч а и и e — Дополнительные продукции внешних ссылок (ExtemalClassRcfcrcncc. External-Object Reference и ExlernalObjcctSclReference) определены в ГОСТ P ИСО/МЭК 8824-2.

13.5 Когда ссылающийся модуль определен с использованием альтернативы "Symbols Im ported" для "Imports", "modulereference" во внешней ссылке должен появляться в "Global Module Reference” для ровно одного "SymbolsFromModule" в "Symbols!inported". Когда ссылающийся модуль определен с использованием пустой альтернативы "empty" для "Imports", "modulereference" во внешней ссылке должен появляться в "ModuleDefinition" для модуля (отличного от ссылающегося модуля), в кото-ром определена ссылка "Reference".

13.6 Когда "DefinedType" используется как часть нотации, управляемой Туре" (например в "SubtypeElementSpec"), то "DefinedType" должен быть совместим с управляющим Туре", как определено в F.6.2.

13.7 Каждое появление "De fined Vai не" в спецификации АСН.1 управляется "Туре" и это "DefinedValue" должно указывать на значение типа, совместимого с управляющим "Туре", как определено в F.6.2.

14 Нотация для обеспечения ссылок на компоненты АСН.1

14.1 Для многих целей требуются формальные ссылки на компоненты типов ЛСН.1. значений и пр. Одним из таких примеров является необходимость идентификации конкретного типа в некотором модуле ЛСН.1. В данном разделе определена нотация, которая может быть использована для обеспечения подобных ссылок.

14.2 Нотация позволяет идентифицировать любой компонент типов "множество" и "последовательность" (присутствующий в типе как обязательно, так факультативно).

14.3 На любую часть любого определения типа ЛСН.1 можно сослаться, используя синтаксическую конструкцию "AbsoluteReference":

Absolute Reference : : = "@“ GlobalModuleReference

Item Spec

22

ГОСТ Р ИСО/МЭК 8824-1-2001

ItemSpec : : =

typereference (

hem Id'." Component Id

Itemid : : = ItemSpec

Component Id : : =

identifier | number | "♦"

Примечание— Продукция для "Absolute-Reference" не используется в настоящем стандарте. Она введена для целей, указанных в 14.1.

14.4 Ссылка "GlobalModuleReference" идентифицирует модуль ЛСН.1 (см. 12.1).

14.5 Ссылка "typereference" идентифицирует любой тин АСН.1, определенный в модуле, идентифицированном "GlobalModuleReference".

14.6 "ComponentId" в каждой "ItemSpec" идентифицирует компонент типа, который идентифицирован "Itemid". Последним должен быть "ComponentId", если идентифицируемый им компонент не является типом "множество", "последовательность", "множество-и Г, "последовательность-из" или выборочным типом.

14.7 Альтернатива "identifier" для "Componentld" может быть использована, если порождающий "Itemid" является типом "множество" или "последовательность" и обязательно должен быть одним из "identifier" для "NamedType" в “ComponentTypeList" этого множества или последовательности. Она также может использоваться, если "Itemid" идентифицирует выборочный тип, и тогда он обязательнодолжен быть одним из "identifier" для "NamedType" в "Alternative! уре List" этого выборочного типа. При иных обстоятельствах эта альтернатива использоваться не может.

14.8 Альтернатива "number" для "Componentld" может быть использована, только если “Itemid" является типом "множество-из" или "последовательность-из". Значение числа "number" идентифицирует экземпляр типа в множестве-из или последовательности-из. при этом значение "Г идентифицирует первый экземпляр типа. Значение "0" идентифицирует концептуальный компонент целого типа (не присутствующий явно при передаче и называемый "счетчик итераций"), который содержит число экземпляров типа в множестве-из или последовательности-из, имеющихся в значении охватывающего типа.

14.9 Альтернатива "•" для "Componentld" может быть использована, только если "Itemid" является типом "множество-из" или "последовательностъ-из". Любая семантика, связанная с использованием "♦" для "Componentld", применяется ко всем компонентам множества-из и последовательности-из.

Примечание—В следующем примере:

М DEFINITIONS :: - BEGIN

Т ::« SEQUENCER

a BOOLEAN.

b SET OF INTEGER

END

компонент T' может быть указан в тексте вне модуля АСН.1 (или в комментарии) следующим образом:

если (ФМ.Т.Ь.О нечетное), то

(@М.Т.Ь.* должно быть нечетным).

использованным для утверждения, что если количество компонентов в "Ь* нечетное, то все компоненты ’Ь" должны быть нечетными.

15 Присвоение типов и значений

15.1 Ссылке на тип "typereference" должен быть присвоен тип нотацией, заданной продукцией "Type Assignment":

TypeAssignment : : =

typereference

. =м

Туре

Ссылка "typereference" не должна быть зарезервированным словом АСН.1 (см. 11.18).

15.2 Ссылке на значение "valuereference" должно быть присвоено значение нотацией, заданной продукцией "ValueAssignment":

23

ГОСТ Р ИСО/М ЭК 8824-1-2001

Value Assign тем :: =

valuereference

Гуре

Value

Значение “Value", которое присваивается ссылке "valuereference", управляется Туре" и должно быть в нотации для значения типа, определяемого "Туре" (как сказано в 15.3).

15.3 Значение "Value" является нотацией для значения типа, если:

а) либо "Value" есть нотация "BuiltinValue" для типа (см. 16.8).

б) либо "Value" есть нотация “DefinedValue" для значения этого типа.

15.4 Ссылке на тип "lypereference" может быть присвоено множество значений нотацией, заданной продукцией "ValueSetTypeAssignment":

ValueSetTypeAssignment:: = typereference

Гуре . —и

Value Set

Эта нотация присваивает ссылке "typereference" тип. определяемый как подтип типа, обозначенного Туре", содержащий только те значения, которые специфицированы или допускаются "ValueSet". Ссылка "typereference" не должна быть зарезервированным словом АСН.1 (см. 11. IX) и может указываться как тип. "ValueSet" определяется в 15.5.

15.5 Множество значений некоторого типа должно быть специфицировано нотацией "ValueSet":

ValueSet :: = "{" ElementSetSpec “|"

Множество значений включает в себя все значения, которые, по крайней мере один раз. специфицированы "ElementSetSpec" (см. раздел 46).

16 Определение типов и значений

16.1 Тип специфицируется нотацией "Туре":

Туре :: = BuiltinType | ReferencedType | ConstrainedType

16.2 Встроенные типы АСН.1 специфицируются нотацией "BuiltinType", определяемой следующим образом:

BuiltinType :: =

BitStringType |

BooleanType

Characters! ringType

ChoiceType

Embedded PDVType

EnumeratedType

ExternalType

InstanceOlType

IntegerType

Null Гуре

Object ClassFieldType

Object IdentifierType |

OctetStringType

RealType

Sequence Гуре

SequenceOn ype

SetType

SetOIType

TaggedType

Различные нотации "BuiltinType" определяются в следующих разделах настоящего стандарта (если не оговорено иное):

BitStringType 21

BooleanType 17

CharacterStringType 35

24

ГОСТ Р ИСО/МЭК 8824-1-2001

ChoiceTvpe EmbeddedPDVType EnumeratedType ExtemafType InstanceOtType IntegerType NullType ObjectClassFieldType Object ident ifierType OctetStringType Real Type SequenceType SequenceOfType Set Гуре SetOfType TaggedType

28

32

19

33

ГОСТ P ИСО/МЭК 8824-2. приложение С 18 23

ГОСТ Р ИСО/МЭК 8824-2. 14.1

31

22

20

24

25

26

27

30

16.3 Указываемые типы ЛСН.1 специфицируются нотацией "ReferencedТуре": ReferencedType : : =

DefinedType |

UsefulType

SelectionType

TypeFromObject

ValueSet FromObjects

Нотация "ReferencedType" обеспечивает альтернативный способ указания некоторого другого (а в конечном счете - встроенного) типа. Различные нотации "ReferencedType" и методы, которыми указываемый ими тип определяется, специфицированы в следующих пунктах и разделах настоящего стандарта (если не оговорено иное):

DefinedType

UsefulType

Sc lectionType TypeFromObject ValueSet FromObjects

13.1

40.1

29

ГОСТ Р ИСО/МЭК 8824-2. раздел 15

ГОСТ Р ИСО/МЭК 8824-2. раздел 15

16.4 "Constrained! ype" определен в разделе 44.

16.5 Настоящим стандартом требуется использование нотации "Named Гуре" в спецификации компонентов типов "множество", "последовательность" и выборочных типов. Нотация для "NamedType" следующая:

NamedType : : = identifier Type

16.6 Идентификатор "identifier" используется для недвусмысленной ссылки на тип "множество". "последовательность" и выборочного типа в нотации значения и в ограничениях связей компонентов (см. ИСО/МЭК 8824-3). Он не является частью типа и не влияет на него.

16.7 Значение некоторого типа должно быть специфицировано нотацией "Value":

Value

BuiltinValue | ReferencedValue | ObjectClassFieldValue

Примечание — "ObjectClassFieldValue" определяется в ГОСТ Р ИСО/МЭК 8824-2. 14.6.

16.8 Значения встроенных типов АСН.1 могут быть специфицированы нотацией "BuiltinValue", определенной следующим образом:

BuiltinValue : : =

BitStringValue |

Boolean Value Characterstring Value ChoiceValue EmbeddedPDWalue EnumeratedValue Externalvalue InstanceOfValue IntegerValue

25

ГОСТ Р ИСО/М ЭК 8824-1-2001

Null Value |

Object Identifiervalue

OctetStringValue |

RealValue

SequenceValue

SequenceOIValue

SetValue

SetOtValue

Tagged Value

Различные нотации "BuiitinValue" определены в тех же самых разделах, что и соответствующие нотации "BuiltinType" (см. 16.2).

16.9 Указываемые значения АСН.1 специфицируются нотацией "ReferencedValue":

Re fere need Value : : =

DefinedValue |

Value FrontObject

Нотация “ReferencedValue" обеспечивает альтернативный способ указания некоторого другого (а в конечном счете — встроенного) значения. Рахтичные нотации "ReferencedValue" и методы, которыми указываемое ими значение определяется, специфицированы в следующих пунктах и разделах настоящего стандарта (если не оговорено иное):

DefinedValue 13.1

Value FromObject ГОСТ Р ИСО/МЭК 8824-2. раздел 15

16.10 Независимо от того, является ли тип "BuiltinType". Referenced Гу ре"или "ConstrainedType", его значение может быть задано либо "BuiitinValue", либо "ReferencedValue" этого типа.

16.11 Значение типа, указанного с использованием нотации "NamedType", должно быть определено нотацией "NamedValue":

NamedValue : : = identifier Value

где "identifier" — тот же самый, который был использован в нотации "NamedType".

П р и м е ч а н и с — "identifier" является частью нотации, ио не образует часть самого значения. Он используется для недвусмысленной ссылки на компоненты типов'множество*, "последовательность" и выборочного тина.

16.12 Подразумеваемое или явное присутствие маркера расширения в определении типа не влияет на значение нотации. Значение нотации для типа с маркером расширения точно такое же, как если бы маркер отсутствовал.

17 Нотация для булевского тина

17.1 Булевский тип (см. 3.8.7) должен указываться нотацией “BooleanType":

BooleanType :: = BOOLEAN

17.2 Типы, определенные с этой нотацией, имеют тег универсального класса 1.

17.3 Значение булевского типа (см. 3.8.66 и 3.8.88) должно определяться нотацией "BooleanValue": BooleanValue :: = TRUE | FALSE

18 Нотация для целочисленного тина

18.1 Целочисленный тип (см. 3.8.40) должен указываться нотацией "IntegerType": IntegerType :: =

INTEGER |

INTEGER "Г NamedNumberList T

NamedNumberList: : =

Named Number |

NamedNumberList "," Named Number

NamedNumber : : =

identifier "(" SignedNumber ")" |

identifier"(" DefinedValue ")”

SignedNumber: : = number |"—" number

26

ГОСТ Р ИСО/МЭК 8824-1-2001

18.2 Вторая альтернатива для “SignedNumber" не должна использоваться, если "number" есть нуль.

18.3 "NamedNumberList" не является существенной составной частью определения типа. Эта последовательность используется только в нотации для значения, определенной в 18.9.

18.4 Ссылка "valuereference" в "DefinedValue" должна быть целочисленного типа.

П р и м с ч а н и с — Так как "identifier" не может использоваться для спецификации значения, связанного с "NamedNumber". то "DefincdValue" никогда не может быть ошибочно интерпретировано как "IntegerValue". Следовательно, в следующем случае a INTEGER ::= I Т1 :: = INTEGER(a(2)> Т2 : : = INTEGER^), b(a)} с Т2 : : = h d Т2 : : = а

"с" обозначает значение I. так как нс может относится ни ко второму, ни к третьему появлению "а* в этом примере, a "d" обозначает значение 3.

18.5 Значения каждого из “SignedNumber" и "DefmedValue". входящего в "NamedNumberList", должны быть различными и представлять разные значения целочисленного типа.

18.6 Все "identifier" входящие в "NamedNumberList", должны быть различными.

18.7 Порядок последовательностей "NamedNumber" в “NamedNumberList" не существенен.

18.8 Типы, определенные этой нотацией, имеют тег универсального класса 2.

18.9 Значение целочисленного типа должно определяться нотацией “IntegerValue": IntegerValue : : =

SignedNumber | identifier

18.10 Идентификатор "identifier" в продукции "IntegerValue" должен быть одним из идентификаторов "identifier" в “IntegerType", с которым связано значение, и представляет соответствующее число.

Примечание — Когда указывается целочисленное значение, для которого был определен идентификатор ’identifier", использование формы "identifier" для "IntegerValue" является предпочтительным.

19 Нотация для перечислимого типа

19.1 Перечислимый тип (см. 3.8.24) должен указываться нотацией "EnumeratedType": EnumeratedType :: =

ENUMERATED Т Enumerations "}“

Enumerations : : = Root Enumeration |

Root Enumeration "," "..." |

RootEnumeration ",“"..." "," AdditionalEnumeration

Root Enumeration : : = Enumeration

AdditionalEnumeration : : = Enumeration

Enumeration :: =

Enumerationitem | Enumerationitem “,“ Enumeration Enumerationitem : : =

identifier | NamedNumber

П p и м e ч а и и я

I Каждое значение "EnumeratedType" имеет идентификатор, который связан с отличным от других целым чистом. Однако не подразумевается, что само значение должно иметь какую-либо целочисленную семантику. Спецификация альтернативы "NamedNumber" для "Enumcrationltem" обеспечивает управление представлением значения для облегчения совместимости выражений.

2 Численные значения внутри "NamedNumber’ в "RootEnumeration" не обязательно должны быть упорядоченными или последовательными, а численные значения внутри “NamedNumber" в "AdditionalEnumeration" должны быть упорядоченными или. но нс обязательно, последовательными.

19.2 Для каждой альтернативы "NamedNumber" идентификаторы "identifier" и "SignedNumber" должны отличаться от всех других "identifier" и "SignedNumber в "Enumeration". Кроме того, для каждой "NamedNumber" выполняются положения 18.2 и 18.4.

27

ГОСТ Р ИСО/М ЭК 8824-1-2001

19.3 Всем элементам перечисления "Enumerationitem" (в "EnumeratedТуре"), являющимся идентификаторами "identifier", последовательно присваиваются неотрицательные целые. Для этого последовательность целых начинается с 0. но из нее исключаются те. которые уже задействованы в элементах перечисления "EnumerationItem", являясь "NamedNumber.

Приме ча и и с — Целочисленные значения связываются с "Enumerationhem" для определения правил кодирования. В противном случае они не используются в спецификации АСН.1.

19.4 Значение каждого нового "Enumerationitem" должно быть больше, чем все ранее определенные "AdditionalEnumeration" в типе.

19.5 Когда "NamedNumber” используется в определяющем "Enumerationitem" в "Additional-Enumeration", связанное с ним значение должно отличаться от значений всех ранее определенных "EnumerationItem" (в этом типе) независимо от того, встречаются ранее определенные "Enumerationitem" в корне перечисления или нет. Например:

Л : : = ENUMERATED [а. Ь. .... с(0)} - - недопустимо, т. к. ’а' и с' равны О

В :: = ENUMERATED {а. b.....с, d(2)J - - недопустимо, т. к. ’с' и’d’ равны 2

С : : = ENUMERATED {а. Ь(3),.... с(1)} - - допустимо, с = 1

D :: = ENUMERATED {а. b.....с(2)} - - допустимо, с = 2

19.6 Значение, связанное с первой альтернативой "Enumerationitem" в "AdditionalEnumeration", которая есть "identifier" (а не "NamedNumber"), должно быть наименьшим значением, для которого "Enumerationitem” не определен в "RootEnumeration", и все предшествующие "Enumerationitem" в "AdditionalEnumeration" (если они есть) должны быть меньше. Например являются допустимыми

следующие записи:

А : : = ENUMERATED (а. Ь, .... с} - - с = 2

В :: = ENUMERATED (а. Ь.с(О)..... d) --d = 3

С :: = ENUMERATED {a. b.....с(3), d| --d = 4

D : : = ENUMERATED (a, z(25), ..., d} - - d = I

19.7 Перечислимый тип имеет тег универсального класса 10.

19.Х Значение перечислимого типа должно определяться нотацией "EnumeratedValue": EnumeratedValue :: = identifier

19.9 Идентификатор “identifier" в перечислимом значении "EnumeratedValue" должен быть равен значению "identifier" в последовательности "EnumeratedType", с которым оно связывается.

20 Нотация для действительного типа

20.1 Действительный тип (см. 3.8.52) должен указываться нотацией “RealTvpe":

RealType :: = REAL

20.2 Действительный тип имеет тег универсального класса 9.

20.3 Значениями действительного типа являются значения PLUS-INFINITY, MINUS-INFINITY и действительные числа, задаваемые следующей формулой, содержащей три целых числа — М, В и Е:

М В1,

где М — мантисса. В — основание, а Е — показатель степени.

20.4 Действительный тип имеет ассоциированный тип. который используется для задания точности абстрактных значений действительного типа и обеспечения нотаций значений и подтипов действительного типа.

И р к м с ч а н и с — Правилами кодирования может определяться другой тип, который используется для спецификации кодирования, или может быть задано кодирование без ссылки на ассоциированный тип. В частности. кодирование в BER и PER обеспечивает двоично-кодированное десятичное (BCD) кодирование, если основание равно 10. и кодирование, допускающее эффективное преобразование в машинное представление с плавающей точкой и обратно, если основание равно 2.

20.5 Ассоциированный тип для определения значения и подтипов есть (с обязательными комментариями):

SEQUENCE{

mantissa INTEGER.

28

ГОСТ Р ИСО/МЭК 8824-1-2001

base INTEGER (2|10).

exponent INTEGER

- - Ассоциированное математическое действительное число

- - есть "mantissa", умноженная на "base" в степени "exponent"

При м с ч а и и я

I Значения, представленные по основанию 2 и 10, рассматриваются как различные абстрактные значения, даже если их вычисление даст одно и то же действительное число, и могут иметь разную прикладную семантику.

2 Нотация "REAL (WITH COMPONENTS { .... base(!0)D" может быть использована для ограничения множества значений но абстрактному основанию 10 (и. аналогично, — основанию 2).

3 Этот тин может предоставлять точное, конечное значение любого числа, которое может храниться в памяти машины с плавающей точкой, и любого числа с конечным символ ьно-десятичным представлением.

20.6 Значение действительного типа должно определяться нотацией "RealValue":

Real Value :: =

NumericRealValue | SpecialRealValue

NumericRealValue :: = 0

SequenceValue - - Значение ассоциированного типа

SpecialRealValue : : =

PLUS-INFINITY [ MINUS-INFINITY

Форма "0" должна использоваться для нулевых значений, альтернативная форма "NumericRealValue" для нулевых значений использоваться не может.

21 Нотация для типа "битовая строка"

21.1 Тип "битовая строка" (см. 3.8.6) должен указываться нотацией "BitStringType": BitStringType :: =

BIT STRING

BIT STRING T NamedBitList "]"

Named Bit List :: =

Named Bit |

NamedBitList "." NamedBit

Named Bit :: =

identifier "(" number ")" |

identifier "(" DefinedValue ")"

21.2 Первый бит в битовой строке называется нулевым. Последний бит в битовой строке называется завершающим.

Примечание — Эта терминология используется в спецификации значения нотации и определении правил кодирования.

21.3 "DefinedValue" должно быть ссылкой на неотрицательное значение целочисленного типа.

21.4 Значения последовательностей "number" и "DefinedValue". появляющихся в списке поименованных битов "NamedBitList". должны быть попарно различными, и являются номерами различных битов в значении битовой строки.

21.5 Все идентификаторы "identifier, появляющиеся в "NamedBitList", должны быть различными.

П р и м с ч а н и я

I Порядок последовательностей продукций "NamedBit" в "NamedBitList' нс существенен.

2 Так как "identifier'’, который появился в "NamedBitList". нс может быть использован для спецификации значения, связанного с "NamedBit". то 'DefinedValue" никогда не может быть ошибочно интерпретировано как "IntcgcrValuc’. Следовательно, в следующем случае:

a INTEGER :: « 1

Tl::= INTEGER^’)}

Т2 : : = BIT STRING |а(3>. b(a)|

3-1-2112

29

ГОСТ Г ИСО/М ЭК 8824-1-2001

последнее появление "а" обозначает значение I, которое не может быть указано ни при втором, ни при третьем появлении “а".

21.6 Присутствие "NamedBitList" не влияет на множество абстрактных значений этого типа. Значения, содержащие биты 1. отличные от поименованных битов, допускаются.

21.7 Когда список поименованных битов "NamedBitList" используется в определяющем типе битовой строки, правила кодирования ЛСН.1 могут добавлять (или убирать) произвольное число завершающих битов 0 к (или из) значенням(ий). которые кодируются или декодируются. Следовательно. проектировщики реализаций должны гарантировать, что различные семантики не связаны со значениями, различающимися только числом завершающих битов 0.

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

21.9 Значение типа "битовая строка" должно определяться нотацией "BitStringValue": BitStringValue :: = bstring |

hstring

"Г IdentifierList ’)"

IdentifierList: : =

identifier |

IdentifierList "," identifier

21.10 Каждый из идентификаторов "identifier" в значении "BitStringValue" должен быть тем же самым, что и "identifier" в последовательности продукций "BitStringType", с которой связывается значение.

21.11 Нотация "BitStringValue" обозначает значение битовой строки с единицами в позициях, заданных номерами, соответствующими идентификаторам "identifier", и с нулями - в остальных позициях.

II р и м с ч а и и е — Последовательность продукций "{" *}" используется для обозначения битовой строки, не содержащей ни одного бига.

21.12 При спецификации правил кодирования для битовой строки будут использованы термины "первый бит" и "завершающий бит", где первый бит есть нулевой бит (см. 21.2).

21.13 При использовании нотации 'bstring" первый бит записывается слева, а завершающий бит - справа.

21.14 При использовании нотации "listring" старший бит каждой шестнадцатеричной цифры соответствует левому биту в битовой строке.

П р и м с ч а н н с — Эта нотация никоим образом не ограничивает способ размещения правилами кодирования битовой игроки по октетам для передачи.

21.15 Нотация "hstring" может использоваться, если только значение битовой строки состоит из количества бит, кратного четырем.

П р и м е р

*А98ЛН

и

*10101001I00010I0B

являются альтернативными обозначениями одного и того же значения битовой строки. Если тип был определен с использованием списка поименованных битов "NamedBitList", то (единственный) завершающий нуль не является частью значения, которое, таким образом, имеет длину 15 бит. Если тип был определен без "NamedBitList", то завершающий нуль является частью значения, которое имеет длину 16 бит.

22 Нотация для типа "строка октетов"

22.1 Тип "строка октетов" (см. 3.8.48) должен указываться нотацией "OctetStringType": OctetStringType :: = OCTET STRING

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

22.3 Значение типа "строка октетов" должно определяться нотацией "Octet String Value":

30

ГОСТ Р ИСО/МЭК 8824-1-2001

OctetStringValue : : =

bstring |

hstring

22.4 Для строк октетов при спецификации правил кодирования октеты указываются терминами "первый октет" и "завершающий октет", а для битов внутри октета — терминами "старший бит" и "младший бит".

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

22.6 При использовании нотации "hstring" крайняя левая шестнадцатеричная цифра должна быть старшим полуоктетом первого октета.

22.7 Если “hstring" состоит из нечетного числа шестнадцатеричных цифр, то она должна интерпретироваться таким образом, как если бы она содержала еще одну дополнительную завершающую нулевую шестнадцатеричную цифру.

23 Нотация для вырожденного типа

23.1 Вырожденный тип (см. 3.8.43) должен указываться нотацией "NullType":

NullType :: = NULL

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

23.3 Значение вырожденного типа должно указываться нотацией "NullValue":

NullValue::= NULL

24 Нотация для типов "последовательность"

24.1 Нотацией для определения типа "последовательность" (см. 3.8.56) должна быть "Sequence Туре":

SequenceТуре :: = SEQUENCE "f "}" |

SEQUENCE "(" ExtensionAndException OptionalExtensionMarker "Г |

SEQUENCE "{“ ComponentTypeLists"}"

ExtensionAndException :: = "..." |"..." ExceptionSpec

Optional Extension Marker:: = "," "...“ (empty

ComponentTypeLists:: = RootComponentTypeList |

RootComponentTypeList"," ExtensionAnd Exception Extension Additions Optional ExtensionMarker |

RootComponentTypeList ",“ ExtensionAndException ExtensionAdditions

Extension End Marker"," RootComponentTypeList |

ExtensionAndException ExtensionAdditions Extension End Marker "." RootComponentTypeList

RootComponentTypeList : : = ComponentTypeList

ExtensionEndMarker : : = "," "...“

ExtensionAdditions :: = "," ExtensionAddit ion List | empty

ExtensionAdditionList: : = ExtensionAddition | ExtensionAdditionList "," ExtensionAddition

ExtensionAddition :: = ComponentType ( ExtensionAdditionGroup

ExtensionAdditionGroup : : = "||" ComponentTypeList "j|"

ComponentTypeList :: =

ComponentType |

ComponentTypeList "," ComponentType

ComponentType : : =

NamedType (

NamedType OPTIONAL |

NamedType DEFAULT Value

COMPONENTS OF Type

24.2 Когда продукция "ComponentTypeLists" встречается в определении модуля, для которого выбрано автоматическое тегирование (см. 12.3). и никакой из экземпляров "NamedType" в любой из

3.1'

31

ГОСТ Р ИСО/М ЭК 8824-1-2001

первых трех альтернатив для "ComponentType" не содержит “TaggedType", то преобразование автоматического тегирования выбрано для всего "ComponentTypeLists"; в противном случае — нет.

Приме чан и я

I Использование нотации "TaggedType" в определении списка компонентов для типа "последовательность" позволяет спецификатору управлять тегами в противоположность автоматическому присваиванию в методе автоматическою тегирования. Следовательно, в следующем случае:

Т: : = SEQUENCE ( a INTEGER, b |l| BOOLEAN, с OCTET STRING }

автоматическое тегирование не применяется к списку компонентов а. Ь. с. даже если это определение типа “последовательность" Т встретилось в модуле, для которою было выбрано автоматическое тегирование.

2 Только экземпляры продукции *ComponcnlTypeList". встретившиеся в модуле, для которою было выбрано автоматическое тегирование, являются кандидатами для преобразования автоматического тегирования.

24.3 Вопрос о применении преобразования автоматического тегирования решается индивидуально для каждого экземпляра списка "ComponentTypeLists" и до преобразования COMPONENTS OF, определенного в 24.4. Однако, как определено в 24.7— 24.9. преобразование автоматического тегирования (если оно применяется) производится после преобразования COMPONENTS OF.

Примечание — В результате применение автоматических тегов подавляется тегами, явно присутствующими в ’ComponentTypeLists", но нс тегами, присутствующими в "Туре", следующем за COMPONENTS OF.

24.4 Л ип "Туре" в нотации "COMPONENTS OF Туре" должен быть типом "последовательность". Нотация "COMPONENTS OF Туре" должна использоваться для определения включения, в этом месте списка компонентов, всех компонентов указанного типа, за исключением любых маркеров расширения и расширяющих дополнений, которые могул присутствовать в "Туре". (В "COMPONENTS OF Туре" включается только "RootComponentTypeList" типа "Туре": маркеры расширения и расширяющие дополнения, если они есть, игнорируются нотацией “COMPONENTS OF Туре"). При этом преобразовании игнорируются все ограничения, применяемые к указываемому типу.

П р и м с ч а и и е — Это преобразование логически завершается до удовлетворения требований последующих подразделов.

24.5 В каждом из последующих подразделов идентифицированы серии появлений "ComponentType" либо в корне, либо в расширяющих дополнениях, либо и в том, и в другом. Правило 24.5.1 должно применяться для всех таких серий.

24.5.1 Для каждой серии из одного или нескольких последовательных появлений типов компонентов "ComponentType", отмеченных как OPTIONAL или DEFAULT, теги этих "ComponentType" и любого непосредственно следующего типа компонента в серии должны быть различными (см. раздел 30). Если было выбрано автоматическое тегирование, то требование, чтобы тети были различными, применяется только после осуществления автоматического тегирования, и всегда должно быть удовлетворено, если применялось автоматическое тегирование.

24.5.2 Правило 24.5.1 должно применяться к сериям "ComponentType" в корне.

24.5.3 Правило 24.5.1 должно применяться к завершенным сериям "ComponentType" в корне или в расширяющих дополнениях в текстуальном порядке их появления в определении типа (игнорируя все скобки версий и многоточия).

24.6 Когда используется третья или четвертая альтернатива "ComponentTypeLists", все "ComponentType" в расширяющих дополнениях должны иметь теги, отличные от тегов текстуально последующих "ComponentType" до первого "ComponentType" который не отмечен как OPTIONAL или DEFAULT в завершающем "RootComponentTypeList" включительно (если такой есть).

24.7 Преобразование автоматического тегирования появления списка "ComponentTypeLists" логически осуществляется после преобразования, определенного в 24.4. но только если 24.2 определяет, что оно должно применяться к этому экземпляру "ComponentTypeLists". Преобразование автоматического тегирования изменяет каждый тип компонента "ComponentType" в "ComponentTypeLists", заменяя исходный тип "Туре" в продукции "NamedType" замещением "TaggedType", определенным в 24.9.

24.8 Если действует автоматическое тегирование и "ComponentType" в корне расширения не имеют тегов, то "ComponentType" в "ExtensionAdditionList" должен быть тегированным типом.

24.9 Заметающий тегированный тип "TaggedType" определяется следующим образом:

а) в замещающей нотации "TaggedType" используется альтернатива "Tag Туре";

б) "Class" замещения "TaggedType" пуст (т. е. тегирование контекстно зависимое);

32

ГОСТ Р ИСО/МЭК 8824-1-2001

в) "ClassNumber" в замещении " l agged Гуре' есть нулевое значение тега для первого "Component-Type" в "RootComponentTypeList" или для первого "NamedType’ в "Alternatively ре Lists", единица — для второго и т. д. но мере возрастания номеров тегов;

г) "ClassNumber" в замещении "lagged Гуре' первого "ComponentType" в "ExtensionAdditionList" есть нуль, если "RootCOmponentTypeList" пропущен, в противном случае он на единицу больше самого большого "ClassNumber" в "RootComponentTypeList"; следующий "ComponentType" в "ExtensionAdditionList" имеет "ClassNumber на единицу больше первого и т. д. по мере возрастания номеров тегов;

д) "Туре" в замещении TaggedType" есть исходный тип "Туре", который будет замещен.

П р и м с ч а н и я

I Правила, управляющие спецификацией явного или неявного тегирования для замещения “ l agged Гуре', приведены в 30.6. Автоматическое тегирование всегда неявное, если только “Туре" не является выборочным типом, нотацией открытого типа или пустой ссылкой "DummyReference" (см. ИСО/МЭК 8824-4, 8.3). когда тегирование является явным.

2 Если удовлетворены требования 24.7. то теги компонентов полностью определены и не изменяются, даже когда тип "последовательность* указывается в определении компонента в другом списке “Component TypcList". для которого применяется автоматическое тегирование. Таким образом, в следующем случае:

Т :: = SEQUENCE { а Та. Ь ТЬ. с Тс }

Е : : = SEQUENCE { fl El. 12 Т. ГЗ ЕЗ |

теги, присоединенные к а. Ь. с не изменятся возможным автоматическим тегированием, примененным к компонентам Е.

3 Когда тип "последовательность" встречается как "Туре" в "COMPONEN TS ОР Туре", каждое появление в нем "ComponentType* дублируется благодаря применению 24.4 до возможного применения автоматического тегирования к ссылающемуся типу ’последовательность". Таким образом, в следующем случае:

Т::’ SEQUENCE ( а Та. b SEQUENCE ( Ы TI, Ь2 Т2. ЬЗ ТЗ }, с Тс }

W : : = SEQUENCE { х Wx. COMPONENTS OF Т, у Wy }

теш элементов а. Ь. с в последовательности Т нс обязательно должны быть теми же самыми, что и теги элементов а, Ь, с в последовательности W, если W была определена н окружении автоматического тегирования. но теги элементов Ы. Ь2 и ЬЗ — одни и тс же в последовательностях Т и W. Другими словами, преобразование автоматического тегирования применяется только один раз к данному списку “Component Ту[к Lists".

4 Введение подтипа нс влияет на автоматическое тегирование.

5 Когда имеет место автоматическое тегирование, вставка новых компонентов может привести к изменениям других компонентов, вызванным побочным эффектом модификации тегов.

24.10 Если используется ключевое слово "OPTIONAL" или "DEFAULT", то соответствующее значение может быть опушено из значения нового типа.

24.11 Если встречает ключевое слово "DEFAULT", то отсутствие значения этого типа должно быть в точности эквивалентно вставке значения, определенного "Value", которое, в свою очередь, должно быть нотацией для значения типа, определенного "Туре" в последовательности продукций "NamedType".

24.12 Значение, соответствующее "ExtensionAdditionGroup” (всем компонентам вместе), является факультативным. Однако если такое значение присутствует, то должно присутствовать и значение. соответствующее компонентам в заключенном в скобки "ComponentTypeList", которые не отмечены как OPTIONAL или DEFAULT.

24.13 Идентификаторы "identifier" во всех последовательностях продукций "NamedType" списка "ComponentTypeLists" (вместе с теми, которые получены раскрытием COMPONENTS OF) должны быть различными.

24.14 Значение для данного типа, расширяющего дополнения, не должно устанавливаться, если не установлены значения для всех типов расширяющего дополнения, не отмеченных как OPTIONAL или DEFAULT, которые логически находятся между этим типом расширяющего дополнения и корнем расширения.

П р и м с ч а н и я:

1 Когда тип наращивается от корня расширения (версия 1) через версию 2 к версии 3 путем добавления новых расширяющих дополнений, присутствие в кодировании любых дополнений из версии 3 требует присутствия в кодировании всех дополнений версии 2. не отмеченных как OPTIONAL или DEFAULT.

2 "ComponentType". которые имеются в расширяющих дополнениях, но не содержатся в “ExtenstonAddilmn-Group". должны колироваться всегда, если они не отмечены как OPTIONAL или DEFAULT, за исключением 3-2-л и 33

ГОСТ Р ИСО/М ЭК 8824-1-2001

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

3 Рекомендуется использовать продукцию "ExtensionAdditionGroup", так как:

а) она может привести к более компактному кодированию в зависимости от правил кодирования (например. PER);

б) синтаксис более точен в том отношении, если он ясно указывает, что значение типа, определенного в "ExtensionAdditionList" и нс отмеченного как OPTIONAL или DEFAULT, всегда должно присутствовать в кодировании, если кодируется группа расширяющих дополнений, в которой определен тип (см. примечание I);

в) синтаксис ясно указывает, какие типы в 'ExtensionAdditionList" должны поддерживаться приложением как группа.

24.15 Все типи "последовательность" имеют тег универсального класса 16.

Примечание — Типы "последовательность" (см. 25.2).

24.16 Значение типа "последовательность" должно определяться нотацией

SequenceValue :: =

"Г ComponentValueList "}" |

ComponentValueList: : =

NamedValue |

Component Value List “," NamedValue

24.17 Нотация T ")" должна использоваться, только если:

а) все последовательности "ComponentТуре" в "SequenceТуре" помечены как "DEFAULT’, или "OPTIONAL", а все значения — опушены, или

б) нотацией типа была "SEQUENCE {)“.

24.IS Должно быть по одному значению "NamedValue" для каждого типа "NamedType" в "SequenceType", который не отмечен как "DEFAULT* или "OPTIONAL", и эти значения должны быть в пэм же самом порядке, что и соответствующие последовательности "Named Гуре".

25 Нотация для типов "последовательность-из"

25.1 Нотацией для определения типа "последовательность-из" (см. 3.8.57) из другого типа должна быть "SequenceOfType":

SequenceOfType : : = SEQUENCE OF Type

25.2 Все типы "последовательность-из" имеют тег универсального класса 16.

П р и м е ч а н и с — Типы "последовательность* имеют тот же самый тег. что и тапы "последователь-ноегь-из" (см. 24.15).

25.3 Значение типа “последовательность-из" должно определяться нотацией "SequenceOfValue": SequenceOlValue :: = "[" ValueList ")" |"{" "}"

Value List : : =

Value |

ValueList ".“ Value

Нотация "f ")" используется, когда SequenceOlValue есть пустой список.

25.4 Каждое значение "Value" в списке значений "ValueList" должно быть нотацией для значения типа, заданного в "SequenceOfType".

Примечание — Семантическое значение может быть свя зано с порядком этих значений.

26 Нотация для типов "множество"

26.1 Нотацией для определения типа "множество" (см. 3.8.58) из других типов должна быть "SetType":

34

ГОСТ Р ИСО/МЭК 8824-1-2001

SetType:: = SET T "Г |

SET “Г ExtensionAndException OptionalExtensionMarker "Г |

SE EТ ComponentTypeLists ")"

Продукции "ComponentTypeLists", "ExtensionAndException" и "OptionalExtensionMarker" определены в 24.1.

26.2 "Туре" в нотации "COMPONENTS OF Туре" должен быть типом "множество". Нотация "COMPONENTS OF Туре" должна использоваться для определения включения, в данном месте в списке компонентов, всех типов компонентов, появляющихся в указанном типе, за исключением любых маркеров расширения и расширяющих дополнений, которые могут присутствовать в "Туре". (В "COMPONENTS OF Туре" включается только "RootComponentTypeList" типа ’Туре"; маркеры расширения и расширяющие дополнения, если они есть, игнорируются нотацией "COMPONENTS OF Туре".) При этом преобразовании игнорируются все ограничения, применяемые к указываемому типу.

П римечание— Это преобразование логически завершается до удовлетворения требований последующих разделов.

26.3 Типы "ComponentType" в типе “множество" должны иметь различающиеся теш (см. раздел 30). Тег каждого нового "ComponentType". добавляемого к "AddilionalComponentTypeLLst", должен быть канонически больше (см. 8.4). чем тег других компонентов в "AdditionaiComponentTypeList".

II р и м с ч а и и е — Когда "TagDetault" для модуля, в котором появилась данная нотация, есть "AUTOMATIC TAGS", это условие выполняется независимо от фактических типов "ComponentType". в результате применения 24.7.

26.4 Положения 24.2. 24.7—24.13 применяются также и для типов "множество".

26.5 Все типы “множество" имеют тег универсального класса 17.

Примечание — Типы "множество-из" имеют тот же самый тег. что и типы "множество* (см. 27.2).

26.6 Никакая семантика не должна связываться с порядком значений в типе "множество".

26.7 Значение типа “множество" должно определяться нотацией "SetValue":

SetValue :: = "Г Component Value List ")" | “{" “)"

Продукция “ComponentValueList" определена в 24.16.

26.8 Нотация "Г “]" должна использоваться для “SetValue", только если:

а) все последовательности "ComponentType" в “SetType" помечены как "DEFAULT" или "OPTIONAL", а все значения — опущены, или

б) потайней типа была "SET (}".

26.9 Должно быть по одному значению "NamedValue" для каждого типа "NamedType" в "SetType". который не отмечен как “DEFAULT" или "OPTIONAL".

П римечание — Эти значения "NamedValue" могут появляться в произвольном порядке.

27 Нотация для типов "множество-из"

27.1 Нотацией для определения типа "множество-из" (см. 3.8.59) из другого типа должна быть “SetOITvpe":

SetOITvpe : : =

SET OF Type

27.2 Все тины "множество-из" имеют тег универсального класса 17.

П римечание — Типы "множество" имеют тот же самый тег, что и типы "множество-из* (см. 26.5).

27.3 Значение типа “множество-из" должно определяться нотацией "SetOlValue":

SetOIValue :: = Т ValueList ")" | “Г "}"

Слисок значений "ValueList" определен в 25.3.

Нотация "(" ")" используется, когда SetOIValue есть пустой список.

27.4 Каждое значение “Value" в списке значений "ValueList" должно быть нотацией для значения типа "Туре", заданного в "SetOITvpe".

П р и м с ч а и и я

I Никакое семантическое значение не должно быть связано с порядком л их значений.

2 Не требуется, чтобы правила кодирования сохраняли порядок этих значений.

3 Тип "множество-из" нс является математическим множеством значений, например для "SET OF INTEGER" значения "{I}" и "ПН" являются различными.

з-г 35

ГОСТ Р ИСО/М ЭК 8824-1-2001

28 Нотация для выборочных типов

28.1 Нотация для определения выборочного типа (см. 3.8.13) из других типов должна быть "ChoiceТуре":

ChoiceТуре : : = CHOICE "{" AltemativeTypeLists "Г

AltemativeTypeLists : : =

RootAlternativeTypeList |

RootAlternativeTypeList ",” ExtensionAndException

ExtensionAdditionAhernatives OpiionalExtensionMarker

RootAlternativeTypeList:: = AltemativeTypeList

ExtensionAdditionAltematives : : =

"." ExtensionAdditionAlternativesList | empty

ExiensionAdditionAltemaiivesLisi:: = ExiensionAdditionAlternative |

ExtensionAdditionAlternativesList “,"

ExiensionAdditionAlternative

ExiensionAdditionAlternative : : = ExtensionAddit ion Alternatives [

NamedType

ExtensionAdditionAhernatives : : = "||" AltemativeTypeList "||"

AltemativeTypeList :: =

NamedType |

AltemativeTypeList "." NamedType

Примечание — Типы CHOICE : : = { a A } и А являются различными и могут кодироваться различным образом.

28.2 Типы, определенные в продукциях "AltemativeTypeList" в “AltemativeTypeLists". должны иметь различающиеся теги (см. раздел 28). Если действует автоматическое тегирование и "NamedType" в корне расширения не имеют тегов, то "NamedType" в "ExtensionAdditionAlternativesList" не должны тегироваться.

П р и м с ч а н и е — Когда TagDefault" для модуля, в котором появилась данная нотация, есть "AUTOMATIC TAGS", теги автоматически становятся различными в результате применения 24.7.

28.3 Когда продукция "AltemativeTypeLists" встречается в определении модуля, .для которого выбрано автоматическое тегирование (см. 12.3). и никакой из экземпляров "NamedType" в ней не содержит тип "Туре", являющийся экземпляром "TaggedType". то преобразование автоматического тегирования выбрано для всей "AltemativeTypeList"; в противном случае — нет. Преобразование автоматического тегирования "AltemativeTypeLists", когда оно выбрано, применяется к каждому типу "NamedType" продукции “AltemativeTypeLists" путем замены каждого “Туре", исходного для продукции "NamedType". экземпляром замещения "TaggedType", определенного в 24.9.

28.4 Тег каждого нового "NamedType", добавляемого к "ExtensionAdditionAltemativesList", должен быть канонически больше (см. 8.4) тегов других альтернатив в "ExtensionAdditionAlternativesList" и в "ExtensionAdditionAltemativesList" последним должен быть "NamedType".

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

28.6 Когда данный тип не имеет маркера расширения и используется там. где настоящий стандарт требует использовать типы с различающимися тегами (см. 24.5, 24.6. 26.3 и 28.2). все возможные теги значений выборочного типа должны рассматриваться с точки зрения этого требования. Это требование иллюстрируется в следующих примерах, где принято, что "TagDefault" не есть "AUTOMATIC TAGS".

П р и м е р ы

I А : : = CHOICE

(b В,

с NULL)

В :: = CHOICE

(d |()| NULL.

е 11| NULL)

36

ГОСТ Р ИСО/МЭК 8824-1-2001

2 Л : : = CHOICE

(b В,

с С}

В :: = CHOICE

(d |()| NULL.

е |1| NULL}

С :: = CHOICE

(f |2| NULL.

g |3| NULL)

3 (НЕКОРРЕКТНЫЙ)

A :: = CHOICE

(b B.

с C}

В :: = CHOICE

(d |0| NULL.

e |1| NULL)

C : : = CHOICE

|f |0| NULL.

g HI NULL)

В примерах 1 и 2 нотация используется корректно. В примере 3 нотация некорректна без автоматического тегирования, так как теги типов d. f, а также е. g идентичны.

28.7 Идентификаторы "identifier" всех типов "NamedType" в "AlternativeTypeLists" должны отличаться от идентификаторов других типов "Named Гуре" в этом же списке.

28.8 Значение выборочного типа должно определяться нотацией "ChoiceValue": ChoiceValue : : = identifier":“ Value

28.9 "Value" должно быть нотацией для значения того типа в "AlternativeTypeLists". который назван идентификатором “identifier".

29 Нотация для селективных типов

29.1 Нотацией, определяющей селективный тип (см. 3.8.55), должна быть "SelectionType": SelectionType : : = identifier "<" Type

где "Type" обозначает выборочный тип. a "identifier" — один из типов "NamedType", появляющихся в "AlternativeTypeLists" определения этого выборочного типа.

29.1.1 Когда 'Туре" обозначает ограниченный тип. выбор осуществляется из родового типа, игнорируя ограничение.

29.2 Когда "SelectionType" используется в качестве "NamedType", идентификатор "identifier" типа “NamedType" присутствует так же, как и "identifier" типа "SelectionType".

29.3 Когда "SelectionType" используется в качестве "Туре", идентификатор “identifier" сохраняется и обозначает тип выбранной альтернативы.

29.4 Нотацией для значения селективного типа должна быть нотация для значения, указанного типом "SelectionType".

30 Нотация для тегированных типов

Тегированный тип (см. 3.8.64) — это новый тип. который является изоморфным старому типу, но имеет другой тег. Тегированный тип используется главным образом там. где настоящим стандартом требуется использование типов с различающимися тегами (см. 24.5. 24.6. 26.3 и 28.2). Использование в модуле 'Tag Default" с "AUTOMATIC TAGS" позволяет выполнить эти требования без явной спецификации нотации тегированного типа в этом модуле.

Примечание— Когда протокол определяет, что значения нескольких типов данных могут быть переданы в один и тот же момент времени, различие тегов может быть необходимым для того, чтобы обеспечить получателю возможность корректно декодировать значение.

30.1 Нотацией для тегированного типа должна быть "TaggedType":

37

ГОСТ Р ИСО/М ЭК 8824-1-2001

TaggedType : : =

Tag Type |

Tag IMPLICIT Type

Tag EXPLICIT Type

Tag :: = T Class ClassNumber "|"

ClassNumber: : =

number |

DefinedValue

Class:: =

UNIVERSAL |

APPLICATION

PRIVATE |

empty

30.2 Ссылка на значение "valuereference" в "DefinedValue" должна быть целочисленного типа, и ей должно быть присвоено неотрицательное значение.

30.3 Новый тип изоморфен старому типу, но имеет тег класса "Class" и номер "ClassNumber", за исключением случая, когда "Class" есть "empty"; в этом случае тег - контекстно зависимого класса с номером "ClassNumber".

30.4 Класс "Class" не может быть универсальным классом "UNIVERSAL", за исключением типов, определенных в настоящем стандарте.

При м с ч а и и я:

I Использование тегов универсального класса регулярно согласуется ИСО и МЭК-Т.

2 В подразделе С.2.12 содержится руководство и указания ио статистике использования классов тегов.

30.5 Все применения тегов относятся либо к явному, либо к неявному тегированию. Неявное тегирование указывает (тем правилам кодирования, которые обеспечивают соответствующий выбор). что явная идентификация исходных тегов типа Туре” в TaggedType" не является необходимой при передаче.

П р и м с ч а и и с — Может быть полезным сохранять старый тег, когда он универсального класса и, следовательно, недвусмысленно идентифицирует старый тип без знания определения АСН.1 нового типа. Однако минимальное количество октетов для передачи обычно достигается использованием IMPLICIT. Пример кодирования, использующего IMPLICIT, приведен в ИСО/МЭК 8825-1.

30.6 Конструкция тегирования задает явное тегирование, если выполняется одно из следующих утверждений:

а) используется альтернатива "lag EXPLICIT Type":

б) используется альтернатива "Tag Туре", и значение TagDelault" для модуля есть либо "EXPLICIT TAGS", любо пусто;

в) используется альтернатива "Tag Туре", и значение TagDelault" для модуля есть либо "IMPLICIT TAGS", любо "AUTOMATIC TAGS", но тип. определяемый Туре", есть выборочный или открытый тип. или тип "Dummy-Reference" (см. ИСО/МЭК 8824-4. 8.3).

30.7 Если "Class" есть "empty", то нет ограничений на использование Tag", кроме тех. которые подразумеваются требованием различия тегов в 24.5. 24.6. 26.3 и 28.2.

30.8 Альтернатива "IMPLICIT" не должна использоваться, если тип. определяемый “Туре", есть выборочный или открытый тип, или тип “DummyReference" (см. ИСО/МЭК 8824-4. 8.3).

30.9 Нотацией для значения "TaggedType" должна быть "TaggedValue": TaggedValue :: = Value

где "Value" есть нотация для значения Туре" в "TaggedType".

П р и м е ч а н и с — Tag" не появляется в этой нотации.

31 Нотация для типа "идентификатор объекта"

31.1 Тип "идентификатор объекта" (см. 3.8.47) должен указываться нотацией "ObjectIdentifierType": Object Idem ifierType : : =

OBJECT IDENTIFIER

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

31.3 Нотацией для значения идентификатора объекта должна быть "ObjectIdentilierValue":

38

ГОСТ Р ИСО/МЭК 8824-1-2001

ObjecddentinerValue :: =

"{" ObjldComponem List "Г |

Т DeiinedValue ObjldComponem List")"

ObjldComponentList : : =

ObjldComponem |

ObjldComponem ObjldComponeniList

ObjldComponem : : = Name Form |

NumberForm

N ameAnd NumberForm

NameForm :: = identifier

NumberForm : : = number | DeiinedValue

NameAndNumberForm :: =

identifier"(" NumberForm ")"

31.4 Ссылка на значение "valuereference" в “DeiinedValue” числовой формы "NumberForm" должна быть целочисленного типа и ей должно быть присвоено неотрицательное значение.

31.5 Ссылка на значение "valuereference” в “DeiinedValue” как на значение идентификатора объекта "ObiectldentifierValue" должна быть типа "идентификатор объекта".

31.6 Именная форма "NameForm" должна использоваться только для тех компонентов идентификатора объекта, численное значение и идентификатор которых определены в приложениях А — С ИСО/МЭК 9834-1. и должна быть одним из идентификаторов, определенных в этих приложениях. Когда ИСО/МЭК 9834-1 определяет синонимы идентификаторов, любой синоним может использоваться с той же самой семантикой. Когда одно и то же имя является идентификатором, определенным в ИСО/МЭК 9834-1. и значением ссылки АСН.1 в модуле, содержащем "NameForm". имя в значении идентификатора объекта должно трактоваться как идентификатор ИСО/МЭК 9834-1.

31.7 Альтернатива “number" в числовой форме "NumberForm” должна быть числовым значением. присвоенным компоненту идентификатора объекта.

31.8 Идентификатор "identifier” в "NameAndNumberFonn" должен быть задан, когда числовое значение присвоено компоненту идентификатора объекта.

П римечание — Уполномоченные, распределяющие численные значения компонентам идентификаторов объектов, идентифицированы в ИСО/МЭК 9834-1.

31.9 Семантика значения идентификатора объекта определяется в ИСО/МЭК 9834-1.

31.10 Значащей частью компонента идентификатора объекта является "NameForm" или "NumberForm", к которой он сводится и которая предоставляет числовое значение для компонента идентификатора объекта. За исключением дуг. определенных в приложениях А — С ИСО/МЭК 9834-1. числовое значение компонента идентификатора объекта всегда присутствует в экземпляре нотации значения идентификатора объекта.

31.11 Когда значение идентификатора объекта "ObjectIdemifierValue” содержит альтернативу "DeiinedValue", список компонентов идентификатора объекта, на который она ссылается, предшествует компонентам, явно присутствующим в значении.

П р и м с ч а нмс — ИСО/МЭК 9834-1 рекомендует, чтобы при присваивании значения идентификатора объекта также присваивалось и значение описателя объекта.

Пр и м еры

С идентификаторами, присвоенными в ИСО/МЭК 9834-1. значения

{iso standard 8571 pci (l)| и

(I 0 8571 1}

идентифицируют объект "pci”, определенный в ИСО 8571.

С дополнительным определением

ftam OBJECT IDENTIFIER :: = (iso standard 8571) этим значениям эквивалентно следующее:

{ftam pci (1)|

39

ГОСТ Р ИСО/М ЭК 8824-1-2001

32 Нотация для типа "встроенное-здп"

32.1 Тип 'встроенное-здп" (см. 3.8.21) должен указываться нотацией "Embedded I’DVType": Embedded I’DVType : : = EMBEDDED PDV

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

П р и м с ч а и и е — Когда используется согласование уровня представления, те же самые функциональные возможности, что и EXTERNAL, обеспечиваются EMBEDDED PDV (вместе с дополнительными функциональными возможностями), но биты в строке будут другими. В этом случае рекомендуется, чтобы в последующих изменениях версии прикладного протокола была сделана замена EXTERNAL CHOICE (external EXTERNAL, embedded-pdv EMBEDDED PDV). Дополнительные замены использования EXTERNAL гам. где нс используется согласование уровня представления, предлагаются в ГОСТ Р ИСО/МЭК 8824-2. приложение С.

32.3 Тип состоит из значений, представляющих:

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

б) идентификацию (отдельно или вместе):

I) класса значений, содержащего это значение данных (абстрактного синтаксиса), и

2) кодирования, использованного для отличия этого значения данных от других того же класса (синтаксиса передачи).

И р и м с ч а н и я

I Значение данных может быть значением типа АСН.1 или. например, кодированием неподвижного или движущегося изображения. Идентифицируются либо один или два идентификатора объектов, либо ссылки на контекст представления ВОС для идентификации абстрактного синтаксиса и синтаксиса передачи.

2 Идентификация абстрактного синтаксиса и/или кодирования может также определяться проектировщиком приложения в качестве фиксированного значения, и в этом случае она может не кодироваться в конкретном сеансе взаимосвязи.

32.4 Тип "встроенное-здп" имеет ассоциированный тип. Этот тип используется для обеспечения нотации значений и подтипов типа "встроенное-здп".

32.5 Ассоциированный тип для определения значения и подтипа, принимая окружение автоматического тегирования, имеет вид (с нормативными комментариями):

SEQUENCE!

identification

syntaxes

abstract

CHOICE {

SEQUENCE{

OBJECT IDENTIFIER,

transfer OBJECT IDENTIFIER )

- - Идентификаторы объектов абстрактного синтаксиса и синтаксиса передачи - -, syntax О BJ ЕСТ IDENTIFIER

- - Единственный идешификатор объекта для идентификации класса или

- - кодирования * -. presentation-context-id INTEGER

- - (Применяется только в среде ВОС)

- - Согласованный контекст уровня представления

- - идентифицирует класс значения и его кодирование - - , context-negotiation SEQUENCE (

presentation-context-id INTEG ER,

transfer-syntax OBJECT IDENTIFIER )

- - (Применяется только в среде ВОС)

- - Осуществляется процесс согласования контекста для идентификации класса

- - значения и его кодирования - -, transfer-syntax OBJECT IDENTIFIER

- - Класс значения (например спецификация того, что это значение типа АСН.1)

- - зафиксирован разработчиком приложения (и. следовательно, известен как

- - отправителю, так и получателю). Этот случай предназначен главным образом для

40

ГОСТ Р ИСО/МЭК 8824-1-2001

- - обеспечения выборочного шифрования поля (или другого преобразования

- - кодирования) типа ЛСН.1 - -,

fixed NULL

- - Значение данных есть значение фиксированного типа АСН.1 (и. следовательно, - - известно как отправителю, так и получателю) - - ).

data-value-descriptor Object Descriptor OPTIONAL

- - Этим обеспечивается человекочитаемая идентификация класса значения - -, data-value OCTET STRING)

(WITH COMPONENTS {

data-value-descriptor .ABSENT})

Примечание — Тин "встроен нос-зил" не допускает включения 'значения "data-value-descriptor". Однако определение ассоциированного типа отражает базовую общность, которая существует между типом “встроенное-здп", внешним типом и неограниченным типом символьных строк.

32.6 Для альтернативы "presentation-context-id" целочисленное значение должно быть идентификатором контекста представления в множестве определенных контекстов. Эта альтернатива не должна использоваться ни в запросе Р-CONNECT, ин в запросе P-ALTER-CONNECT для контекста представления, который предлагается для добавления или удаления этими примитивами запросов.

П р и м с ч а и и с — Даже если предлагается единственный синтаксис передачи для контекста представления в списке определении контекстов представления, альтернатива 'prescntalion-contexl-id" не может использоваться для контекста представления.

32.7 Альтернатива "context-negotiation" должна использоваться в запросах Р-CONNECT или в P-ALTER-CONNECT, а целочисленное значение должно быть идентификатором контекста представления. предложенного .тля добавления к множеству определенных контекстов. Идентификатор объекта "transfer-syntax" должен идентифицировать предложенный синтаксис передачи для того контекста представления, который используется для кодирования значения.

32.8 Нотация для значения типа "встроенное-здп" должна быть нотацией значения для ассоциированного типа, определенного в 32.5, где значение "data-value" ОСТЕ! SIRING представляет собой кодирование, использующее специфицированный в "identification" синтаксис передачи.

Embedded PdvValue :: = Sequence Value - - значение ассоциированного типа, определенного в 32.5.

32.9 При м е р 1 — Когда проектировщик приложения хочет, чтобы кодирование не зависело от любого окружения представления (и. следовательно, могло передаваться, храниться и вызываться без модификаций), необходимо запретить использование альтернатив "presentation-context-id" и "context-negotiation". Это может быть сделано следующим образом:

EMBEDDED PDV (WITH COMPONENTS {

identification (WITH COMPONENTS {

presentation-context-id ABSENT.

context-negotiation ABSENT })})

32.10 II p и m e p 2 — Если обязательно должна использоваться единственная альтернатива, например "syntaxes", то это может быть сделано следующим образом:

EMBEDDED PDV (WITH COMPONENTS {

identification (WITH COMPONENTS { syntaxes PRESENT })))

33 Нотация для внешнего типа

33.1 Внешний тип (см. 3.8.37) должен указываться нотацией "External! уре”:

ExtemalType :: = EXTERNAL

41

ГОСТ Р ИСО/М ЭК 8824-1-2001

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

33.3 Тип состоит из значений, представляющих:

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

б) идентификацию:

I) класса значений, содержащего это значение данных (абстрактного синтаксиса), и

2) кодирования, использованного для отличия этого значения данных от других того же класса (синтаксиса передачи), и

в) (факультативно) описатель объекта, который обеспечивает человекочитаемое описание класса значения данных. Факультативный описатель объекта может присутствовать, если только он явно допускается комментарием, связанным с использованием нотации Exiernal Гуре".

Примечание — Примечание I к 32.3 применяется так же и к внешнему типу.

33.4 Внешний тип имеет ассоциированный тип. Он используется для задания точного определения абстрактных значении внешнего типа и обеспечения нотации для его значения и подтипа.

Примечание — Правила кодирования могут определять различные тины, которые используются для производного кодирования, или могут специфицировать кодирования без ссылки на какой-либо ассоциированный тип. В частности, кодирование BER использует эквивалент типа "последовательность", идентичный тому, который присутствовал в определении внешнего типа в ГОСТ Р ИСО/МЭК 8824, и кодирование внешних значений с помощью BER не изменяется.

33.5 Ассоциированный тип для определения значения и подтипа, принимая окружение автоматического тегирования, имеет вил (с нормативными комментариями):

SEQUENCE| identification syntaxes abstract transfer

CHOICE {

SEQUENCE{

OBJECT IDENTIFIER.

OBJECT IDENTIFIER )

- - Идентификаторы объектов абстрактного синтаксиса и синтаксиса передачи

syntax OBJECT IDENTIFIER

- - Единственный идентификатор объекта для идентификации класса или

- - кодирования - -, presentation-context-id INTEGER

- - (Применяется только в среде ВОС)

- - Согласованный контекст уровня представления

- - идентифицирует класс значения и его кодирование - - , context-negotiation SEQUENCE (

presentation-context-id INTEG ER.

transfer-syntax OBJECT IDENTIFIER )

- - (Применяется только в среде ВОС)

- - Осуществляется процесс согласования контекста для идентификации класса

- - значения и его кодирования - -, transfer-syntax OBJECT IDENTIFIER

- - Класс значения (например спецификация того, что это значение типа АСН.1)

- - зафиксирован разработчиком приложения (и. следовательно, известен как

- - отправителю, так и получателю). Этот случай предназначен главным образом для - - обеспечения выборочного шифрования поля (или другого преобразования

- - кодирования) типа АСН.1 - -,

fixed NULL

- - Значение данных есть значение фиксированного типа АСН.1 (и. следовательно, - - известно как отправителю, так и получателю) - - ),

data-value-descriptor Object Descriptor OPTIONAL

- - Этим обеспечивается человекочитаемая идентификация класса значения - -.

data-value OCTET STRING)

42

ГОСТ Р ИСО/МЭК 8824-1-2001

(WITH COMPONENTS (

identification (WITH COMPONENTS {

syntaxes ABSENT,

transfer-syntax ABSENT,

fixed ABSENT DO

II римечание— Внешний тип не допускает включения альтернатив ’syntaxes", "transfer-syntax* и "fixed" для "identification*. Эти альтернативы нс могут быть допустимы для внешнею типа потому, что необходимо поддерживать обратную совместимость с ГОСТ Р ИСО/МЭК 8824. Проектировщики приложений, которым требуются эти альтернативы, должны использовать тип 'встроенное-ддп*. Определение ассоциированного типа отражает базовую общность, которая существует между типом "встроенное-зпд", внешним типом и неограниченным типом символьных строк.

33.6 Положения 32.6 и 32.7 применяются также и к внешнему типу.

33.7 Нотация для значения внешнего типа должна быть потайней значения для ассоциированного типа, определенного в 33.5, где значение "data-value” OCTET STRING представляет собой кодирование, использующее специфицированный в "identification" синтаксис передачи.

Externalvalue : : = SequenceValue - - значение ассоциированного типа, определенного в 33.5.

Примечание — По историческим причинам правила кодирования moivt передавать в EXTERNAL встроенные значения, кодирования которых не являются кратными 8 битам. Такие значения нс могут быть представлены в нотации значения, использующей ассоциированный тип.

34 Типы символьных строк

Эти типы состоят из строк символов из некоторого заданного символьного репертуара. Обычно определяют символьный репертуар и его кодирование с использованием ячеек одной или нескольких таблиц; каждая ячейка соответствует символу в репертуаре. Обычно каждой ячейке присвоены графический символ и имя символа, хотя в некоторых репертуарах ячейки оставлены пустыми или имеют имена, но не имеют представления (например ячейки с именами, но без представления, включают управляющие символы, как EOF в ИСО 646. и символы интервала, как THIN-SPACE и EN-SPACE в ИСО/МЭК 10646-1).

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

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

а) печатное представление символов в строке, использующее присвоенные графические символы. возможно, включая символы интервала; это нотация "cstring":

При м с ч а н п я

I Такое представление может оказаться двусмысленным, когда один и тот же графический символ используется для нескольких символов в репертуаре.

2 Такое представление может оказаться двусмысленным, когда используются символы интервала или спецификация печатается с использованием пропорционального шрифта;

6) перечень символов в значении символьной строки путем задания серий ссылок на значения АСН.1. которые были присвоены символам: множество таких ссылок на значения определено в модуле ASN1-CHARACTER-MODULE в разделе 37 для репертуаров символов ИСО/МЭК 10646-1 и IA5String: это представление не доступно для других символьных репертуаров, если только пользователь не определит такие ссылки на значения, используя нотацию, описанную в а) или в);

в) перечень символов в значении символьной строки путем идентификации каждого абстрактного символа позицией его ячейки в таблице репертуара символов; эта форма доступна только для lA5String. UniversalString, UTFSString и BMPString.

43

ГОСТ Р ИСО/М ЭК 8824-1-2001

35 Нотация для типов символьных строк

35.1 Нотацией для указания типа символьной строки (см. 3.8.11) должна быть Characterstring Гуре : : = RestrictedCharacterStringType |

UnrestrictedCharacterStringType "RestrictedCharacterStringType" является нотацией для ограниченного типа символьной строки и определена в разделе 36: "UnrestrictedCharacterStringType" является нотацией для неограниченного типа символьной строки и определена в 39.1.

35.2 Тег каждого ограниченного типа символьной строки определен в 36.1. Тег неограниченного типа символьной строки определен в 39.2.

35.3 Нотацией для значения символьной строки должна быть

CharacterstringViilue :: = RestrictedCharacterStringValue |

Unrest rictedCharacterStringValue

Нотация "RestrictedCharacterStringValue" определена в разделе 36.7. Нотация "UnrestrictedCharacter-StringValue" определена в 39.6.

36 Определение ограниченных типов символьных строк

В данном разделе определяются типы, значения которых ограничены последовательностями из нуля, одного или нескольких символов из некоторой заданной совокупности символов. Нотацией для указания ограниченного типа символьной строки должна быть "RestrictedCharacterStringType":

RestrictedCharacterStringType :: = BMPString |

GeneralString |

Graphicstring |

IA5String

ISO646String |

NumericString |

PrintableString

TeletexString |

T61 String

UniversalString |

UTF8Stnng

Videotexstring

VisibleString

Каждая альтернатива "RestrictedCharacterStringType" определяется заданием:

а) тега, присвоенного типу, и

б) имени (например NumericString), которым тип указывается, и

в) символами в совокупности символов, используемой в определении типа, путем указания таблицы, перечисляющей графические символы, или через ссылку на регистрационный номер в Международном регистре ИСО наборов кодированных символов, или через ссылку на ИСО/МЭК 10646-1.

36.1 В таблице 3 приведены имена, по которым ссылаются на ограниченные типы символьных строк, номера тегов универсального класса, присвоенные типам, определяющие регистрационные номера, таблицы или номера разделов настоящего стандарта и. при необходимости, идентифицированы примечания, относящиеся к строке таблицы. Когда в нотации определены синонимы, они приводятся в скобках.

И р и м с ч а н и с — Теги, присвоенные типам символьных строк, недвусмысленно идентифицируют тип. Однако если АСН.1 используется для определения новых типов из приведенных здесь (в частности, используя IMPLICIT), то будет невозможно распознать эти типы без знания определения АСН.1.

44

ГОСТ Р ИСО/МЭК 8824-1-2001

Т а б л и u а 3 — Перечень зарегистрированных типов символьных строк

Ими для ссыпки на тип

Номер гсгл умиверсаль' ною класса

Определяющий регистрпимонный номер*', помер ибн ины или раздела стандарта

Примечание

UTFSString

12

См. 36.13

NumericString

18

Таблица 4

1

PrintablcString

19

Таблица 5

1

TclctcxString (T61Stnng)

20

6. 87, 102, 103. 106. 107. 126. 144. 150. 15 3. 156. 164. 165. 168 + SPACE + DELETE

2

VidebtcxString

21

1. 13. 72. 73. 87. 89. 102. 108. 126. 128. 129, 144. 150. 153. 164. 165. 168 + SPACE + DELETE

3

lA5String

22

1.6 + SPACE + DELETE

Graphic St ri ng

25

Все графические наборы + SPACE

VtsibleString (lS0646Strin)

26

6 + SPACE

4

Ge neral Stnng

27

Все графические и символьные наборы + SPACE + DELETE

UnivcrxalSlring

28

См. 36.6

BMPStnng

30

См. 36.12

*' Определяющие регистрационные номера приведены в Международном регистре ИСО наборов кодированных символов, которые должны использоваться с Escape-последовательностями.

Примечания

1 Тип-стиль, размер, инет, интенсивность и прочие характеристики отображения нс существенны.

2 Записи, соответствующие этим рсгистраиноннным номерам, ссылаются на рекомендацию МСЭ-Т Г.61, содержащую правила их использования. Регистрационные записи 6 и 156 могуч использоваться вместо записей 102 и 103.

3 Записи, соответствующие этим регистрационным номерам, обеспечивают функциональные возможности Рекомендаций МСЭ-Т Т. 100 и Т. 101.

4 Указание регистрационного номера 6 Международного регистра ИСО наборов кодированных символов. которые должны использоваться с Ехсарс-последовательносгями. является неявным указанием ИСО 646. В этом состоит отличие от ГОСТ Р ИСО/МЭК 8824, где приводился регистрационный номер 2 (неявное указание на ИСО 646). В приложениях, где желательно применять регистрационный номер 2, следует использовать другие способы указания (например через неограниченные символьные строки (см. раздел 39)| для обращения к старому определению VisiblcString или к ГОСТ Р ИСО/МЭК 8824.

36.2 В таблице 4 приведены символы, которые могут появляться в типе NumericString. и их абстрактный синтаксис.

36.3 Следующие значения идентификатора и описателя объекта назначены для идентификации и описания абстрактного синтаксиса символов NumericString:

{joint-iso-itu-t asni (1) specification (0) characterstrings (1) numericString (0) ) и

“NumericString character abstract syntax"

T а б л и n a 4 — Гии NuincncStnng

Имя

Г рафическос прсдсинлсиие

Цифры

0. 1....9

Пробел

(пробел)

4-1-2112

45

ГОСТ Г ИСО/М ЭК 8824-1-2001

При м с ч а и и я

I Эго значение идентификатор объекта может использоваться в значениях CHARACTER STRING и в других случаях, когда необходимо передать идентификацию типа символьной строки отдельно от значения.

2 Значение абстрактного синтаксиса символов NumcricString может быть закодировано:

а) по одному из правил ИСО/МЭК 10646-1 для кодирования абстрактных символов. В этом случае синтаксис передачи символов идентифицируется идентификатором объекта, связанным с этими правилами в ИСО/МЭК 10646-1. приложение М;

б) по правилам кодирования АСН.1 для встроенного типа NumcricString. В этом случае синтаксис передачи символов идентифицируется значением идентификатора объекта { joint-iso-itu-t asnl (1) basic-encoding (I) }.

36.4 В таблице 5 приведены символы, которые могут появляться в типе PrintableString. и их абстрактный синтаксис.

Т а б л и н а 5 — Тип PrintableString

Имя

Г рвфичес кае представление

Имя

Графическое представление

Прописные буквы

А. В. ... 2

Запятая

*

Строчные буквы

а, Ь. ... z

Дефис

-

Цифры

0. 1. ... 9

Точка

Пробел

(пробел)

Наклонная черта

Апостроф

Двоеточие

Левая скобка

Знак равенства

=•

Правая скобка Знак плюс

+

Знак вопроса

36.5 Следующие значения идентификатора и описателя объекта назначены для идентификации и описания абстрактного синтаксиса символов PrintableString:

(joint-iso-itu-t asnl (1) specification (0) characterstrings (1) printableString (I) ) и

"PrintableString character abstract syntax"

П p и м с ч а н и я

I Это значение идентификатора объекта может использоваться в значениях CHARACTER STRING и в других случаях, когда необходимо передать идентификацию типа символьной строки отдельно от значения.

2 Значение абстрактного синтаксиса символов PrintableString может быть закодировано:

а) по одному из правил ИСО/МЭК 10646-1 для кодирования абстрактных символов. В этом случае синтаксис передачи символов идентифицируется идентификатором объекта, связанным с этими правилами в ИСО/МЭК 1(1646-1. приложение М;

б) по правилам кодирования АСН.1 для встроенного типа PrintableString. В этом случае синтаксис передачи символов идентифицируется значением идентификатора объекта (joint-isO-itu-t asnl(l) basic-encoding <01-

36.6 Символами, которые могут появляться в типе UniversalString. являются любые символы, допускаемые ИСО/МЭК 10646-1. а использование этого типа влечет за собой требования соответствия. специфицированные в ИСО/МЭК 10646-1. особенно относительно ограничений на использование зон ИСО/МЭК 10646-1.

П р и м е ч а н и я

I Использование этого типа без ограничений не рекомендуется, так как соответствие будет, в общем случае, нс практичным.

2 В разделе 37 определен модуль АСН.1. содержащий ряд подтипов этого типа для совокупности графических символов для подмножеств, определенной в приложении А к ИСО/МЭК 10646-1.

36.7 Нотацией значений для ограниченных типов символьных строк должна быть "cstring" (см. 11.11). "CharacterStringList", "Quadruple" или "Tuple". Нотация "Quadruple" допускается только для символьных строк длиной в один символ и может использоваться только в нотации значения для типов UniversalString. UTFSString или BMPString. Нотация "Tuple" допускается только для символьных строк длиной в один символ и может использоваться только в нотации значения для типа IA5String.

46

ГОСТ Р ИСО/МЭК 8824-1-2001

RestrictedCharacterStringValue :: = cstring | CharacterStringList | Quadruple | Tuple CharacterStringList:: = "Г CharSyms T

CharSyms :: = CharsDefn | CharSyms V CharsDefn

CharsDefn :: = cstring | DeiinedValue

Quadruple :: = T Group "," Plane V Row "," Cell T Group : : = number Plane :: = number Row :: = number Cell :: = number

Tuple : : = "(" TableColumn "," Table Row T TableColumn :: = number TableRow :: = number

П p и м с ч а н и я

I Нотация ’cstring" может использоваться только для среды, допускающей отображение графических символов, представленных в значении. Обратно, если среда не имеет таких возможностей, то единственным способом спецификации значения символьной строки, использующей такие графические символы, является нотация ’CharacterStringList*, только если тип есть UniversalString, UTFSString, BMPString или lASStnng: при этом для ’CharsDefn" используется альтернатива ’DefinedValue" (см. 37.1.2).

2 В разделе 37 определяется ряд ссылок "valuercfercnce". которые обозначают единичные символы (строки длиной I) типов BMPString (и. следовательно. UniversalString и UTFUSlring) и IA5Slnng.

П р и м с р — Допустим, что мы хотим снецифииировать значение "abcldef' для UniversalString. когда символ 1" не может быть представлен в доступной среде; это значение может быть выражено как: IMPORTS BasicLatin. grcekCapitalLcttcrSigma FROM ASNI-CHARACTER-MODULE

(joint-iso-itu-t asnl (I) specification (0) modules (0) isolt)646 (0)}; MyAtphabet : : “ UniversalString (FROM (BasicLatin | grcckCapitalLctterSigma)) mystring MyAtphabet : : = ("abc*, greekCapitalLctterSigma. "del")

3 При спецификации значения типа UniversalString. UTFSString или BMPString. нотация "cstring’ не должна использоваться, если двусмысленность, возникающая из-за различия графических символов с одинаковым представлением, не может быть разрешена.

П ример — Следующая нотация 'cstring" нс должна использоваться, так как графические символы ТГ, 'О‘. Р‘ и ’Е’ встречаются в алфавитах BASIC LATIN, CYRILLIC и BASIC GREEK и. следовательно, двусмысленны.

IMPORTS BasicLatin, Cyrillic, Basic-Greek FROM ASNl-CHARACTER-MODULE

(joinl-iso-itu-l asnl (I) specification (0) modules (0) isolU646 (0)}; MyAtphabet : : = UniversalString (FROM (BasicLatin | Cyrillic | BasicGreck» mystring MyAlphabct : : = "HOPE"

Альтернативным недвусмысленным определением “mystring" могло бы быть следующее: mystring MyAlphabet (BasicLatin) : : = "HOPE"

Формально "mystring" является ссылкой на значение подмножества "MyAlphabet", но она, по правилам отображения значений, приведенным в приложении F, может быть использована, когда необходима ссылка на значение в пределах “MyAlphabet".

36.8 Альтернатива “DefinedValue" в "CharsDefn" должна ссылаться на значение этого типа.

36.9 Число "number" в продукциях "Plane". "Row" и “Cell" должно быть меньше 256. а в продукции "Group" — меньше 128.

36.10 Продукция "Group" специфицирует группу в кодовом пространстве UCS, "Plane" - плоскость в группе. "Row" — строку в плоскости, a "Cell" — ячейку в строке. Абстрактный символ, идентифицированный этой нотацией, является абстрактным символом, специфицированным значениями "Group", "Plane", "Row" и "Cell". В любом случае множество допустимых значений может быть ограничено введением подтипа.

II римечание — Проектировщики приложений должны тщательно рассматривать соответствие, когда используют такие типы символьных строк с открытым завершением, как GcneralSlring. GraphicStnng и UniversalString без ограничений. Тщательное рассмотрение соответствия необходимо и для ограниченных, но длинных типов строк, таких как TeletcxString.

36.11 Число "number" в продукции TableColumn" должно быть от нуля до семи, а в продукции "TableRow" — от нуля до пятнадцати. "TableColumn" задает столбец, a "TableRow" — строку в кодовой таблице в соответствии с рисунком 1 ИСО/МЭК 2022. Эта нотация используется только для IA5String. когда кодовая таблица содержит регистрационную запись 1 в столбцах 0. I и регистрационную запись 6 в столбцах 2—7 (см. Международный регистр ИСО наборов кодированных символов, которые должны использоваться с Escape-последовательностями).

4-Г

47

ГОСТ Р ИСО/М ЭК 8824-1-2001

36.12 BMPString является подтипом UniversalString, который имеет свой собственный уникальный тег и моделирует основную многоязычную плоскость (первые 64К — 2 ячеек) ИСО/МЭК 10646-1. Он имеет ассоциированный тип. определенный как:

UniversalString (Bmp)

где Bmp определяется в модуле ACH.I ASN1-CHARACTER-MODULE (см. раздел 37) как подтип UniversalString. соответствующий совокупности имен "BMP", определенной в ИСО/МЭК 10646-1. приложение Л.

При м с ч а н и я

I Так как BMPString является встроенным типом, то он не определяется и ASNI-CHARACTER-MODULE.

2 Целью определения BMPString как встроенного типа является предоставление возможности по правилам кодирования (таким как BER). которые не учитывают ограничения, использовать 16-битовое. а не 32-битовое кодирование.

3 В нотациях значений BMPStnng допустимы значения UniversalString и UTFSStnng.

36.13 На абстрактном уровне UTFSStnng является синонимом UniversalString и может применяться всякий раз, когда используется UniversalString (подчиняясь правилам, требующим различия тегов), но имеет другой тег и тип.

Примечание — Его кодирование отличается от кодирования UniversalString и в большинстве случаев будет менее длинным.

37 Наименование символов и совокупностей, определенных в ИСО/МЭК 10646-1

В настоящем разделе специфицирован встроенный модуль АСН. 1. который содержит определения ссылочных имен значений для всех символов ИСО/МЭК 10646-1, и каждое имя указывает значение UniversalString пиной 1. Этот модуль также содержит определения ссылочных имен типов для всех совокупностей символов ИСО/МЭК 10646-1. и каждое имя указывает подмножество UniversalString.

П р и м с ч а нис — Эти значения доступны для использования в нотациях значений типа UniversalString и типов, полученных из него. Все ссылки на типы и значения, определенные в модуле, специфицированном в 37.1. являются экспортируемыми и должны быть импортированы любым использующим их модулем.

37.1 Спецификация модуля ACH.I "ASN 1-CHARACTER-MODULE*’

Данный модуль не приводится здесь полностью. Вместо этого специфицирован способ, которым он определяется.

37.1.1 Модуль начинается следующим образом:

ASN 1-CHARACTER-MODULE {joint-iso-itu-t asn! (I) specification (0) modules (0) iso!0646 (0)) DEFINITIONS : : = BEGIN

- - Все ссылки на значения и типы, определенные в данном модуле, являются

- - экспортируемыми и могут быть импортированы любым модулем.

- - Управляющие символы ИСО 646:

nul IA5String : : = {0, 0}

soli lASString : : = {0, 1}

six lASString : : = {0, 2}

etx lASString : : = io, 3}

eot lASString : : = {0. 4}

enq lASString : : = io, 5}

ack lA5String : : = io, 6}

bel lASString : : = {0. 7}

bs lASString : : = {0. 8}

lit lASString : : = io, 9}

If lASString : : = {0, 10)

vt lASString : : = io. 11}

ff lASString : : = {0, 12}

cr lASString : : = {0, 13}

so lASString : : = io, 14}

si lASString : : = io, 15}

die lASString : : = (1. 0}

48

ГОСТ Р ИСО/МЭК 8824-1-2001

del lASString : : = {L If

dc2 lASString : : = {I. 2}

dc3 lASString : : = {1, 3}

dc4 lASString : : = {I. 4}

nak lASString : : = {1. 5}

syn IA5String : : = {1, 6}

etb lASString : : = {1, 7}

can lASString : : = {1. 8}

em lASString : : = |1.9|

sub lASString : : = {1, 10}

esc lASString : : = {1, 11}

is4 lASString : : = {I. 12}

is3 lASString :: = {), 13}

is2 lASString : : = <1. 14}

isl lASString : : = {1. 15}

del lASString : : = {7, 15}

37.1.2 Для каждой записи в каждом списке имен для графических символов (глифов), показанных в разделах 24 и 25 ИСО/МЭК 10646-1, модуль содержит утверждение вида:

<namedcharacter> BMPString : : = <tablecell>

- - представляет символ <iso!0646name>, см. ИСО/МЭК 10646-1,

где: a) <iso!0646name> — имя символа, полученное из перечисленных в ИСО/МЭК 10646-1;

б) <namedcharacter> — строка, полученная применением к <iso!0646name> процедур, установленных в 37.2;

в) <tablecell> — глиф в ячейке таблицы в ИСО/МЭК 10646-1. соответствующей записи списка.

П р и м е р

latinCapitalLetterA BMPString : ; = (0. 0. 0. 65)

- - представляет символ LATIN CAPITAL LETTER Л. см. ИСО/МЭК 10646-1 greekCapitalLetterSigma BMPString :: = {0, 0. 3, 145}

- - представляет символ GREEK CAPITAL LEITER SIGMA. см. ИСО/МЭК 10646-1.

37.1.3 Для каждого имени совокупности графических символов, определенной в ИСО/МЭК 10646-1. приложение А. в модуль включается утверждение вида:

<namedcollectionstring> : : = BMPString

(EROM (<alternativelist>))

- - представляет совокупность символов <collectionstring>,

--см. ИСО/МЭК 10646-1.

где a) <collectionstring> - имя совокупности, присвоенное в ИСО/МЭК 10646-1;

б) <namedcollectionstring> - образовано применением к <collectionstring> процедуры 37.3;

в) <alternative!ist> - образуется с использованием <namedcharacter>, как описано в 37.2, для каждого символа, определенного в ИСО/МЭК 10646-1.

Результирующая ссылка на тип. <namedcollectionstring>, образует ограниченное подмножество (см. руководство в приложении D).

II ри м е ч а и и е — Ограниченное подмножество является списком символов в заданном подмножестве. Противоположность ему — выбранное подмножество, которое является совокупностью символов, перечисленных в ИСО/МЭК 10646-1. приложение А. плюс совокупность BASIC LATIN.

II р и м е р (частичный):

space BMPString : : = (0. 0, 0, 32}

exclamation Mark BMPString : : = {0. 0, 0. 33}

quotationMark BMPString : : = (0. 0. 0. 34)

--и так далее

tilde BMPString : : = 10. 0, 0. 126}

BasicLatin : : = BMPString

(FROM (space

| exclamation Mark

49

ГОСТ Р ИСО/М ЭК 8824-1-2001

IquotationMark

|... - - и так далее

| tilde)

- - представляет совокупность символов BASIC LATIN, см. ИСО/МЭК 10646-1.

- - Многоточия в этом примере используются для краткости и означают

- - "и так далее";

- - их нельзя использовать в реальном модуле ЛСН.1.

37.1.4 В ИСО/МЭК 10646-1 определены три уровня реализации. По умолчанию все типы, определенные в модуле ASN1-CHARACTER-MODULE, за исключением "Level Г и "Level2", соответствуют реализации уровня 3. так как эти типы не имеют ограничений на использование комбинированных символов. "LevelГ указывает, что требуется реализация уровня I. "Level?" — уровня 2. а "Level3" — уровня 3. Таким образом, в ASNI-CHARACTER-MODULE определено следующее:

Level 1 : : = BMPStnng (FROM (ALL EXCEPT CombiningCharactere»

Level2 :: = BMPString (FROM (ALL EXCEPT CombiningCharactereB-2))

Level3 : : = BMPString

При м с ч а и и я

I ’ConibiningCharactcrs" и "CombiningCharactcrsB-2' являются ссылками <namcdcolkctionstring>. удовлетворяющими совокупностям "COMBINING CHARACTERS" и "COMBINING CHARACTERS В-2", соответственно. определенным в ИСО/МЭК 10646-1, приложение А.

2 "Lcvcll" и 'Level?" используются либо следом за "IntcrscctionMark" (см. раздел 46), либо как единственное ограничение и "ConstraintSpcc". Примеры см. в С.2.7.1.

3 Дополнительную информацию см. в D.2.5.

37.1.5 Модуль завершается утверждением:

END

37.1.6 Определяемых» пользователем эквивалентом примера 37.1.3 является:

BasicLatin :: = BMPString (FROM (space .. tilde))

- - представляет совокупность символов BASIC LATIN, см. ИСО/МЭК 10646-1.

3 7.2 <namedcharacter> является строкой, полученной из <isol0646name> (см. 3 7.1.2) применением следующего алгоритма:

а) каждая прописная буква <isol0646nanie> преобразуется в соответствующую строчную букву. если только прописной букве не предшествует символ SPACE: в этом случае прописная буква остается неизменной;

б) каждая цифра и символ HYPHEN-MINUS остаются неизменными:

в) каждый символ SPACE удаляется.

Примем а н и е — Приведенный алгоритм, вместе с руководством по наименованию символов в приложении К ИСО/МЭК 10646-1, всегда приведет к недвусмысленной нотации значения для любого имени символа, приведенного в ИСО/МЭК 10646-1.

II ример — Символ ИСО/МЭК 10646-1 в строке 0, ячейке 60. который назван "LESS-THAN SIGN" и имеет графическое представление "<’, может быть указан с использованием "DetinedValue" less-thanSign

37.3 <namedcollectionstring> является строкой, полученной из <collectionstring> применением следующего алгоритма:

а) каждая прописная буква в имени совокупности ИСО/МЭК 10646-1 преобразуется в соответствующую строчную букву, если только прописной букве не предшествует символ SPACE или она не является первой буквой в имени; в этом случае прописная буква остается неизменной;

б) каждая цифра и символ HYPHEN-MINUS остаются неизменными:

в) каждый символ SPACE удаляется.

Примеры

I Совокупность, идентифицированная в приложении Л ИСО/МЭК 10646-1 как BASIC LATIN

имеет ссылку на тип ЛСН.1

Basic Latin

2 Тип символьной строки, состоящий из символов совокупностей BASIC LAHN и BASIC ARABIC, может быть определен следующим образом:

50

ГОСТ Р ИСО/МЭК 8824-1-2001

My-Character-String:: = BMPString (FROM (BasicLatin I BasicArabic))

II p и м с ч a >i и с — Приведенная конструкция необходима потому, что более простая.

My-Character-String : : = BMPString (BasicLatin | BasicArabic) допускает лишь строки, состоящие целиком из символов либо BASIC LATIN, либо BASIC ARABIC, но не из их смеси.

38 Канонический порядок символов

38.1 Для создания подтипов с помощью "ValueRange" и возможности использования правил кодирования определен канонический порядок символов для UniversalString. BMPString. NumericString. PrintableString. VisibleString и lA5String.

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

38.3 Канонический порядок абстрактных символов определяется каноническим порядком их ячеек.

38.4 Для UniversalString канонический порядок ячеек определяется (см. ИСО/МЭК 10646-1) как:

256*(256*(128*(номер группы) + (номер плоскости)) + (номер строки)) + (номер ячейки)

Полный набор содержит ровно 128*256*256*256 символов. Конечные точки диапазонов "ValueRange" в нотациях "PermittedAlphabet" (или отдельных символов) могут быть заданы, используя либо ссылку на значение АСН. 1. определенную в модуле ASN I -CHARACTER-MODULE, либо (когда графический символ является недвусмысленным в контексте спецификации) графическим символом в "caring" (модуль ASN 1-CHARACTER-MODULE определен в 37.1). Невозможно задать ячейку в качестве конечной точки диапазона или идентифицировать отдельный символ, когда этой ячейке не присвоено имя символа или представление.

38.5 Для BMPString канонический порядок ячеек определяется (см. ИСО/МЭК 10646-1) как 256*(номер строки) + (номер ячейки)

Полный набор содержит ровно 256*256 символов. Конечные точки диапазонов "ValueRange" в нотациях "PermittedAlphabet" (или отдельных символов) могут быть заданы, используя либо ссылку на значение АСН.1, определенную в модуле ASNI-CHARACTER MODULE, либо (когда графический символ является недвусмысленным в контексте спецификации) графическим символом в "(String”. Невозможно задать ячейку в качестве конечной точки диапазона или идентифицировать отдельный символ, когда этой ячейке не присвоено имя символа или представление.

38.6 Для NumericString канонический порядок с возрастанием слева направо определяется (см. таблицу 4 в 36.2) как

(пробел) 0123456789

Полный набор содержит ровно 11 символов. Конечная точка диапазона "ValueRange" (или отдельные символы) может быть задана использованием графического символа в "cstring".

П р и м с ч а н и е — Этот порядок является тем же самым, что и порядок соответствующих символов в совокупности BASIC LATIN ИСО/МЭК 10646-1.

38.7 Для PrintableString канонический порядок с возрастанием слева направо определяется (см. таблицу 5 в 36.4) как

(пробел) (апостроф) (левая скобка) (правая скобка) (знак плюс) (запятая) (дефис) (точка) (наклонная черта) 0123456789 (двоеточие) (знак равенства) (знак вопроса)

ABCDEFGHUKLMNOPQRSTUVWXYZabcdefghijklmnopqRtuvwxyz

Полный набор содержит ровно 74 символа. Конечная точка диапазона "ValueRange" (или отдельные символы) может быть задана использованием графического символа в "cstring".

Примечание— Этот порядок является тем же самым, что и порядок соответствующих символов в совокупности BASIC LATIN ИСО/МЭК 10646-1.

38.8 Для VisibleString канонический порядок ячеек определяется кодированием ИСО 646 (названным ISO 646 ENCODING) следующим образом:

(ISO 646 ENCODING) - 32

51

ГОСТ Р ИСО/М ЭК 8824-1-2001

П р и м с ч а н и с — Таким образом. канонический порядок тот же самый, что и для символов в ячейках 2/0—7/14 кодовой таблицы ИСО 646.

Полный набор содержит ровно 95 символов. Конечная точка диапазона "ValueRange" (или отдельные символы) могут быть заданы использованием графического символа в "cstring".

38.9 Для lASString канонический порядок ячеек определяется кодированием ИСО/МЭК 646 следующим образом:

(ISO 646 ENCODING)

Иодный набор содержит ровно 128 символов. Конечная точка диапазона "ValueRange" (или отдельные символы) может быть задана использованием графического символа в "cstring" или ссылкой на значение управляющего символа ИСО 646. определенной в 37.1.1.

39 Определение неограниченных типов символьных строк

В данном значении определяется тип. значениями которого являются значения любого символьного абстрактного синтаксиса. Абстрактный синтаксис может быть частью множества определенных контекстов в экземпляре соединения или может быть непосредственно указан для каждого экземпляра использования неограниченного типа символьной строки.

При м е ч а н и я

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

2 Профили, создаваемые сообществами по интересам, будут определять символьные абстрактные синтаксисы и синтаксисы передачи, которые должны поддерживаться для конкретных экземпляров или групп символьных строк. Будет принято включать ссылку на поддерживаемые синтаксисы в форму заявки о соответствии реализации протоколу. Группирование 'экземпляров для целей спецификации прикладного уровня может быть достигнуто использованием рахтичных ссылок на типы АСН.1 (все из которых должны быть ссылками на тип CHARACTER STRING).

39.1 Неограниченный тип символьных строк (см. 3.8.69) должен указываться нотацией "Unrest rictedCharacterStringType"

UnrestrictedCharacterStringType :: = CHARACTER SI RING

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

39.3 Тип состоит из значений, представляющих:

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

б) идентификацию (по отдельности или вместе):

I) класса значений, содержащего это значение символьной строки (символьный абстрактный синтаксис), и

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

39.4 Неограниченный тип символьных строк имеет ассоциированный тип. который используется для обеспечения нотаций значения и подтипа для этого типа.

39.5 Ассоциированный тип для определения значения и подтипа, используя окружение автоматического тегирования, есть (с нормативными комментариями):

SEQUENCE 1 identification syntaxes

CHOICE {

SEQUENCE{

abstract OBJECT IDENTIFIER,

transfer OBJECT IDENTIFIER )

- - Идентификаторы объектов абстрактного синтаксиса и синтаксиса передачи

syntax OBJECT IDENTIFIER

- - Идентификатор объекта для класса кодирования - -, prese nt at ion - context - id INTEGER

- - (Применяется только в среде ВОС)

- - Согласованный контекст представления идентифицирует класс значения и его

- - кодирование - - , context-negotiation

SEQUENCE(

52

ГОСТ Р ИСО/МЭК 8824-1-2001

presentation-context-id INTEGER.

transfer-syntax OBJECT IDENTIFIER )

- - (Применяется только в среде ВОС)

- - Идет процесс согласования контекста для идентификации класса значения и его

- - кодирования - -.

transfer-syntax OBJECT IDENTIFIER

- - Класс значения (например спецификация того, что оно является значением типа ЛСН.1) - - зафиксирован проектировщиком приложения (и, следовательно, известен как - - отправителю, так и получателю). Этот случай предназначен главным образом для

- - поддержки выборочного-шифрования-полей (или других преобразований кодирования) - - типов ЛСН.1 - - ,

Fixed NULL

--Значение данных является значением фиксированного типа ЛСН.1 (и, следовательно, - - известно как отправителю, так и получателю) - - ), data-value-descriptor Object Descriptor OPTIONAL

- - Обеспечивает человекочитаемую идентификацию класса значения - -.

string-value OCTET STRING)

(WITH COMPONENTS {

data-value-descriptor ABSENT))

Примечание — Неограниченный тип символьных строк не допускает включения значения ’data-value-dcscnptor’ вместе с "identification". Однако определение ассоциированного типа отражает базовую общность. которая существует между типом "встросннос-зпд", внешним типом и неограниченным типом сим-нильных строк.

39.6 Нотация значения должна быть нотацией значения для ассоциированного типа, в кото-рой значение '■string-value" OCTET STRING представляет собой кодирование, использующее синтаксис передачи, специфицированный в “identification".

UmestrictedCharacterStringValue :: = Sequencevalue

- - значение ассоциированного типа, определенного в 39.5

39.7 Пример неограниченного типа символьных строк приведен в С.2.8.

40 Нотация для типов, определенных в разделах 41—43

40.1 Нотацией для ссылки на типы, определенные в разделах 41-43. должна быть:

UsefulType : : = typereference

где ссылка "typereference' является одной из определенных в разделах 41-43 с использованием нотации АСН.1.

40.2 Теги типов "UsefulType" определены в разделах 41—43.

41 Обобщенное время

41.1 Этот тип должен указываться именем

GeneralizedTime

41.2 Тип состоит из значений, представляющих:

а) календарную дату, как определено в ИСО 8601, и

б) время дня с любой точностью, определенной в ИСО 8601, за исключением значения часов 24. которое не должно использоваться, и

в) местную поправку часов, как определено в ИСО 8601.

41.3 Тип определяется, используя ЛСН.1. следующим образом:

GeneralizedTime : : =

(UNIVERSAL 24| IMPLICIT VisibleString

со значениями VisibleString. ограничивающимися строками символов, которые являются либо:

а) строкой, представляющей календарную дату, как определено в ИСО 8601, с четырехзначным представлением года, двузначными представлениями месяца и дня. без использования разделителей, с последующей строкой, представляющей время дня. как определено в ИСО 8601, без

53

ГОСТ Р ИСО/М ЭК 8824-1-2001

разделителей, отличных от десятичной запятой и десятичной точки (как установлено в ИСО 8601), и без завершающего Z (как установлено в ИСО 8601), либо

б) символами из перечисления а) с последующей прописной буквой Z. либо

в) символами из перечисления а) с последующей строкой, представляющей местную поправку часов, как определено в ИСО 8601. без разделителей.

В случае а) время представляет местное время. В случае б) время представляет всемирное время. В случае в) часть строки, сформированная как в случае а), представляет местное время Ц), а местная поправка часов (/,) позволяет определить всемирное время следующим образом:

всемирное время равно /( — /

Пример ы:

Случай а)

“19851106210627.3“

представляет местное время 21 ч 6 мин и 27,3 с 6 ноября 1985 г.

Случай б)

“198511062)0627.3Z"

представляет указанное выше всемирное время.

Случай в)

“1985IIO621O627.3—O5OO"

представляет местное время как в случае а) с отставанием на 5 ч от всемирного времени.

41.4 Тег определен в 41.3.

41.5 Нотацией значения должна быть нотация значения VisibleString. определенная в 41.3.

42 Всемирное время

42.1 Этот тип должен указываться именем

UTCTime

42.2 Тип состоит из значений, представляющих:

а) календарную дату,

б) время дня с точностью до минуты или секунды и

в) (факультативно) местную поправку часов.

42.3 Тил определяется, используя АСН.1. следующим образом:

UTCTime :: = I UNIVERSAL 231 IMPLICIT VisibleString

со значениями VisibleString. ограничивающимися строками следующих символов:

а) шесть цифр YYMMDD, где YY — две последние цифры года. ММ - двузначное представление месяца (считая январь 01), DD — двузначное представление дня (от 01 до 31), и

б) либо

1) четыре цифры hhmm. где hh — часы (от 00 до 23). а mm — минуты (от 00 до 59). либо

2) шесть цифр hhmmss. где hh и mm — как в случае 1). a ss - секунды (от 00 до 59), и

в) либо

1) символа Z. либо

2) одного из символов “+" или “—" с последующими цифрами hhmm, где hh — часы, a mm — минуты.

Альтернативы в случае б) позволяют варьировать точность представления времени.

В альтернативе в)1) время является всемирным. В альтернативе в)2) время Ц). заданное в а) и б), является местным; поправка часов (/,), заданная альтернативой в)2), позволяет определить всемирное время следующим образом:

всемирное время равно /( — /,

Пример I — Если местное время - 7 ч 2 января 1982 г., а всемирное — 12 ч, то значением UTCTime является либо

"82OIO212OOZ"

либо

“8201020700-0500"

П р и м е р 2 — Если местное время — 7 ч 2 января 2001 г., а всемирное — 12 ч, то значением UTCTime является либо

“O1OIO212OOZ”

54

ГОСТ Р ИСО/МЭК 8824-1-2001

либо

“0101020700-0500"

42.4 Тег определен в 42.3.

42.5 Нотацией значения должна быть нотация значения VisibleString. определенная в 42.3.

43 Тип "описатель объекта"

43.1 Этот тип должен указываться именем

Object Descriptor

43.2 Тип состоит из человекочитаемых текстов, которые служат для описания объектов. Текст не является недвусмысленной идентификацией объекта, но подразумевается, что идентичный текст для разных объектов есть что-то необычное.

Примечание— Рекомендуется, чтобы уполномоченные по присвоению объектам значений типа "OBJECT IDENTIFIER" присваивали также значения типа "ObjectDescriptor" этим объектам.

43.3 Тип определяется, используя АСН.1. следующим образом:

Object Descriptor :: = (UNIVERSAL 7] IMPLICIT Graphicstring Строка "Graphicstring" содержит текст, описывающий объект.

43.4 Тег определен в 43.3.

43.5 Нотацией значения должна быть нотация значения GiaphicString. определенная в 43.3.

44 Ограниченные типы

44.1 Нотация "Constrained! уре" позволяет применять ограничение к (порождающему) типу, либо ограничивая его множество значений некоторым подтипом порождающего типа, либо (в типах "множество" или "последовательность") задавая, что отношения между компонентами применяются к значениям порождающего типа и значениям некоторого другого компонента в том же самом значении множества или последовательности. С ограничением может быть ассоциирован идентификатор исключения.

Const га inedType : : =

Type Constraint |

TypeWithConstraint

В первой альтернативе порождающий тип есть "Туре”, а ограничение задается "Constraint", как определено в 44.5. Вторая альтернатива определена в 44.4.

44.2 Когда нотация "Constraint" следует за нотацией типа "множество-из" или "последователь-ностъ-из", то она применяется к типу "Туре" в (самой внутренней) нотации "множество-из" или "последовательность-из", а не к типу “множество-из" или "последовательность-из".

II р и м е ч а н и с — Например следующее ограничение "(S1ZE(I ..64))" применяется к VisibleString. а не к SEQUENCE OF:

NamcsOIMemberNations : : = SEQUENCE OF VisibleString <SIZE( 1..64))

44.2.1 Когда нотация "Constraint" следует за нотацией селективного типа, она применяется к выборочному типу, а не к типу выбранной альтернативы.

Примечание — В следующем примере ограничение (WITH COMPONENTS (.... a ABSENT)) применяется к тину CHOICE, а нс к выбранному типу SEQUENCE (см. 29.1 bis).

Т::- CHOICE!

a SEQUENCE {

a INTEGER OPTIONAL.

b BOOLEAN

L

b NULL

V :: - a < T (WITH COMPONENTS {..., a ABSENT})

44.3 Когда нотация "Constraint" следует за нотацией "TaggedType", то интерпретация всей нотации одна и та же. независимо от того, рассматривается ли "TaggedType" или "Туре" в качестве порождающего типа.

55

ГОСТ Р ИСО/М ЭК 8824-1-2001

44.4 Как следствие интерпретации, установленной в 44.2, специальная нотация обеспечивается для того, чтобы ограничение применялось к типам "множество-и Г или "последовательность-из". Это нотация TypeWithConstraint":

TypeWithConstraint:: =

SET Constraint OF Гуре |

SET SizeConstraint OF Type |

SEQUENCE Constraint OF Type |

SEQUENCE SizeConstraint OF Type

В первой и второй альтернативах порождающий тип есть "SET OF Туре”, а в третьей и четвертой — "SEQUENCE OF Туре”. В первой и третьей альтернативах ограничение есть "Constraint" (см. 44.5). а во второй и четвертой — "SizeConstraint" (см. 48.5).

Примечание — Хотя альтернативы "Constraint" включают соответствующие альтернативы "SizeConstraint", последние, нс взятые в скобки, введены для обратной совместимости с ГОСТ Р ИСО/МЭК 8824.

44.5 Ограничение специфицируется нотацией "Constraint":

Constraint :: = “(" ConstraintSpec ExceptionSpec ")"

ConstraintSpec :: =

SubtypeConstraint |

GeneralConstraint

Продукция "ExceptionSpec” определяется в разделе 45. Если она не используется вместе с маркером расширения (см. раздел 47), то должна присутствовать только в том случае, когда продукция "ConstraintSpec" включает в себя ссылку "DummyReference" (см. ИСО/МЭК 8824-4. 8.3) или является ограничением "UserDefinedConstraint" (см. ИСО/МЭК 8824-3. раздел 9).

44.6 Нотация "SubtypeConstraint" является нотацией общего назначения "ElementSetSpec" (раздел 46):

SubtypeConstraint: : = ElementSetSpec

В данном контексте элементы являются значениями порождающего типа (управляющим множеством элементов является порождающий тип). В множестве должен быть по крайней мере один элемент.

45 Идентификатор исключения

45.1 В сложной спецификации АСН.1 имеется ряд мест, где существенно распознавать, что декодеры должны обрабатывать материал, который не полностью специфицирован. Такие случаи возникают, в частности, при использовании ограничения, которое определено с использованием параметра абстрактного синтаксиса (см. ИСО/МЭК 8824-4. раздел 10).

45.2 В таких случаях проектировщик приложения нуждается в идентификации действий, которые должны быть предприняты, когда нарушается некоторое зависящее от реализации ограничение. Идентификатор исключения обеспечивает недвусмысленный способ указания частей спецификации АСН.1, чтобы выделить действия, которые должны быть предприняты. Идентификатор состоит из символа ”!" с последующим факультативным типом АСН.1 и значением этого типа. При отсутствии типа в качестве типа значения принимается INTEGER.

45.3 Если присутствует продукция "ExceptionSpec". то она указывает, что в стандарте имеется текст, говорящий о том. как обрабатывать нарушение ограничения, связанное с "!". Если она отсутствует, то реализаторы будут вынуждены либо идентифицировать текст, описывающий действия, которые необходимо предпринять, либо предпринимать зависящие от реализации действия, когда встретиться нарушение ограничения.

45.4 Нотация "ExceptionSpec" определяется следующим образом:

ExceptionSpec :: = "Г Exceptionidentification | empty

Exceptionidentification : : = SignedNumber |

DeiinedValue

Type “:" Value

Первые две альтернативы обозначают идентификаторы исключения целочисленного типа. Третья альтернатива обозначает идентификатор исключения ("Value") произвольного типа ("Туре").

56

ГОСТ Р ИСО/МЭК 8824-1-2001

45.5 Когда для типа установлен ряд ограничений, несколько из которых имеют идентификаторы исключений, идентификатор исключения самого внешнего ограничения должен рассматриваться как идентификатор исключения этого типа.

45.6 когда для типов, используемых в арифметических установках, присутствует маркер расширения. идентификатор исключения игнорируется и не наследуется типом, ограниченным в результате арифметической установки.

46 Спецификация множества элементов

При осуществлении арифметической установки, включающей ограничения подтипа и множества значений, в этой установке используются только абстрактные значения, определенные корнем расширения. Все экземпляры нотации значения (включая ссылки на значения), используемые в этих ограничениях, обязательно относятся к абстрактному значению корня расширения. Если на самом внешнем уровне "ElemeniSetSpecs" нет маркера расширения, то результат арифметической установки не является расширяемым типом.

При осуществлении арифметической установки, включающей множества информационных обьектов. все информационные объекты (а не только в корне расширения) используются в этой установке. Если какое-либо множество информационных объектов, относящееся к арифметической установке, является расширяемым или на самом внешнем уровне "ElemeniSetSpecs" есть маркер расширения, то результат арифметической установки является расширяемым типом.

46.1 В некоторых нотациях может быть специфицировано множество элементов некоторого идентифицированного класса элементов (управляющего). В таких случаях используется нотация "ElemeniSetSpecs":

ElemeniSetSpecs: : =

Root ElementSetSpec |

RootElementSetSpec ”." "..." |

RootElementSetSpec ”,“"..." "," AdditionalElementSetSpec

RootElementSetSpec : : = ElementSetSpec

AdditionalElementSetSpec : : = ElementSetSpec

ElementSetSpec : : = Unions (

ALL Exclusions

Unions :: = Intersections |

UElems UnionMark Intersections

UElems :: = Unions

Intersections: : = Intersection Elements |

lElems Intersection Mark Intersection Elements

lElems :: = Intersections

IntersectionElements :: = Elements | Elems Exclusions

Elems : : = Elements

Exclusions : : = EXCEPT Elements

UnionMark:: = T| UNION

IntersectionMark :: = " | INTERSECTION

П p и м с ч а и и я

I Символ "'”' и слово INTERSECTION — синонимы. Символ "f и слово UNION — синонимы. Рекомендуется. чтобы во всей спецификации использовались либо символ, либо слово. И в том. и в другом случае может использоваться слово EXCEPT.

2 Старшинство операторов от старших к младшим следующее: "EXCEPT". '"","|". "ALL EXCEPT" специфицировано так. что оно нс может чередоваться с другими ограничениями без использования скобок вокруг "ALL EXCEPT ххх' .

3 Всякий раз. когда встречается продукция ’Elements", может появиться либо ограничение без скобок (например INTEGER (I..4)), либо ограничение подтипа в скобках (например INTEGER (()..4|9))).

4 Два оператора "EXCEPT* должны разделяться или "|". "'", "Г. или ")". так что (A EXCEPT В EXCEPT С) не допускается; оно должно быть заменено на ((A EXCEPT В) EXCEPT С) или на (A EXCEPT (В EXCEPT С)).

5 Отмстим, что ((A EXCEPT В) EXCEPT С) - то же самое, что и (A EXCEPT (В | С)).

6 Элементы, которые указываются "ElemeniSetSpecs". являются объединением элементов, указанных "RootElementSetSpec" и "AdditionalElementSetSpec'.

57

ГОСТ Г ИСО/М ЭК 8824-1-2001

46.2 Элементами, образующими множество, являются:

а) если в "ElementSetSpec" выбрана первая альтернатива, - то специфицированные в "Unions* |см. б)|. в противном случае — все элементы управляющего, за исключением специфицированных в нотации "Elements" для "Exclusions":

б> если в "Unions" выбрана первая альтернатива, — то специфицированные в "Intersections" |см. в)|. в противном случае — элементы, специфицированные по крайней мере один раз в "UElenis" пли в "Intersections";

в) если в "Intersections" выбрана первая альтернатива, — то специфицированные в "Intersection-Elements’ [см. г)|, в противном случае — элементы из специфицированных продукцией "lElems", которые так же специфицированы и продукцией "IntersectionElements";

г) если в "IntersectionElements" выбрана первая альтернатива. — то специфицированные в "Elements", в противном случае — элеметы, которые специфицированы в "Elems", за исключением специфицированных в "Exclusions".

46.3 Нотация "Elements” определяется следующим образом:

Elements ; : =

SubtypeElements |

ObjectSet Elements |

"(" ElementSetSpec ")"

Элементами, специфицированными этой нотацией, являются:

а) определенные в разделе 48, если используется альтернатива “SubtypeElements". Эта нотация должна использоваться только в том случае, когда управляющий является типом, а фактически участвующий тип будет ограничиваться далее возможностями нотации. В этом контексте управляющий называется порождающим типом;

6) определенные в ГОСТ I’ ИСО/МЭК 8824-2, 12.6, если используется нотация "Object-SetElements". Эта нотация должна использоваться только в том случае, когда управляющий является классом информационных объектов;

в) специфицированные нотацией "ElementSetSpec". если используется последняя альтернатива.

47 Маркер расширения

П р и м с ч а н и с — Как к любая нотация ограничения, маркер расширения не влияет на одни правила кодирования АСН.1, такие как базовые правила кодирования, но влияет на другие, такие как упаковывающие правила кодирования.

47.1 Маркер расширения (многоточие) является указанием того, что ожидаются расширяющие дополнения. Он fie делает каких-либо утверждений о том. как должны обрабатываться такие расширения, а только указывает, что при декодировании они не должны трактоваться как ошибка.

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

47.3 Результат арифметической установки, включающей ограничения подтипа, множества значений или множества объектов, которые являются расширяемыми, описан в разделе 46.

47.4 Если в "ContainedSubtype" указан тип. определенный с расширяемым ограничением, то вновь определяемый тип не наследует маркер расширения и его расширяющие дополнения. Если вновь определяемый тип должен быть расширяемым, то маркер расширения должен быть добавлен к его "ElementSetSpecs" явным образом. Например:

Л :: = INTEGER (0..I0,..., 12) - - Л - расширяемый

В :: = INTEGER (Л) - - В — нерасширяемый и ограничен до (0—10)

С :: = INTEGER (А,...) - - С — расширяемый и ограничен до (0—10)

47.5 Если тип, определенный с расширяемым ограничением, ограничивается далее нотацией "ElementSetSpecs". которая не содержит маркер расширения, то ограничение получающегося типа

58

ГОСТ Р ИСО/МЭК 8824-1-2001

нерасширяемое, а тип не наследует никаких расширяющих дополнений, которые могут присутствовать в порождающем типе. Например:

А:: = INTEGER (0..10, ...) - - Л — расширяемый

В :: = А (2.-5) - - В — нерасширяемый

С :: = А - - С — расширяемый

47.6 Компоненты типов "множество", "последовательность" и "выбор", которые, согласно ограничению. должны отсутствовать, не могут присутствовать даже в том случае, когда тип "множество". "последовательность" или "выбор" является расширяемым.

Примечание — Внутренние ограничения типа не влияют на расширяемость.

Например:

А::=SEQUENCE{

a INTEGER

b BOOLEAN OPTIONAL

В : : = A (WITH COMPONENTS [b ABSENT}) - - В - расширяемый, но b' - - не должен присутствовать ни в каком его значении.

47.7 Когда настоящий стандарт требует различия тегов (см. 24.5. 24.6. 26.3 и 28.2), то до проведения проверки на единственность тегов должно быть осуществлено следующее преобразование.

47.7.1 Новый элемент или альтернатива (называемый "концептуально добавляемым элементом", см. 47.7.2) концептуально добавляется в точке вставки расширения, если:

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

б) имеется единственный маркер расширения в CHOICE. SEQUENCE или SET, и тогда новый элемент добавляется в конце CHOICE, SEQUENCE или SET непосредственно перед закрывающей скобкой, или

в) имеется два маркера расширения в CHOICE. SEQUENCE или SET и тогда новый элемент добавляется непосредственно перед вторым маркером расширения.

47.7.2 Этот концептуально добавляемый элемент служит исключительно для проверки правильности применения правил, требующих различия тегов (см. 24.5, 24.6. 26.3 и 28.2). Он концептуально добавляется после применения автоматического тегирования (если оно применяется) и раскрытия COMPONENTS OF.

47.7.3 Концептуально добавляемый элемент определяется как имеющий тег. который отличен от тегов всех обычных типов АСН.1, но который согласуется с тегами всех концептуально добавляемых элементов и с неопределенным тегом открытого типа, как специфицировано в ГОСТ I’ ИСО/ МЭК 8824-2, 14.2, примечание 2.

П р и м с ч а н и с — Правила, касающиеся единственное! и тегов относительно концептуально добавляемых элементов и открытого тина, вместе с правилами, требующими различия тегов (см. 24.5. 24.6. 26.3 и 28.2). являются необходимыми и достаточными, чтобы гарантировать, что:

а) любое неизвестное расширяющее дополнение может быть недвусмысленно приписано к единственной точке вставки при декодировании BER;

б) неизвестные расширяющие дополнения никогда не могут быть перепутаны с элементами OPTIONAL.

В PER эти правила достаточны, но не необходимы для гарантии указанных свойств. Тем не менее эти правила вводятся как правила АСН.1 для обеспечения независимости нотации от правил кодирования.

47.7.4 Если с этими концептуально добавленными элементами нарушаются правила, требующие различия тегов, то в спецификации была неправильно использована нотация расширения.

Примечание — Целью приведенных выше правил является установление точных ограничений, вытекающих из использования точек вставки (в частности, тех. которые не находятся в конце CHOICE, SEQUENCE или SET). Ограничения предназначены для того, чтобы гарантировать, что в BER, DER и CER можно неизвестный элемент, полученный системой версии I. недвусмысленно приписать конкретной точке вставки. Это важно, когда обработка расширений таких добавленных элементов различна для разных точек вставки.

59

ГОСТ Р ИСО/М ЭК 8824-1-2001

47.8 Примеры

47.8.1 Пример 1 А : : = SET {

а А.

b CHOICE | с С, d D.

Это допустимо потому, что нет двусмысленности, так как любой добавляемый материал должен быть частью "Ь".

47.8.2 П р и м е р 2

А : : = SET !

а А.

b CHOICE |

с С.

d D.

е Е

Это недопустимо потому, что добавление может быть частью "Ь" или быть на внешнем уровне "А", и система версии 1 не сможет решить, где оно находится.

47.8.3 II ример 3

А : : = SET !

а А,

b CHOICE {

с С.

I.

d CHOICE ( е Е

)

Это недопустимо потому, что добавление может быть частью "Ь" или "d“.

47.8.4 Могут быть построены и более сложные примеры с расширяемыми выборами в расширяемых выборах или с расширяемыми выборами в элементах последовательности, помеченных как OPTIONAL или DEFAULT, но приведенные выше правила необходимы и достаточны, чтобы гарантировать. что элемент, отсутствующий в версии 1. может быть недвусмысленно приписан системой версии I к ровно одной точке вставки.

48 Элементы подтипа

48.1 Общие положения

Для “SubtypeElements" обеспечивается ряд различных форм нотации. Они идентифицированы ниже, а их синтаксис и семантика определяются в последующих пунктах. В таблице 6 приведена сводка того, какие нотации к каким порождающим типам могут применяться.

60

Таблица 6 — Применимость множеств значений подтипов

ГОСТ Р ИСО/МЭК 8824-1-2001

Tun

Single Value

Contained Subtype

Value Range

Permitted Alphabet

SizeCon -М rain 1

ТуреСоп-strain!

Inner

ТурсСоп

Mraints

Битовая строка

Да

Да

Her

Да

Нет

Нет

Нет

Булевский

Да

Да

Her

Нет

Нет

Нет

Нет

Выборочный

Да

Да

Her

Нет

Нет

Нет

Да

Встросниос-здп

Да

Нет

Her

Нет

Нет

Нет

Да

Перечислимый

Да

Да

Her

Нет

Нет

Нет

Нет

Внешний

Да

Нет

Her

Нет

Нет

Нет

Да

Экземпляр-из

Да

Да

Her

Нет

Нет

Нет

Да

Целочисленный

Да

Да

Да

Нет

Нет

Нет

Нет

Вырожденный

Да

Да

Her

Нет

Нет

Нет

Нет

Поле класса объектов

Да

Да

Her

Нет

Нет

Нет

Нет

Идентификатор объекта

Да

Да

Her

Нет

Нет

Нет

Нет

Строка октетов

Да

Да

Hei

Да

Нет

Нет

Нет

Открытый

Нет

Нет

Her

Нет

Нет

Да

Нет

Вещественный

Да

Да

Да

Нет

Нет

Нет

Да

Ограниченный символьных строк

Да

Да

Да-

Да

Да

Нет

Нет

Последовательность

Да

Да

Her

Нет

Нет

Нет

Да

Последовательность-из

Да

Да

Her

Да

Нет

Нет

Да

Множество

Да

Да

Her

Нет

Нет

Нет

Да

Множество-из

Да

Да

Her

Да

Нет

Нет

Да

Неограниченный символьных строк

Да

Нет

Her

Да

Нет

Нет

Да

* Допустимо только в "PermittedAlphabet' для BMPString. LASString. NumcricString. PrintableString. VisiblcString и UniversalString.

Subtype Elements :: = Single Value ContainedSubtype Value Range PermittedAlphabet SizeConstraint

TypeConstraint 1 nnerTypeConstraints

5-1-2112

61

ГОСТ Р ИСО/М ЭК 8824-1-2001

48.2 Единственное значение

48.2.1 Нотация для единственного значения "SingleValue" должна бить:

Single Value : : = Value

где "Value" является нотацией значения для порождающего типа.

48.2.2 Нотация "SingleValue" специфицирует единственное значение порождающего типа, заданное "Value".

48.3 Содержащийся подтип

48.3.1 Нотация для содержащегося подтипа "ContainedSubtype" должна быть:

ContainedSubtype : : = Includes Type

Includes :: = INCLUDES | empty

Альтернатива "empty" для продукции "Includes" не должна использоваться, когда Туре" в "ContainedSubtype" является нотацией для вырожденного типа.

48.3.2 Нотация "ContainedSubtype" специфицирует все значения в порождающем типе, которые имеются и в Туре". Требуется, чтобы тип "Туре" был совместим с порождающим типом, как установлено в F.6.3.

48.4 Диапазон значений

48.4.1 Нотация для диапазона значении "ValueRange" должна быть:

ValueRange : : = LowerEndpoint ".." UpperEndpoint

48.4.2 Нотация "ValueRange" специфицирует все значения в диапазоне, который определяется заданием значений конечных точек диапазона. Эта нотация может применяться только для целочисленных и вещественных типов и некоторых ограниченных типов символьных строк PermittedAlphabet (только BMPString, IA5Siring. NumericString. PrintableString, VisibleString и UniversalString).

Примечание — При создании подтипов "PLUS-INFINITY* превышает все значения “Numeric Real", a "MINUS-INFINITY" меньше всех значений "NumericReal".

48.4.3 Каждая конечная точка диапазона является либо закрытой (в таком случае эта конечная точка задана), либо открытой (в таком случае эта конечная точка не задана). Для открытой точки спецификация включает символ "меньше чем" (”<"):

LowerEndpoint: : = LowerEndValue | LowerEndValue "<"

UpperEndpoint : : = UpperEndValue | "<" UpperEndValue

48.4.4 Конечная точка может быть не задана, в таком случае диапазон простирается в этом направлении настолько, насколько допускает порождающий тип:

LowerEndValue :: = Value | MIN

UpperEndValue :: = Value | MAX

П p и м с ч а и и с — Когда "ValueRange" используется как ограничение "PermittedAlphabet". "LowerEndValue" и "UpperEndValue* должны быть размером 1.

48.5 Ограничение размера

48.5.1 Нотация для ограничения размера “SizeConstraint" должна быть:

SizeConstraint : : = SIZE Constraint

48.5.2 Нотация "SizeConstraint" может применяться только к типам битовых строк, строк октетов. символьных строк, "множество-из" или "последовательность-из".

48.5.3 Продукция "Constraint" специфицирует допустимые целые значения для длины заданных значений и имеет вид любого ограничения, которое может применяться к следующему порождающему типу:

INTEGER (0.. МАХ)

Продукция "Constraint" должна использовать альтернативу "SubtypeConstraint" для "Constraint-Spec".

48.5.4 Единица измерения зависит от порождающего типа следующим образом:

Тип

Единица измерения

битовая строка

бит

строка октетов

октет

символьная строка

символ

множество-из

значение компонента

последовательность-из

значение компонента

62

ГОСТ Р ИСО/МЭК 8824-1-2001

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

48.6 Ограничение типа

48.6.1 Нотация ограничения типа "TypeConstraint" должна быть:

TypeConstraint:: = Туре

48.6.2 Эта нотация применяется только к нотации открытого типа и ограничивает открытый тип значениями Туре".

48.7 Допустимый алфавит

48.7.1 Нотация для допустимого алфавита TermiuedAlphabet" должна быть:

PermittedAlphabet:: = FROM Constraint

48.7.2 Нотация "PermittedAlphabet" специфицирует все значения, которые могут быть построены с использованием подалфавита порождающей строки. Эта нотация может применяться только для ограниченных типов символьных строк.

48.7.3 Ограничение "Constraint" является любым, которое может применяться для порождающего типа (см. таблицу 6). за исключением использующих альтернативу "SubtypeConstraint" для "ConstraintSpec". Подалфавит включает символы, появляющиеся водном или нескольких значениях порождающего типа строки, которые допускаются ограничением "Constraint".

48.8 Внутренние подтипы

48.8.1 Нотация для внутренних подтипов "InnerTypeConstraints’ должна быть: InnerTypeConstraints : : =

WITH COM PON ENT SingleTypeConstraint |

WITH COMPONENTS MultipleTypeConstraints

48.8.2 Нотация "InnerTypeConstraints" специфицирует только те значения, которые удовлетворяют совокупности ограничений на присутствие, и/или значения компонентов порождающего типа. Значение порождающего типа не специфицировано, если оно не удовлетворяет всем ограничениям, явно выраженным или подразумеваемым (см. 48.8.6). Эта нотация может применяться к выборочному типу, типам "множество-из", "последовательность-из", “множество" или "последовательность".

Примечание— Нотация "InnerTypeConstraints". применяемая к типу "множество" или "последовательность", игнорируется преобразованием COMPONENTS OF (см. 24.4 и 26.2).

48.8.3 Для типов, которые определены в терминах единственного другого (внутреннего) типа (“множество-из" и "последовательность-из"), ограничение принимает вид спецификации значения подтипа. Нотацией для такого случая является "Single TypeConstraint":

Single TyiKConstraint : : = Constraint

Ограничение "Constraint" определяет подтип единственного другого (внутреннего) типа. Значение порождающего типа специфицировано, если и только если каждое внутреннее значение относится к подтипу, полученному применением "Constraint" к внутреннему типу.

48.8.4 Для типов, которые определены в терминах нескольких других (внутренних) типов (выборочный. "множество" и "последовательность"), может быть несколько ограничений на эти внутренние типы. Нотацией для такого случая является "MultipleTypeConstraints":

MultipleTypeConstraints : : = FullSpecilication I PartialSpecilication

FullSpecification :: = “f TypeConstraints "}"

PartialSpecilication :: = "(“ "..." "," TypeConstraints T

TypeConstraints: : =

NamedConstraint |

NamedConstraint "," TypeConstraints

NamedConstraint:: =

identifier COmponentConstraint

48.8.5 Продукция "TypeConstraints" содержит список ограничений на типы компонентов порождающего типа. Для типа "последовательность" ограничения должны появляться упорядочено. Внутренний тип, к которому применяется ограничение, идентифицируется с помощью его идентификатора. Для данного компонента должно быть не более одной продукции “NamedConstraint".

s-r

63

ГОСТ Р ИСО/М ЭК 8824-1-2001

48.8.6 Нотация "Multi pleTypeConstraints" включает в себя либо нотацию "FullSpecification", либо нотацию "PartialSpecification". Когда используется "FullSpecification", подразумевается присутствие ограничения "ABSENT" на все внутренние типы, которые могут быть ограничены тем. что будут отсутствовать (см. 48.8.9) и не перечислены явно. Когда используется "PartialSpecification", то нет подразумеваемых ограничений, и любой внутренний тип может быть опущен из списка.

48.8.7 Конкретный внутренний тип может быть ограничен в терминах его присутствия (в значениях порождающего типа), его значения, или и того, и другого. Нотацией является "Componentconstraint’:

ComponentConstraint: : = ValueConstraint Presenceconstraint

48.8.8 Ограничение на значение внутреннего типа выражается нотацией "ValueConstraint":

ValueConstraint :: = Constraint | empty

Ограничение удовлетворяется значением порождающего типа только в том случае, если внутреннее значение относится к подтипу, заданному ограничением "Constraint", применяемым к внутреннему типу.

48.8.9 Ограничение на присутствие внутреннего типа должно быть выражено нотацией "Presenceconstraint":

Presenceconstraint:: = PRESENT | ABSENT | OPTIONAL | empty

Смысл этих альтернатив и ситуации, в которых они допустимы, определены в 48.8.9.1- 48.8.9.3.

48.8.9.1 Если порождающий тип является последовательностью или множеством, то тип компонента, помеченный "OPTIONAL”, может быть ограничен как "PRESENT" (и в этом случае ограничение удовлетворяется тогда и только тогда, когда соответствующее значение компонента присутствует) или как "ABSENT” (и в этом случае ограничение удовлетворяется тогда и только тогда, когда соответствующее значение компонента отсутствует), или как "OPTIONAL" (и в этом случае нет ограничений на присутствие соответствующего значения компонента).

48.8.9.2 Если порождающий тип является выборочным, то тип компонента может быть ограничен как "ABSENT" (и в этом случае ограничение удовлетворяется тогда и только тогда, когда соответствующий тип компонента не используется в значении) или как "PRESENT' (и в этом случае ограничение удовлетворяется тогда и только тогда, когда соответствующий тип компонента используется в значении); для данного типа не должно быть более одного ключевого слова "PRESENT в продукции "MultipleTypeConstraints".

П р к м с ч а и и е — Поясняющий пример см. в С.4.6.

48.8.9.3 Смысл пустой альтернативы для "Presenceconstraint" зависит от того, используется "FullSpecification" или "PartialSpecification":

а) в “FullSpecification" она эквивалентна ограничению "PRESENT” для компонентов множества или последовательности, помеченных "OPTIONAL", и не накладывает других ограничений в противном случае;

б) в "PartialSpecification" никаких ограничений не накладывается.

64

ГОСТ Р ИСО/МЭК 8824-1-2001

ПРИЛОЖЕНИЕ А (обязательное)

Использование нотации АСН.1—90

АЛ Сроки действия

Термин АСН.1—90 используется для указания, что нотация определена в ГОСТ Р ИСО/МЭК 8824—93. Термин текущая нотация АСН.1 используется для нотации, определенной в настоящем стандарте.

На дату публикации настоящего стандарта продолжает действовать ГОСТ Р ИСО/МЭК 8824—93 и соответствующий ему международный стандарт ИСО/МЭК 8824—90. Действие последнего зависит от решения ИСО/МЭК/СТК1/ПК21.

Продолжение действия прежней спецификации даст пользователям время на замену характеристик (в частности. ANY и использование макронотаиии) нотации АСН.1—90 текущей нотацией АСН.1. (Это может быть сделано без изменений битов в строках).

А.2 Смешанное использование АСН.1—90 и текущей нотации АСН.1

Как в АСН.1—90. так и в текущей нотации АСН.1 специфицирована семантическая конструкция верхнего уровня, которой является модуль АСН.1. Пользователь АСН.1 создаст совокупность модулей АСН.1 и может импортировать определения из других модулей АСН.1.

Для любого данного модуля требуется, чтобы используемая нотация (полностью) соответствовала либо АСН.1—90. либо текущей нотации АСН.1, и пользователь спецификации должен ясно идентифицировать (указанием соответствующего стандарта), какая нотация используется для каждого модуля, текстуально включенного в спецификацию пользователя.

Может случиться так. что пользователь захочет модифицировать часть модуля с использованием новой нотации, но оставить другие части в старой нотации. Эго может быть достигнуто (только) путем растепления модуля на два других модуля.

Когда модуль соответствует нотации АСН. 1—90, Ссылки на тины и значения могут быть импортированы из модуля, определенного с использованием текущей нотации. Такие типы и значения должны быть ассоциированы с тинами, которые могут быть определены с использованием нотации АСН.1—90. Например модуль, написанный с использованием нотации АСН.1—90. нс может импортировать значение типа UniversalString, так как лот тип определен в текущей нотации, но нс в АСН.1—90: однако он может импортировать значения, типы которых, например, INTEGER. lASString и т. п..

Когда модуль соответст вует текущей нотации АСН.1. ссылки на типы и значения могут быть импортированы из модуля, определенного с использованием нотации АСН.1—90. Макронотаиии АСН.1 не может быть импортирована. Нотация значения для импортированного типа должна использоваться в импортирующем модуле. только если присутствуют идентификаторы для значений SET. SEQUENCE и CHOICE, использованных в значении нотации, и если в значении нотации нс требуется значение типа ANY. Ограничение внутреннего тина не должно применяться к импортированному типу, если компонент, который должен быть ограничен, не имеет идентификатора.

А.З Переход к текущей нотации АСН.1

При модификации модуля (первоначально написанного в согласно нотации АСН.1—90) для соответствия текущей нотации следует учитывать следующие моменты.

а) Всем компонентам SET. SEQUENCE и CHOICE должны быть даны идентификаторы, не двусмысленные в данном экземпляре SET. SEQUENCE и CHOICE, и такие же идентификаторы должны быть включены в нотацию значения.

П р и м с ч а н и с I — Значение нотации для типа CHOICE содержит двоеточие С:').

6) Все использования ANY и ANY DEFINED BY должны быть обеспечены подходящими определениями классов информационных объектов с заменой ANY и ANY DEFINED BY (и указанных компонентов) соответст вующими ссылками на поля этого класса объектов. В большинстве случаев спецификация может быть улучшена за счет удачной вставки табличных ограничений и ограничений отношений компонентов. Во многих случаях спецификации может быть сшс более улучшена, если табличное ограничение или ограничение отношений компонентов осуществляется как параметр типа.

в) Макроопределения должны быть заменены определением класса информационных объектов, параметризованным типом или параметризованным значением. Если раздел WITH SYNTAX удачно спроектирован в определении класса информационных объектов, то нотация, используемая для определения объектов этого класса, может быть сделана очень похожей на нотацию, определенную старым использованием макронотаиии.

г) Все экземпляры использования макронотаиии должны быть заменены либо эквивалентными определениями информационных объектов, либо ссылками на эквивалентные тины ’ObjcctClassFieldType", параметризованные типы или параметризованные значения. В большинстве случаев спецификация информационных объектов может быть существенно улучшена группировкой таких определений в множества информационных j-2-’ii; 65

ГОСТ Р ИСО/М ЭК 8824-1-2001

объектов и ясным указанием, является ли обязательной поддержка всех информационных объектов множества, должны ли принимающие реализации приспосабливаться к зависящим or реализации расширениям этого множества информационных объектов и, если это так. как они должны обрабатывать полученные ’неизвестные" значения. Может оказаться желательным рассмотреть возможность, что в последующей версии спецификации пользователя может быть расширено множество информационных объектов и дано руководство нынешним разработчикам, как такие расширения должны трактоваться.

д} Все появления EXTERNAL должны быть тщательно рассмотрены; хотя эта нотация остается допустимой в текущей нотации АСН.1. спецификация пользователя может быть улучшена следующим образом:

I) Рассмотрите использование нотации INSTANCE OF (предпочтительно с табличным ограничени-см в качестве параметра типа, как обсуждалось выше для ANY и ANY DEFINED BY) вместо нотации EXTERNAL: во многих случаях это нс изменит битов в строке.

2) Когда сохраняется EXTERNAL, использование внутренних подтипов ассоциированного типа (см. 33.5) может помочь придать точность спецификации тому, используются ли идентификаторы контекстов представления, или это нс допускается. Здесь же применимы предшествующие комментарии (см. раздел 33). которые дают руководство о том. какие значения EXTERNAL должны поддерживаться и что должны летать реализации, если получены неподдерживаемые значения.

3) Рассмотрите замену

CHOICE | external EXTERNAL, embedded-pdv EMBEDDED PDV }

(с использованием внутренних подтипов, если это подходит) для того, чтобы обеспечить постепенный переход распределенных приложений к текущей нотации. Эго может повлиять на биты в строке и обычно может быть сделано как часть изменения версии протокола. Использование EMBEDDED PDV (практически для новой спецификации) обычно даст большую гибкость, как можно увидеть из сравнения ассоциированных типов; более того, всеми правилами кодирования, определенными в ИСО/МЭК 8825-1, EMBEDDED PDV кодируется более эффективно, чем EXTERNAL.

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

Примечание! — Эго следует делать с осторожностью и пониманием метода действия автоматического тегирования, так как. если этот прием использовать некорректно, биты в строке изменятся.

ж) Если AUTOMATIC TAGS нс применяется в существующих модулях так. как описано в е). то нежелательно добавлять определения новых типов в существующий модуль, а лучше создать новый модуль (с автоматическим тегированием) для определений новых типов. Это позволяет использовать преимущества автоматического тегирования без изменения битов в строке.

и) Следует уделить внимание полям, содержащим символьные строки, и посмотреть, нельзя ли задействовать нотации CHARACTER STRING. BMPString или UniversalString. Однако обычно это изменит биты в строке и может быть проведено как часть изменения версии.

к) Необходимо добавит ь идентификаторы "mantissa', 'base* "exponent" ко всем нотациям вещественных значений, которые используют альтернативу ’Numeric Real Value" в продукции ’RcalValuc’. Рассмотрение должно ограничиваться значениями "base" 2 и 10 в нотации типа.

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

В общем случае, дополнение существующих модулей с использованием нотации, нс соответствующей текущей нотации АСН.1. рассматривается как ошибка, даже если ссылка на спецификации АСН.1—90 сохраняется в таких модулях. В частности, запрещается использование макронотации. ANY. ANY DEFINED BY. a также новых конструкций SET. SEQUENCE и CHOICE без недвусмысленных идентификаторов.

66

ГОСТ Р ИСО/МЭК 8824-1-2001

ПРИЛОЖЕНИЕ В (обязательное)

Присвоение значений идентификаторов объектов

В настоящем стандарте присвоены следующие значения:

Раздел Значение идентификатора объекта

36.3 { joint-iso-itu-l asnl (I) specification (0) charactcrStnngs (I) numericString (0) } Значение описателя объекта

"NumcncStnng ASN. I type"

Раздел Значение идентификатора объекта

36.5 | joint-iso-itu-t asnl (1) specification (0) charactcrStnngs (I) printableString (1) | Значение описателя объекта

"PrintableString ASN.l type"

Раздел Значение идензифнкагора объекта

36.1 { joint-iso-itu-l asnl (I) specification (0) modules (0) iso 10646 (0) }

Значение описателя объекта

"ASM character Module"

67

ГОСТ Р ИСО/М ЭК 8824-1-2001

ПРИЛОЖЕНИЕ С (Справочное)

Примеры и указания

Настоящее приложение содержит примеры использования АСН.1 при описании (гипотетических) структур данных. Оно так же содержит указания, или руководства ио использованию различных характеристик АСН.1. Если не оговорено противное, то принимается окружение автоматического тегирования AUTOMATIC TAGS.

С. I Пример персональной записи

Использование АСН.1 иллюстрируется на примере простейшей гипотетической персональной записи.

С. 1.1 Не ф о р м а л ьн о с описание персональной за п и с и

Структура персональной записи и значения для конкретного лица показаны ниже.

Name (имя):

John Р Smith

Title (должность):

Director

Employee Number (табельный номер):

51

Dale of Hire (дата приема на работу):

17 сентября 1971

Name of Spouse (имя супруги):

Магу Т Smith

Number of Children (число детей):

2

Child Information (информация о детях)

Name (имя):

Ralph Т Smith

Dale of Birth (дата рождения):

11 ноября 1957

Child Information (информация о детях)

Name (имя):

Susan В Jones

Dale of Birth (дата рождения):

17 июля 1959

С.1.2 ОписаниеАСН. 1 структуры записи

Структура каждой персональной записи ниже описана формальное использованием стандартной нота-

иии для типов данных:

Personnel Record :

{ name title number datcOfHirc namcOfSpouse

: ~ (APPLICATION 0] SET Name.

VisibleString. EmployecNumbcr. Date.

Name.

children

SEQUENCE OF Childinformation DEFAULT {}

Childinformation :

: - SET

{ name Name.

dateOfBirth Dale,

)

Name : : = (APLICATION l| SEQUENCE

{ given Name VisibleString.

initial VisibleString.

familvName VisibleString.

)

Employee Number : : = (APLICATION 2| INTEGER

Dale : : = (APLICATION 3| VisibleString

Данный пример иллюстрирует аспекты синтаксического анализа АСН.1. Синтаксическая конструкция "DEFAULT' может применяться только для компонента ’SEQUENCE" или "SET*, но нс может применяться к элементу "SEQUENCE OF". Таким образом. "DEFAULT (}" в "PersonnelRecord" применяется к "children*, а не к "ChildInformation".

С.1.3 Описание АСН.1 значения записи

Значение для персональной записи Джона Смита ниже описано формально с использованием стандартной нотации для значении данных:

| name title number datcOfHirc namcOfSpouse children

{givenNamc "John", initial "P*. familvName "Smith"), "Director",

51.

"197111917*.

{givenNamc "Mary", initial "T", familvName 'Smith'},

68

ГОСТ Р ИСО/МЭК 8824-1-2001

( {name (givenName “Ralph', initial "T". familyNamc "Smith”).

datcOfBirth "19571111"},

{name (givenName "Susan", initial "B". familyNamc "Jones'}.

datcOlBirtli “19590717"}

I

С.2 Руководство по использованию нотации

Типы данных и формальная нотация, определенные в настоящем стандарте, являются гибкими и позволяют проектировать широкий диапазон протоколов. Однако эта гибкость иногда может приводить к путанице, особенно когда нотация используется впервые. Данное приложение является попыткой минимизировать возможную путаницу и дает руководство (и примеры) использования нотации. Для каждого встроенного типа приводится одно или несколько указаний по его использованию. Типы символьных строк (например VisibleString) и типы, определенные в разделах 41—43. здесь нс рассматриваются.

С.2.1 Б у л е в с к и й т и и

С.2.1.1 Булевский тип используется для моделирования логических значений, например ответов да-нет на поставленные вопросы.

П р и м с р

Employed : : = BOOLEAN

С.2.1.2 При назначении ссылочного имени булевскому типу выбирается то имя, которое описывает состояние "истинно".

Пример

Married : : = BOOLEAN - - женат

но нс

MantalStalus : : = BOOLEAN - - семейное положение

С.2.2 Целочисленный тип

С.2.2.1 Целочисленный тип используется для моделирования значений (практически не ограниченных) кардинальных или целочисленных переменных.

Пример

ChcckingAccount Balance : : = INTEGER - - баланс в центах.

- - отрицательное значение означает перерасход

balance ChcckingAccountBalance :: = О

С.2.2.2 Максимальное и минимальное допустимые значения целочисленного типа определяются как поименованные числа.

Пример

DayOlThcMonth : : = INTEGER (first (l>. last (31 )|

today DayOfThcMonth : : = first

unknown DayOfThcMonth : : и 0

Поименованные числа "first" и "last" выбраны из-за их семантического значения, но нс исключают возможности значений DayOlThcMonth меньших 1. больших 3) или в интервале 1—31.

Для тою чтобы ограничить значения DayOtTheMonth только лишь значениями "first" и "last' следует писать:

DayOtTheMonth : : = INTEGER (first (I), last (31)} (first | last)

Для того чтобы ограничить значения DayOfThcMonth значениями от I до 31. следует писать:

DayOfThcMonth : : = INTEGER (first (I), last (31)} (first . . last)

dayOtThcMonth DayOtTheMonth : : = 4

С.2.3 Перечислимый тип

С.2.3.1 Перечислимый тип используется для моделирования значений переменных с тремя и более состояниями. Значения присваиваются, начиная с нуля, если единственным ограничением является их отличие друг от друга.

Пример

DayOiTheWcck : : = EN LIME RAT ED{sunday (0). monday (I), tuesday (2),

Wednesday (3). thursday (4), friday (5). Saturday (6)}

- - Дни недели: воскресенье (0). понедельник (I). вторник (2)....

first DayOiTheWcck : : = sunday

Хотя перечисления "sunday", 'monday* и т. д. выбраны из-за их семантического смысла. DayOiTheWcck ограничивается только этими значениями. Болес тою. могут быть присвоены только значения "sunday", "monday" и т. д.. а эквивалентные целочисленные значения недопустимы.

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

69

ГОСТ Г ИСО/М ЭК 8824-1-2001

Пример

MantalStatus : : = ENUMERATED (single, marned}

- - Первая версия записи

- - семейного положения: одинокий, женатый в предвидении

MantalStatus :: = ENUMERATED(smgle. marned.....widowed)

- - Вторая версия записи

- - семейного положения: одинокий, женатый, вдовый и далее

MantalStatus : : = ENUMERATED{single. married.....widowed, divorced)

- - Третья версия записи

- - семейного положения: одинокий, женатый, вдовый, разведенный

С.2.4 Действительный т и п

С.2.4.1 Действительный тип используется для моделирования приближенных чисел.

Пример

Angle In Radians: : = REAL - - угол в радианах

pi REAL :: = {mantissa 3141592653589793238462643383279. base 10. exponent -30)

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

App-X-Rcal: : = REAL (WITH COMPONENTS {

mantissa (—16777215.. 16777215).

base (2).

exponent (—125 .. I2S)))

- - Отправители нс должны передавать значения вне этих диапазонов, а соответствующие получатели

- - должны быть способны принимать и обрабатывать значения из этих диапазонов.

girth App-X-Real : : = {mantissa 16. base 2. exponent 1|

С.2.5 Битовая строка

С.2.5.1 Битовая строка используется для моделирования двоичных данных, формат и длина которых не заданы или заданы где-либо в другом месте, адлина в битах нс обязательно кратна восьми.

Пример

G3FacsimilePagc :: - BIT STRING

- - последовательность битов, соответствующая Рекомендации МККТТ Т. 4

image G3 Facsimile Page : : - '1001101001000011101 I0B

trailer BIT STRING : : ° 0123456789ABCDEFH

bodyl G3FacsimilePagc : : = Т10ГВ

body2 G3Facsimi!ePagc : : = 'ИОККЮ'В

Нотации "bodyl" и “body2" являются разными абстрактными значениями, так как завершающие нулевые биты являются значащими (так как отсутствует конструкция ’NamedBitList" в определении GTFacsimdePagc).

С.2.5.2 Битовая строка с ограничением размера используется для моделирования значений битовых полей фиксированного размера.

Пример

BitField : : = BIT STRING (SIZE (12»

mapl BitField ::=■ '1001 JOIOOIOO’B

map2 BitField : : = ‘9A4 H

map3 BitField :: = ‘100Н0100ГВ

- - Недопустимо — нарушено ограничение размера

Нотации ’mapl" и "map2* являются одинаковыми абстрактными значениями, так как завершающие четыре нулевых бша в “тар2" нс являются значащими.

С.2.5.3 Битовая строка используется для моделирования значений типа bit map — упорядоченной совокупности логических переменных, указывающей, выполнено ли конкретное условие для каждого соответствующего объекта упорядоченной совокупности объектов.

DaysOfTheWcck : : = BIT STRING {

sunday (0), monday (I), tuesday (2).

Wednesday (3). thursday (4). friday (5),

Saturday (6)) (SIZE (0 .. 7))

- - Дни недели: воскресенье (0), понедельник (1). вторник (2),. . .

sunnyDaysLast Week I DaysOfTheWcck : : = (sunday. monday. Wednesday)

- - Солнечные дни на последней неделе:

- - воскресенье, понедельник, среда

sunny Days Last Wcck2 DaysOf I hcWcek : : = 110ГВ

70

ГОСТ Р ИСО/МЭК 8824-1-2001

sunnyDays Last Week’ DaysOlThcWcek :: = 'I 10 l()D0‘В

sunnyDaysLastWcck4 DaysOlThcWcek : : ” ’11010000'В

- - Недопустимо — нарушено ограничение размера

Если значение битовой строки короче 7 бит. то отсутствующие биты указывают пасмурный день, следовательно первые три приведенные нотация имеют одно и то же абстрактное значение.

С.2.5.4 Битовая строка используется для моделирования значений типа bit map — упорядоченной, фиксированного размера совокупности логических переменных, указывающей, выполнено ли конкретное условие для каждого соответствующего объекта упорядоченной совокупности объектов.

DaysOlThcWcek : : - BIT STRING {

sunday (0). monday (I), tuesday (2).

Wednesday (2). thursday (4). friday (5),

Saturday (6)} (SIZE (7))

- - Дни недели: воскресенье (0). понедельник (I). вторник (2).. . .

sunnyDaysLastWeek I DaysOlThcWcek : : = {sunday. monday. Wednesday)

- - Солнечные дни на последней неделе:

- - воскресенье, понедельник, среда

sunnyDaysLastWeek’ DaysOlThcWcek ::=‘ИОГВ

- - Недопустимо — нарушено ограничение размера

sunnyDaysLastWeckS DaysOlThcWcek :: = 'I101000‘В

sunnyDaysLaslWcck4 DaysOlThcWcek : : = TIOIOOOO B

- - Недопустимо — нарушено ограничение размера

Первая и трстья нотации имеют одно и то же абстрактное значение.

С.2.5.5 Битовая строка с поименованными битами используется для моделирования значений совокупности связанных логических переменных.

Пример

PcrsonalStatus : : = BIT STRING

(married (0), employed (I), veteran (2). collcgeGraduate (3)|

- - Личный статус: женат, работающий, ветеран, выпускник колледжа

billClinton Peisonal Status : : = (married, employed. collcgeGraduate)

hillaryClinton PcrsonalStatus : : = '110100‘B

Нотации “billClinton" и "hillaryClinton* имеют одно и то же абстрактное значение.

С.2.6 Строка октетов

С.2.6.1 Строка октетов используется для моделирования двоичных данных, формат и длина которых не заданы юн заданы где-либо в другом месте, а длина в битах кратна восьми.

Пример

G4Eacsimilelmagc : : = OCTET STRING

- - последовательность октетов.

- - соответствующая Рекомендациям М ККТТ Т. 5 и Т. 6

image G 4 Facsimile Page : : ■ '3FE2EBAD471005‘H

C.2.6.2 Использование ограниченной символьной строки предпочтительнее строки октетов, когда обе из них приемлемы.

Пример

Surname : : = PrintableString

president Surname : : = “Clinton*

С.2.7 Строки UniversalString и BMPString

Тип BMPString используется для моделирования любых строк информации, полностью состоящих из символов базовой многоязычной плоскости (BMP) ИСО/МЭК 10646-1. а тип UniversalString — для моделирования строк, состоящих из символов ИСО/МЭК 10646-1. не входящих в BMP.

С.2.7.1 Для обозначения уровня реализации, накладывающего ограничения на использование комбинированных символов, используются обозначения "Lcvell’ и T.evcl2".

Пример

RussianNamc : : = Cyrillic (Lcvell)

- - В RussianNamc не используются комбинированные символы

SaudiNamc :: = BasicArabic (SIZE (I ... КЮГ Lcvel2)

- - В SaudiNamc используется подмножество комбинированных символов

С.2.7.2 Совокупность может быть расширена до выбранного подмножества путем использования нотации "UnionMark" (см. раздел 44).

Пример

KatakanaAnd Basic Lal in :: “ UniversalString (FROM( Katakana | BasicLatin))

С.2.8 Тип CHARACTER STRING

71

ГОСТ Р ИСО/М ЭК 8824-1-2001

Неограниченный тип символьных строк используется для моделирования любых строк информации, которые не могут быть смоделированы ни одним из ограниченных типов символьных строк. Необходимо гарантировать спецификаиию репертуара символов и их кодирования в октетах.

Пример

PackedBCDSlring:: = CHARACTER STRING (WITH COMPONENTS! identification (WITH COMPONENTS' fixed PRESENT})

- - Абстрактным синтаксисом и синтаксисом передачи должны быть

- - определяемые ниже packcdBCDStringAhstradSyntax

- - и packed ВС DSt nng I ransferSyntax. соответственно

})

- - Значение идентификатора объекта для символьного абстрактного синтаксиса (набора символов).

- - алфавитом которого являются цифры от 0 до 9

piickedBCDStnngAbslraclSyntaxId OBJECT IDENTIFIER : : =

{joint-iso-ilu-t xxx (999) yyy (999) zzz (999) packedBCD (999) charSct (0)}

- - Значение идентификатора объекта для символьного синтаксиса передачи, который упаковывает по две - - цифры в октет; цифры кодируются от 0000 до 1001: 1111 используется для заполнения октета.

packedBCDStnngTransfcrSynlaxId OBJECT IDENTIFIER : : =

{joint-iso-itu-t xxx (999) yyy (999) zzz (999) packedBCD (999) characterTransfcrSyntax (l)|

- - Кодирование packedBCDSlring будет содержать только определенное кодирование символов, с любой - - необходимой длиной ноля, а в случае BER — с передающим тег полем. Значения идентификаторов объектов нс перелаются, так как должно быть задано ’fixed".

П р и м с ч а н и с — По правилам кодирования нс обязательно кодировать значения типа CHARACTER STRING в форме, которая всегда включает в себя значения идентификаторов объектов, хотя они гарантируют. что абстрактное значение сохраняется при кодировании.

С.2.9 Вырожденный тип

Вырожденный тип null используется для указания отсутствия компонента последовательности. Пример

Patientidentifier : : - SEQUENCE (

пате

VisibleString.

roomNumber

CHOICE |

room

INTEGER.

outpatient

NULL - - если пациент выписан - -

I

lastPaticnt Patient Identifier : : = ( name “Jane Doe",

roomNumber outpatient : NULL

}

С.2.10 Последовательность и п о с л с д о в а т е л ь к о с т ь-и з

С.2.10.1 Тип 'лослсдовательносгь-из" используется для моделирования совокупности переменных, тин которых один и тот же. количество велико или непредсказуемо, а порядок — существенен.

Пример

NamesOfMcmberNations : : = SEQUENCE OF VisibleString - - в алфавитном порядке firstTwo NamesOfMcmberNations : : = ("Australia", "Austria"} С.2.10.2 Тип ■’последовательность' используется для моделирования совокупности переменных, тип которых один и тот же. количество известно и невелико, а порядок — существенен, при условии, что введенная разметка совокупности вряд ли изменится в последующих версиях протокола.

П р и м с р

NamesOtUfikers : : = SEQUENCE { president VisibleString.

vice President VisibleString,

secretary VisibleString)

- - Перечень официальных лиц: президент, вицелрезидент, секретарь

астеСогр NamesOfOfficcrs : : = president "Jane Doc".

vicePrvsidcnl "John Doe",

secretary "Joe Doe")

С.2.10.3 Тип "последовательность’ используется для моделирования совокупности переменных, типы которых различны, количество известно и невелико, а порядок — существенен, при условии, что введенная разметка совокупности вряд ли изменится в последующих версиях протокола.

ГОСТ Р ИСО/МЭК 8824-1-2001

Пример

Credentials: : = SEQUENCE {

userName VisibleString.

password VisibleString.

accountNumbcr INTEGER}

С.2.10.4 Расширяемый тип "последовательность" используется для моделирования совокупности пере

менных, порядок которых существенен, количество их в настоящий момент известно и невелико, но ожидает

ся. что оно должно возрасти.

П р и м с р

Record : : = Sequence { userName password account Number

- - Первая версия Record VisibleString.

VisibleString.

INTEGER.

в предвидении

Record : : = Sequence { userName password account Number

- - Вторая версия Record VisibleString.

VisibleString.

INTEGER.

|| - - Расширяющее дополнение к второй версии

last Logged In minutesLast Logged I n

IL

GcneralizedTime OPTIONAL. INTEGER

и далее

Record : : = Sequence ( userName password account Number

- - Третья версия Record VisibleString.

VisibleString.

INTEGER.

|| - - Расширяющее дополнение к второй версии

lastLoggedln GcneralizedTime OPTIONAL.

minutesLastLoggcdln INTEGER

IL

|| - - Расширяющее дополнение к третьей версии

certificate Certificate.

thumb ThumbPrint OPTIONAL

IL

C.2.11 Множество и м ножество-из

С.2.11.1 Тип 'множество' используется для моделирования совокупности переменных, количество которых известно и невелико, а порядок — нс существенен. Если не используется автоматическое тегирование, то каждая переменная идентифицируется контекстно зависимым тегированием, как показано ниже. (При автома

тическом тегировании теги Пример

UserName : : = SET ( personalNamc organizationName countryName

необязательны.»

|0] VisibleString.

|i| VisibleString.

|2| VisibleString }

- - Имя пользователя: личное имя. название организации, название страны

user UserName : : = ( countryName personal Name organizationName

"Nigeria",

"Jonas Maruba", "Meteorology. Ltd.*}

C.2.11.2 Тип "множество" с ключевым словом "OPTIONAL" используется для моделирования совокупности переменных, являющейся (собственным или несобственным) подмножеством другой совокупности переменных. количество которых известно и разумно мало, а порядок — нс существенен. Если не используется

b-l-2112

73

ГОСТ Р ИСО/М ЭК 8824-1-2001

автоматическое тегирование, то каждая переменная идентифицируется контекстно зависимым тегированием, как показано ниже. (При автоматическом тегировании теги необязательны).

UserName : : = SET {

personalNamc organization Name

|0| VisibleString.

|l) VisibleString OPTIONAL

- - по умолчанию — местная организация - - ,

couniryNamc |2| VisibleString OPTIONAL

- - по умолчанию — данная прана - - }

С.2.11.3 Расширяемый тип "множество" используется для моделирования совокупности переменных, разметка которой, вероятно, изменится в последующих версиях протокола. В следующем примере принято, что в определении модуля задано AUTOMATIC TAGS.

П p и м c p

UserName : : = SET ( personalNamc organization Name couniryNamc

- - Первая версия UserName VisibleString, VisibleString OPTIONAL. VisibleString OPTIONAL,

user UserName : : = (personalNamc "Jonas Mamba"}

в предвидении

UserName : : = SET ( personalNamc organizationNamc couniryNamc

- - Вторая версия UserName VisibleString.

VisibleString OPTIONAL.

VisibleString OPTIONAL.

- - Расширяющее дополнение к второй версии

intend EmailAddress faxN umber

II,

VisibleString.

VisibleString OPTIONAL

user UserName : : = | personalNamc

"Jonas Mamba".

intend EmailAddress

"jonas&mctcor. ngo.com’

11 позже

UserName : : = SET ( personalNamc organizationNamc couniryNamc

- - Третья версия UserName VisibleString.

VisibleString OPTIONAL.

VisibleString OPTIONAL.

- - Расширяющее дополнение к второй версии

intend EmailAddress faxN umber

II-

VisibleString.

VisibleString OPTIONAL

plioneNumbcr VisibleString OPTIONAL.

- - Расширяющее дополнение к третьей версии

user UserName : : = | personalNamc

"Jonas Mamba".

intend EmailAddress I

"jonasgimclcor. ngo.com*

С.2.11.4 Тип "множество-из’ используется для моделирования совокупности переменных, тип которых один и тот же. а порядок — не сушсстненсн.

Пример

Keywords : : = SET OF VisibleString - - в произвольном порядке

somcASNlKeywords Keywords : : = ("INTEGER’. ’ROOLEAN". "REAL")

74

С.2.1 ’Тегирование

ГОСТ Р ИСО/МЭК 8824-1-2001

До введения конструкции AUTOMATIC TAGS спецификации АСН.1 часто содержали теги. Ниже описывается способ, с которым обычно применялось тегирование. С введением конструкции AUTOMATIC TAGS в новых спецификациях АСН.1 нет необходимости использовать обозначения тегов, хотя при модификациях старой нотации следует позаботиться о тегах.

С.2.12.1 Теги универсального класса используются только в настоящем стандарте. Например нотация | UNIVERSAL 30| предназначена исключительно для обеспечения точности в определении международно стандартизованных полезных типов. Иначе она нс должна использоваться.

С.2.12.2 Часто встречающийся стиль использования тегов — присвоение тега прикладного класса ровно

один раз во всей спецификации и использование его для идентификации типа, который широко используется во всей спецификации. Тег прикладного класса также часто используется в качестве тега типа в самом внешнем

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

FileName :: = (APPLICATION 8] SEQUENCE | dirccloryNamc VisibleString.

directory Relative FileName VisibleString )

C.2.12.3 Контекстно зависящее тегирование часто применяется алгоритмическим образом ко всем ком-ионенгам множества SET, последовательности SEQUENCE или выбора CHOICE. Однакос помощью возможности AUTOMATIC TAGS это делается намного проще.

Пример

CustomerRecord : : = SET (

name |0] VisibleString.

maillingAddrcss 11 ] VisibleString,

accountNumbcr |2| INTEGER.

balanccDue (3( INTEGER }

CustomerAilribute :: = CHOICE (

name |0| VisibleString.

maillingAddrcss 111 VisibleString.

accountNumbcr |2| INTEGER.

balanccDue |3| INTEGER }

C.2.12.4 Тегирование пользовательского класса обычно нс используется в спецификациях стандартов

(хотя это и не запрещается). Приложения, созданные производителями, обычно будут использовать теги прикладного и контекстно зависящего классов. Однако в редких случаях спецификация конкретного производите

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

ции стандарта.

Пример

AcmeBadgcNumber : : = (PRIVATE 2| INTEGER badgeNumber AcmeBadgcNumber : : = 2345

С.2.12.5 Текстуальное использование IMPLICIT с каждым тегом можно найти только в старых спецификациях. Когда используется явное тегирование, правила BER создают менее компактное представление, чем при неявном тегировании. Правила PER создают одинаково компактное тегирование в обоих случаях. При использовании правил BER и явного тегирования в закодированных душных лучше видны нижележащие типы (INTEGER. REAL. BOOLEAN и прочие). В примерах настоящего руководства, когда возможно, используется неявное тегирование. Эю может, в зависимос ти от правил кодирования, привести к компактному представлению. которое весьма желательно в некоторых приложениях. В других приложениях компактность может быть менее важна, чем. например, возможность осуществлять строгую проверку типов. В таком случае может ис

пользоваться явное тегирование.

Пример

CustomerRecord : : = SET {

name |0| IMPLICIT VisibleString.

maillingAddrcss 111 IMPLICIT VisibleString.

accountNumbcr |2( IMPLICIT INTEGER.

balanccDue |3] IMPLICIT INTEGER J

CustomerAtlributc :: ~ CHOICE (

name |0] IMPLICIT VisibleString.

maillingAddrcss |l| IMPLICIT VisibleString.

accountNumbcr |2| IMPLICIT INTEGER.

balanccDue |3] IMPLICIT INTEGER )

С.2.12.6 Руководство no использованию тегов в новых спецификациях АСН.1, ссылающихся на настоящий стандарт, очень простое: НЕ ИСПОЛ ЗУЙТЕ ТЕГИ. Вставьте в заголовок модуля AUTOMATIC TAGS —

ь-r

75

ГОСТ Р ИСО/М ЭК 8824-1-2001

и забудьте о тегах. Если в последующей версии вам необходимо добавить новые компоненты к множеству SET. последовательности SEQUENCE или выбору CHOICE, добавьте их в конце.

С.2.13 Выбор

С.2.13.1 Выборочный тип CHOICE используется для моделирования переменных, выбираемых из совокупности переменных, число которых известно и невелико.

Пример

Fileldcntifier : : = CHOICE ( - - идентификатор файла

relativeName VisibleString,

- - имя файла (например. "March Progress Report"»

absolute Name VisibleString.

- - имя файла и содержащего сто каталога

- - (например. '<Williams> MarchProgrcssReport")

senalNumbcr INTEGER

- - системный идентификатор файла - - }

file Fileldcntifier : : « serialNumbcr : 106448503

С.2.13.2 Расширяемый выборочный тип CHOICE используется для моделирования переменных, выбираемых из совокупности переменных, разметка которой, вероятно, будет меняться от одной версии протокола к другой.

П р и м с р

Fileidentifier : : = CHOICE ( - - Первая версия Fileldentil'ier relativeName VisibleString. absolute Name VisibleString,

fileldl Fileldcntifier : : = relativeName : 'MarchProgrcssRcport.doc'

в предвидении:

Fileldcntifier : : = CHOICE | - - Вторая версия Fileldcntifier

rclat ivc Name VisiblcStri ng,

absolutcNamc VisibleString,

serialNumbcr

INTEGER. - - Расширяющее дополнение,

- - к второй версии

fileldl Fileidentifier : : ж relativeName : ■’MarchProgrcssRcport.doc" fileldl Fileldcntifier : : = serialNumbcr : 214

и позже:

Fileldcntifier : : = CHOICE I- - Третья версия Fileldcntifier relativeName VisibleString.

absolutcNamc VisibleString,

serialNumbcr INTEGER, --Расширяющее дополнение. - - к второй версии

|| - - Расширяющее дополнение к третьей версии

vendorSpccific VcndorExt.

unidentified NULL

IL

fileldl Fileidentifier : : = relativeName : ’MarchProgrcssRcport.doc"

fileldl Fileldcntifier : : = senalNumbcr : 214

fileldl Fileldentil'ier : : = unidentified : NULL

С.2.13.3 Расширяемый выборочный тип CHOICE из единственного типа используется, когда рассматривается возможность, что в будущем будут допустимы несколько типов.

Пример

Greeting : : = CHOISE { - - Первая версия Greeting

postCard VisibleString

I

в предвидении:

76

ГОСТ Р ИСО/МЭК 8824-1-2001

Greeting : : = CHOISE { - - Вторая версия Greeting

postCard VisibleString,

|| - - Расширяющее дополнение к второй версии

audio Audio,

video Video

C.2.13.4 Когда одно выборочное значение вложено в другое выборочное значение, требуется несколько двоеточий.

Пример

Greeting : : = (APPLICATION I2| CHOISE (

postCard VisibleString,

recording Voice |

Voice : : - CHOICE |

cnglish OCTET STRING.

swahili OCTET STRING )

myGreeting Greeting : : = recording : cnglish : '01983854?EOTI

С.2.14 Селективный тип

С.2.14.1 Селективный тин используется для моделирования переменной, тип которой есть тип некоторой конкретной альтернативы в определенном ранее выборе CHOICE.

С.2.14.2 Рассмотрим определение:

FileAitribute :: 3 CHOICE { - - атрибуты файла

date-last-used INTEGER. - - дата последнего использования

file-name VisibleString | - - имя файла

Тогда возможно следующее определение

AltnbutcList : : = SEQUENCE ( - - список атрибутов

first-attribute date-last-used < FilcAttributc,

second-attribute file-name < FileAitribute )

с возможной нотацией значения

listOlAttributes Attribute-List :: = {

first-attribute 27.

second-attribute "PROGRAM" J

C.2.15 Тип 'поле класса объекте в"

С.2.15.1 Тип "поле класса объектов" используется для идентификации типа, определенного с помощью класса информационных объектов (см. ГОСТ Р ИСО/МЭК 8824-2). Например поля класса информационных объектов ATTRIBUTE могут быть использованы в определении типа Attribute.

Пример

ATTRIBUTE : : » CLASS

I

&AilributeTypc.

&attributeld OBJECT IDENTIFIER UNIQUE

I

Attribute : : = SEQUENCE |

attribulelD ATTRIBUTE.&attributeld. - - обычно ограничен

attribulcValue ATTRIBUTE.&allributcType --обычно ограничено

1

Как ATTRIBUTE.&attributeld. так и ATTRIBUTE.&AtlnbulcType являются типами полей класса объектов. определенными указанием класса информационных объектов ATTRIBUTE. Тип ATTRIBUTE.&aitributcld фиксированный потому, что он явно определен в ATTRIBUTE как OBJECT IDENTIFIER. Однако тип ATTRIBUTE.&atlnbuteType может передавать значения любого типа, определенного с использованием АСН.1. так как его тип не зафиксирован в определении ATT RIBUTE. Нотации, которые представляют данное свойство (передавать значение любого типа), называются "нотациями открытого тина", следовательно ATTR1BU-TE.&Attnbutc 1уре является открытым типом.

С.2.16 Встроен нос-здп

С.2.16.1 Тип ’встроснное-здл" используется для моделирования переменных, тип которых не задан или задан где-либо в другом месте, без ограничения на нотацию, используемую для спецификации типа.

Пример

FileContcnts :: = EMBEDDED PDV - - содержимое файла

Document List : : = SEQUENCE OF EMBEDDED PDV - - список документов

ь-З-ти: 77

ГОСТ Р ИСО/М ЭК 8824-1-2001

С.2.17 Вне ui н и ii т и п

Внешний тип похож на встроенное-здп, но имеет меньше идентификационных опций. В новых спецификациях предпочтительнее использовать встроенное-здп из-за сто большей гибкости и того обстоятельства, что некоторые правила кодирования представляют сто значения более эффективно.

С.2. IS 9 к з с м п л я p-и з

С.2.18.1 Экземпляр-из используется для спецификации типа, содержащею поле идентификатора объекта и открытый тип. значение которого есть тип. определенный идентификатором объекта. Тип ’экземпляр-из" ограничен тем. что может переносить значение из класса TYPE-IDENTIFIER (см. ГОСТ Р ИСО/МЭК 8824-2. приложения А и С).

Пример

ACCESS-CONTROL-CLASS :: - TYPE-IDENTIFIER

Get-lnvoke : : = SEQUENCE {

objeclClass object Instance acccssControl altributelD

objeclClass.

Object Instance.

INSTANCE OF ACCESS-CONTROL-CLASS.

ATTRlBUTE.&atlribulcld

- - обычно ограничен

Конструкция GET-lnvoke эквивалентна следующей: Get-lnvoke : : = SEQUENCE {

objeclClass object Instance acccssControl type-id value

objeclClass.

Object Instance.

[UNIVERSALS] IMPLICIT SEQUENCE ( ACCESS-CONTROL-CLASS.&id.

|0| ACCESS-CONTROL-CLASS.&Tvpe

- - обычно ограничен - - обычно ограничен

altributelD

ATTRlBUTE.&atlribulcld

I

Действительное предназначение типа "экземпляр-из" нс видно до тех пор. пока он не ограничивается с использованием множества информационных объектов, но такие примеры выходят за рамки настоящею стан-дарга. Определение множества информационных объектов см. в ИСО/МЭК 8824-3. а в приложении А к нему — использование множества информационных объектов для ограничения типа "экземпляр-из". Кодирование INSTANCE OF ACCESS-CONTROL-CLASS то же самое, чти и для значения EXTERNAL, которое содержит только идентификатор объекта и значение данных.

С.З Идентификация абстрактных синтаксисов

С. 3.) Использование услуг уровня представления (ГОСТ 34.971) требует спецификации значений, называемых значениями данных (уровня) представления, и объединений этих значений данных представления в множества, называемые абстрактными синтаксисами. Каждому из этих множеств дано имя абстрактного синтаксиса типа идентификатор объекта АСН.1.

С.3.2 АСН.1 может использоваться как общий инструмент для спецификации значений данных представления и их объединения в поименованные абстрактные синтаксисы.

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

П р и м е ч а н и е — Сказанное нс подразумевает исключение ссылок на типы, определенные в других модулях.

С.3.4 Рекомендуется, чтобы присваивание идентификатора и описателя объекта абстрактному синтаксису осуществлялось с использованием полезного класса информационных объектов ABSTRACT-SYNTAX, определенного в ГОСТ Р ИСО/МЭК SS24-2. Так же рекомендуется, чтобы все использования ABSTRACT-SYNTAX были сгруппированы в одном "корневом" модуле, идентифицирующем все абстрактные синтаксисы, используемые в прикладном стандарте.

С.3.5 Ниже приводится пример текста, который может встретиться в прикладном стандарте.

Пример

ISOxxxx-yyyy (iso standard хххх ansi-modules (...) yyyy-pdu (...)) DEFINITIONS : : =

BEGIN

EXPORTS YYYY - PDU;

YYYY - PDU :: = CHOICE { connecl-pdu......, daia-pdu CHOICE {

78

J

ГОСТ Р ИСО/МЭК 8824-1-2001

I,

END

ISOxxxx-yyyv-Abslract-Svntax-ModuIc {iso standard xxxx ansi-modules (...)) DEFINITIONS : : =

BEGIN

IMPORTS YYYY-PDU FROM ISOxxxx-yyyy {iso standard xxxx ansl-modulcs (...) yyyy-pdu (...)):

- - В настоящем стандарте определен следующий абстрактный синтаксис:

YYYY-Abstract-Syntax ABSTRACT-SYNTAX:: -

[YYYY-PDU IDENTIFIED BY yyyy-abstract-syntax-ob^ct-idj

yyyy-abslracl-syntax-object-id OBJECT IDENTIFIER : : = [

iso standard yyyy (xxxx) abstract-syntax (...)}

- - Соответствующим описателем объекта является

yyyy-abslracl-syntax-descriptor Object Descriptor : : - ".........."

- - Значения идентификатора и описателя объекта АСН.1:

- - идентификатор объекта правила кодирования,

- - описатель объекта правила кодирования.

- - присвоенные правилам кодирования в ИСО/МЭК 8825-1 и ИСО/МЭК 8825-2 могут использоваться как - - идентификатор синтаксиса передачи вместе с настоящим абстрактным синтаксисом.

- - ISOxxxx-vwx-Abstract-Syntax

END

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

С.4 Подтипы

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

Примеры

Atomic-Number : : ^ INTEGER (I..104) - - атомное число

TouchToncString : : 3 LASString - - строка набора номера

(FROM ("0123456789" | "Н" | ’«'» (SIZE (1.. 63))

ParametcrList : : = SET SIZE (1.. 63) OF Parameter - - список параметров

Small Prime :: “ INTEGER (2 | 3 | 5 | 7 | 11 | 13 | 17 | 191 231 29) - - малое простое число

С.4.2 Расширяемое ограничение подтипа используется для моделирования типа INTEGER, множество допустимых значений которого мало и четко определено, но может быть расширено.

Пример

SmallPnnte : : = INTEGER (2 | 3, . ..) - - Первая версия SmallPrime в предвидении:

SmallPrime : : = INTEGER (2 | 3.....5 | 7 | 11) - - Вторая версия SmallPrime

и позже:

SmallPrime :: = INTEGER (2 | 3.....5 | 7 11 | 13 | 17 | 19) - - Третья версия SmallPrime

П р и м с ч а н и с — Для некоторых типов одни правила кодирования (например PER) обеспечивают высокооптимизированное кодирование значений для ограничения подтипа корня расширения (т. е. значений, стоящих до "— ") и менее оптимизированное кодирование значений для ограничения подтипа расширяющих дополнений (т. с. значений, стоящих после ".. .*), тогда как при других правилах кодирования (например BER) ограничения подтипов не влияют на кодирование.

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

Пример

Envelope :: = SET {

tvpeA Т уреА.

tvpcB ТуреВ OPTIONAL.

typcC ТуреС OPTIONAL }

- - общий порождающий тип

ABEnvelope : : = Envelope (WITH COMPONENTS

Ь-Г

79

ГОСТ Р ИСО/М ЭК 8824-1-2001

typeB PRESENT, lypcC ABSENT I)

- - typeB всегда должен присутствовать. ivpeC — отсутствовать

ACEnvelope : : = Envelope «WITH COMPONENTS

{...,

typeB ABSENT. lypcC PRESENT J)

- - lypcC всегда должен присутствовать. typeB — отсутствовать

Два последних определения альтернативно мот быть записаны как:

ABEnvelope : : = Envelope (WITH COMPONENTS JlypeA. type В))

ACEnvelope : : “ Envelope (WITH COMPONENTS {typcA. type C))

Выбор .между этими альтернативами мог бы быть сделан на основе таких факторов, как количество компонентов в порождающем типе, количество среди них факультативных, степень различия отдельных типов и. вероятно, стратегии развития.

С.4.4 Подтипы используются для частично определенных значений, например для протокольных блоков данных (ПБД), которые должны быть протестированы в тесте соответствия, когда тест направлен только на некоторые из компонентов ПБД.

П р и м с р

Пусть определен ПБД

PDU :: » SET

(alpha INTEGER.

beta lASString OPTIONAL.

gamma SEQUENCE OF Parameter.

delta BOOLEAN )

Тогда при составлении теста, требующего, чтобы булевское значение было ложным, а целое — отрицательным. записывается:

TestPDU : : = PDU (WITH COMPONENTS

delta (FALSE),

alpha (MIN.. <0)J)

Далее, если строка lASStnng (beta) должна присутствовать и быть длиной 5 или 12 символов, то записывается:

FunherTestPDU :: = TestPDU (WITH COMPONENTS (.... beta (SIZE (5 | 12)) PRESENT))

С.4.5 Если тип данных общего назначения был определен как SEQUENCE OF, то подтипы используются для определения ограниченных подтипов общего типа.

Пример

Text-block :: = SEQUENCE OF VisibleString

Address :: = Text-block (SIZE (I.. 6)) (WITH COMPONENT (SIZE (I .. 32)))

C.4.6 Если тип данных общего назначения был определен как CHOICE, то подтипы используются для определения ограниченных подтипов общего типа.

Пример

Z : : - CHOICE (

а А.

b В.

с С.

d D,

с Е

}

V :: = Z (WITH COMPONENTS I..., a ABSENT, b ABSENT)) - - 'а* и ‘b‘ должны отсутствовать;

- - ‘c*. 'd* или 'с' могут присутствовать в значении

W :: ~ Z (WITH COMPONENTS {... ,а PRESENT})

- - может присутствовать только ‘а' (см. 48.8.9.2)

X :: = Z (WITH COMPONENTS { a PRESENT))

- - может присутствовать только 'а' (см. 48.8.9.2)

Y :: = Z (WITH COMPONENTS (a ABSENT, b. с))

- - ’a*, 'd' и 'е' должны отсутствовать:

- - 'с* или 'Ь' могут присутствовать в значении

Примечание — W и X семантически идентичны.

С.4.7 Подтипы используются для образования новых подтипов из существующих. Пример Months : : = ENUMERATED { January (I).

SO

ГОСТ Р ИСО/МЭК 8824-1-2001

February

(2).

march

(X

april

(4).

may

(5),

june

(6).

July

(7),

august

(8).

September

(9).

October

(Ю),

november

(ID.

december

(12) }

First-quarter : : = Months ( January fcbniary march )

Second-quarter : : = Months ( april may June )

Third-quarter: : 31 Months ( July august September )

Fourth-quarter : : = Months ( October november

december >

First-half: : = Months (First-quarter | Second-quarter) Second-half: : = Months (Third-quarter | Fourth-quarter)

81

ГОСТ Р ИСО/М ЭК 8824-1-2001

ПРИЛОЖЕНИЕ D (Справочное)

Руководство по использованию символьных строк АСН.1

D.1 Поддержка символьных строк в АСН.1

D.1.1 Имеются следующие четыре группы символьных строк, поддерживаемых в АСН.1:

а) типы символьных строк, основанные на Международном регистре ИСО наборов кодированных символов, которые должны использоваться с Ехсарс-посдедовательносгями (то есть на структуре ИСО 646), и на связанном с ним Международном регистре кодовых символьных наборов, которые обеспечиваются типами VisibleString. lASString, TcletexSlring, VideotexString. Graphic-String и GetieralString;

б) типы символьных строк, основанные на ИСО/МЭК 10646-1, которые обеспечиваются типами UniversalString, UTFSString и BMPString с подмножествами, определенными в ИСО/МЭК 10646-1, или использованием поименованных символов.

П р и м с ч а н и я

1 Использование типа UniversalString без О1раничений приводит к нарушению требований соот ветствия для информационного обмена, специфицированных в ИСО/МЭК 10646-1, так как при этом кианы не принимаемые подмножества.

2 Несмотря на сказанное выше, использование этого типа с простым ограничением подтипа, которое использует параметр абстрактного синтаксиса (для ограничения определенным подтипом UniversalString). может обеспечить мощный и гибкий механизм обработки символов, доверяя профилям определение значения параметра для удовлетворения конкретных потребностей сообщества пользователей. Однако в общем случае в стандартах предпочтительнее использовать тин CHARACTER STRING (см. ниже);

в) типы символьных строк, обеспечивающие простые небольшие совокупности символов, определенные в настоящем стандарте и предназначенные для специализированного использования: к ним относятся типы NumericString и PrinlablcString;

г) тип CHARACTER STRING с согласованным (или объявленным) символьным набором, который будет использоваться; эго позволяет реализации использовать любую совокупность символов и кодирований, которым присвоены OBJECT IDENTIFIER, включая совокупности из Международного регистра ИСО наборов кодированных символов, которые должны использоваться с Escape-последовательносгями. ИСО/МЭК 7350. ИСО/МЭК 10646-1 и пользовательские совокупности символов и кодирования (профили могут накладывать требования или ограничения на символьные наборы — символьные абстрактные синтаксисы, которые могут использоваться).

D.2 Типы UniversalString, UTFSString и BMPString

D.2.1 Типы UniversalString и UTFSString переносят любые символы из ИСО/МЭК 10646-1. Наборы сим-волов в ИСО/МЭК 10646-1. в общем случае, слишком велики для разумных требований соответствия и обычно должны быт ь выделены их поднаборы в виде комбинаций стандартных совокупностей символов из приложения А ИСО/МЭК 10646-1.

D.2.2 Тин BMPString переносит любые символы из основной многоязычной плоскости ИСО/МЭК 10646-1 (первые 62К — 2 символов). Основная многоязычная плоскость обычно разбивается на поднаборы в виде комбинаций стандартных совокупностей символов из приложения .А ИСО/МЭК 10646-1.

D.2.3 Для совокупностей, определенных в ИСО/МЭК 10646-1. приложение А. имеются ссылки на тип, приведенные во встроенном модуле АСН.1 "ASNI-CHARACTER-MODULE" (см. раздел 37). Метод ■'ограничения подтипа" позволяет определять новые подтипы UniversalString. которые являются комбинациями существующих подтипов.

D.2.4 Примерами ссылок на тип. определенных в ASNI-CHARACTER-MODULE, и соответствующих им имен совокупностей в ИСО/МЭК 10646-1 являются:

BasicLatin

Latin-1 Supplement LatinExtended-a

Latin Extended-b

I pa Extensions

SpacingModifierLctters

BASIC LATIN

LATIN-1 SUPPLEMENT

LATIN EXTENDED-A

LATIN EXTENDED-B

I PA EXTENSIONS

SPACING MODIFIER LETTERS

CombiningDiacriticalMarks COMBINING DIACRITICAL MARKS

ГОСТ Р ИСО/МЭК 8824-1-2001

D.2.5 В ИСО/МЭК 10646-1 определены три “уровня реализации* и требуется, чтобы все пользователи ИСО/МЭК 10646-1 устанавливали уровень реализации.

Уровень реализации относится к степени, в которой поддерживаются комбинированные символы и. следовательно, в терминах АСИ.), определяется подмножество UniversalString и BMPString. ограничивающее типы символьных строк.

Для уровня реализации 1 комбинированные символы не допустимы, и обычно имеется взаимно однозначное соответствие между абстрактными символами (ссылками на ячейки» в символьной строке АСН.1 и печатными символами в физическом представлении строки.

Для уровня реализации 2 допускается использование некоторых комбинированных символов (перечисленных в ИСО/МЭК 10646-1, приложение В), но использование других таких символов запрещено.

Для уровня реализации 3 нет ограничений на использование комбинированных символов.

0.2.6 Типы BMPString и UniversalString могут быть ограничены с помощью нотации подтипа так, чтобы исключить все управляющие функции:

VanillaBMPString : : - BMPString (FROM (ALL EXCEPT

Ц0, 0. 0. 0}.. {0. 0, 0. 31J I {0. 0. 0. 128} .. (0. 0. 0. 159}») или. эквивалентно,

CO : : = BMPString (FROM ({0. 0. 0, 0} . . {0, 0. 0. 31)» - - Функции CO

Cl : : = BMPString (FROM «0. 0. 0. 128} . . <0. 0. 0. 159})) - - Функции Cl

VanillaBMPStnng :: - BMPString (FROM (ALL EXCEPT (CO | Cl»>

D.3 О требованиях соответствия ИСО/МЭК 10646-1

Использование UniversalString. BMPString или UTFSStnng (или их подтипов) в определении тина АСН.1 требует обращения к требованиям соответствия ИСО/МЭК 10646-1.

Согласно этим требованиям соответствия разработчики стандарта (скажем. X). использующие такие типы АСН.1. должны обеспечивать (в заявке о соответствии реализации протокачу) утверждение о принимаемом подмножестве ИСО/МЭК 10646-1 для реализации их стандарта X или об уровне поддержки комбинированных символов этими реализациями.

Использование подтипа UniversalString. UTFSStnng или BMPString в спецификации требует, чтобы реализации поддерживали все символы ИСО/МЭК 10646-1. включенные в этот подтип АСН.1, и. следовательно. чтобы (по крайней мере) эти символы присутствовали в принимаемом подмножестве для реализации. Так же требуется, чтобы установленный уровень поддерживался всеми такими подтипами АСН.1.

П р и м е ч а н и с — Спецификация АСН.1 (при отсутствии параметров абстрактною синтаксиса и спецификации исключений) определяет как максимальный набор символов, которые могут быть переданы, так и минимальный набор символов, которые датжны обрабатываться получателем. Принимаемый набор ИСО/МЭК 10646-1 требует, чтобы символы не из этого набора нс передавались, а все символы этого набора поддерживались получателем. Следовательно, необходимо, чтобы принимаемый набор был бы в точности набором всех символов, допускаемых спецификацией АСН.1. Случай, когда имеется параметр абстрактного синтаксиса, рассматривается ниже.

0.4 Рекомендации пользователям АСН.1 по соответствию ИСО/МЭК 10646-1

Пользователи АСН.1 должны четко устанавливать набор символов ИСО/МЭК 10646-1. который образует принимаемый поднабор реализации (и требуемый уровень реализации) для того, чтобы выполнялись требования их стандарта.

Это можно удобно сделать путем определения подтипа UniversalString, UTFSString или BMPString. который содержит все необходимые для стандарта символы, и ограничения его "уровнем Г или "уровнем 2". Подходящим именем для этого типа может быть "ISO-10646-Stnng".

Пример

ISO- 10646-String :: = BMPString

(FROM (Level2 INTERSECTION (Basic Latin UNION Hebrew Extended UNION Hiragana)»

- - 'Это тип. который определяет минимальный набор символов в принимаемом поднаборе для

- - реализации настоящего стандарта.

- - Требуемый уровень реализации — нс ниже 2.

Тогда ЗСРП будет содержать простое утверждение, что принимаемый поднабор ИСО/МЭК 10646-1 есть ограниченный полнабор (и уровень), определенный типом "ISO-10646-St ri ng*, a "ISO-10646-String* (возможно. его подтипы) будет использоваться в стандарте всюду, где требуется включить строки ИСО/МЭК 10646-1.

Пример ЗСРП

Принимаемый поднабор ИСО/МЭК 10646-1 есть ограниченный поднабор, состоящий из всех символов в типе ACH.I "ISO-10646-String*, определенном в модуле <имя модуля>, с уровнем реализации 2.

83

ГОСТ Р ИСО/М ЭК 8824-1-2001

П р и м с р использования н протоколе:

Message : : ~ SEQUENCE {

first-field ISO-10646-String - - допустимы вес символы из принимаемою поднабора

second-field ISO-10646-String (FROM (latinSmallLctterA.. latinSmallLcttcrZ)),

- - допустимы только строчные латинские буквы

third-field ISO-10646-Stnng (FROM (digitZcro . . digitNine))

- - допустимы только цифры

I

D.S Принимаемые поднаборы как параметры абстрактного синтаксиса

Стандарт ИСО/МЭК 10646-1 требует, «тюбы принимаемый поднабор и уровень реализации были определены явно. Когда пользователь АСН.1 нс хочет ограничивать диапазон символов ИСО/МЭК 10646-1 в некоторой части разрабатываемого стандарта, то это можно сделать, определяя (например) "ISO-10646-String’' как подтип UniversalString. UTFSString или BMPString с ограничением подтипа, состоящим из (или содержащим) "ImplementorsSubset". который остается параметром абстрактного синтаксиса.

Пользователи АСН.1 должны учитывать, что в этом случае соответствующий отправитель может передать соответствующему получателю символы, которые нс могут быть обработаны получателем потому, что они выпадают из (зависящего от реализации) принимаемого поднабора или уровня получателя, и рекомендуется, чтобы в этом случае в определение "ISO-10646-String’ включалась спецификация обработки исключений.

Пример

ISO-10646-String IUniversalString : ImplementorsSubset. ImpementationLcvcl) : : =

UniversalString (FROM ((ImplementorsSubset UNION BasicLatin)

INTERSECTION ImplementationLevcl) characlcrSetPrblcm)

- - Принимаемый поднабор ИСО/МЭК 10646-1 должен содержать "BasicLatin’. но может содержать

- - любые дополнительные символы, определенные в ’ImplementorsSubset", который является парамет-- - ром абстрактного синтаксиса. "Impemcnlat ion Level" является параметром абстрактного синтаксиса.

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

- - символы вне этого принимаемого поднабора и уровня реализации. Обработка исключения в этом

- - случае определена в разделе <яомер разделам для вызова "chaniCtcrSetPrblem’. Она может никогда не - - вызываться соответствующим получателем, если символы, фактически используемые в сеансе - - взаимодействия, ограничены совокупностью "BasicLatin".

My-Levcl2-String : : = ISO-10646-String {{HebrewExtcnded UNION Hiragana}. Levcl2j

D.6 Тип CHARACTER STRING

D.6.1 Тип CHARACTER STRING предоставляет полную гибкость в выборе символьного набора и метода кодирования. Когда единственное соединение обеспечивает сквозную передачу данных (без прикладной ретрансляции), тогда должно использоваться согласование символьных наборов, а кодирование может быть выполнено как часть определения контекстов представления для символьных абстрактных синтаксисов.

D.6.2 Важно понимать, что символьный абстрактный синтаксис является обычным абстрактным синтаксисом с некоторыми ограничениями на возможные значения (они все являются символьными строками и всеми символьными строками, образованными из некоторой совокупности символов). Таким образом, регистрация таких синтаксисов и согласование контекста представления осуществляется обычным путем.

D.6.3 Кодирование типа CHARACTER STRING также допускает объявление используемых абстрактного синтаксиса и синтаксиса передачи без согласования в том окружении, в котором это применимо.

П р и м e ч а н и я

I Проектировщики приложений могут запретить использование согласовании представления, сделать его обязательным или оставить на усмотрение отправителя.

2 Когда используется объявление, а нс согласование, проектировщик приложения должен рассмотреть, как отправитель может определить, что символьный абстрактный синтаксис (и синтаксис передачи) может быть приемлемым для получателя (например используя услуги справочника или в результате профилирования). а так же рассмотреть действия получателя, если получено значение CHARACTER STRING из символьного абстрактного синтаксиса, который нс поддерживается.

D.6.4 Если используется согласование, то проектировщик прикладного уровня может управлять таким согласованием, специфицируя, когда должны быть установлены такие контексты представления, и параметр пользовательских данных примитива P-ALTER-CONT EXT, или может просто принять, что некоторый профиль должен определить, какой символьный абстрактный синтаксис должен использоваться, устанавливая для него контекст представления в момент передачи примитива P-CONNECT.

84

ГОСТ Р ИСО/МЭК 8824-1-2001

D.6.5 Возможности управления контекстом услуг уровня представления позволяют инициатору (в Р-CONNECT или в установленном соединении, используя P-ALTER-CONTEXT) предложить список новых или исключаемых из использования абстрактных синтаксисов (который может содержать символьные абстрактные синтаксисы), а получателю — выбрать из этого списка.

D.6.6 Инициатор может выразить свои предпочтения порядком абстрактных синтаксисов в списке или через параметр пользовательских данных, который предоставлен проектировщиком приложения для того, чтобы пояснить цель предлагаемого использования нового абстрактного синтаксиса. Например он может указывать. что все (символьные) абстрактные синтаксисы предлагаются для использования с одной единственной целью или что подразумевается выбор единственного (символьного) абстрактного синтаксиса для использования в различных целях.

D.6.7 Символьные абстрактные синтаксисы (и соответствующие символьные синтаксисы передачи) определяются в ряде стандартов (или рекомендаций МСЭ-Т). а дополнительные символьные абстрактные синтаксисы (и/или символьные синтаксисы передачи) могут быть определены любой организацией, выделяющей идентификаторы объектов.

D.6.8 В ИСО/МЭК 10646-1 имеется символьный абстрактный синтаксис, определенный (и ему присвоен идентификатор объекта) для всей совокупности символов, каждой определенной совокупности символов, поднаборов (BASIC LATIN. BASIC SYMBOLS, и т. д.) и любой возможной комбинации определенных совокупностей символов. В ИСО/МЭК 10646-1 имеются так же два символьных синтаксиса передачи, определенные для идентификации различных опций (в частности. 16- и 32-битовых).

85

ГОСТ Р ИСО/М ЭК 8824-1-2001

ПРИЛОЖЕНИЕ Е (Справочное)

Замененные характеристики

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

Е.1 Использование идентификаторов является обязательным

Нотациями для NamedType и NamcdValuc первоначально были:

NamedType : : = identifier Type | Type | ScleclionType

NamcdValuc : : ■= identifier Value | Value но теперь они изменены на:

NamedType : : = identifier Type

NamcdValuc : : = identifier Value

так как прежние приводили к двусмысленной грамматике.

Идентификаторы могут быть добавлены к поименованным типам NamedType в старых спецификациях АСН.1 без влияния на кодирование типа (хотя изменения АСН.1 будут необходимы для всех использований соответствующих нотаций значений). Такие изменения мот быть даны либо в сообщении об ошибках, либо как часть новой версии модифицируемого стандарта.

Е.2 Выборочное значение

Нотацией значения для выборочного типа первоначально была:

ChoiccValuc : : = NamcdValuc

NamcdValuc : : “ identifier Value | Value но теперь она изменена на

ChoiccValuc : : = identifier ":" Value

так как прежняя приводила к двусмысленной грамматике.

Е.З Произвольный тип

Произвольный тип был определен в ранних версиях настоящего стандарта.

Обычно произвольный тип использовался для того, чтобы оставить "дыру" в спецификации, которая должна быть заполнена некоторой другой спецификацией. Потайней была "АпуТурс", которая допускалась в качестве альтернативы для "Туре" и определялась как:

АпуТурс :: = ANY | ANY DEFINED BY identifier

Испания значения для произвольного типа была

AnyValuc : : = Type Value

хотя позднее она была изменена на

AnyValuc : : = Туре : Value

так как прежняя приводила к трудностям при машинной обработке АСП.1.

Настоятельно рекомендовалось использовать вторую альтернативу нотации. В этой альтернативе (единственной возможной, когда произвольный тип был одним из типов компонентов множества или последовательности) некоторый другой компонент множества или последовательности (с указанным идентификатором "identifier'') должен был указывать, своим целочисленным значением или значением "идентификатор объекта" (или выбором из них), фактический тип. управляющий произвольным компонентом. Отображение таких значений в конкретные типы АСН. I могло бы выглядеть как некоторая "таблица", образующая часть абстрактного синтаксиса. При отсутствии "DEFINED BY identifier" (первая альтернатива нотации) в нотации нс было бы указания, как может быть определен тип поля. Это часто приводило к спецификациям, в которых "дыра" продолжала существовать даже на сталии, когда предполагалась реализация.

Теперь произвольный тип заменен возможностью спецификации классов информационных объектов и последующим указанием полей классов информационных объектов в определениях типов (см. ГОСТ Р ИСО/МЭК 8824-2). Так как поля могут быть определены таким образом, чтобы допускался произвольный тип АСН.1, то обеспечивается основная возможность — оставлят ь "дыры" в спецификации. Однако новая характеристика допускает спецификацию "табличного ограничения", в которой конкретное "множество информационных объектов" (соответствующего класса информационных объектов) явно указывается как ограничение типа. Тем самым обеспечивается то. что раньше обеспечивалось конструкцией "ANY DEFINED BY identifier". 86

ГОСТ Р ИСО/МЭК 8824-1-2001

Кроме того, предоставляется некоторое предопределенное использование новых возможностей (см. ГОСТ Р ИСО/МЭК 8824-2). которое соответствует различным, обычно встречающимся образцам использования произвольного тина. Например последовательность, содержащая идентификатор объекта и произвольный тип, ранее часто использовавшаяся для передачи произвольного значения вместе с идентификацией его типа, может быть описана как

INSTANCE OF MUMBLE

где MUMBLE определяется как класс информационных объектов (а не как тип АСН.1):

MUMBLE: : = TYPE-IDENTIFIER

Эта нотация приводит к тому, что конструкция "INSTANCE OF MUMBLE" должна быть заменена идентификатором объекта для объекта класса MUMBLE вместе с типом, указанным идентификатором объекта. Пример см. в С.2.18.

Конкретные пары идентификаторов объектов и типов определяются как информационные объекты класса MUMBLE, а если требуется, то могут быть определены их конкретные множества и использованы для ограничения конструкции INSTANCE OF таким образом, что могут встречаться только объекты лого множества.

Макровозможности часто использовались как полуформальный способ определения таблиц информационных объектов для управления ассоциированным использованием произвольного типа и заменены новыми возможностями.

Е.4 Макровозможности

Макровозможноста позволяли пользователю АСН.1 расширять нотацию путем определения макросов.

Основным использованием макровозможностей было определение нотации для спецификации информационных объектов. Теперь такая возможность включена непосредственно в АСН.1 (см. ГОСТ Р ИСО/МЭК 8824-2) без необходимости совершенно общей (и. соответственно, опасной) определяемой пользователем нотации.

Кроме того, единственным другим использованием нотации является, видимо, определение выражений. которые должны применяться с некоторыми параметрами для того, чтобы быть полностью определенными типами АСН. I. Теперь это обеспечивается более общими возможностями параметризации (см. ИСО/МЭК 8824-4).

87

ГОСТ Р ИСО/М ЭК 8824-1-2001

ПРИЛОЖЕНИЕ F (обязательное}

Правила совместимости типов н значений

Приложение должно использоваться главным образом разработчиками с целью гарантировать, что они идентично интерпретируют язык. Оно приведено, чтобы четко специфицировать, что допустимо в АСН.1. а что — нет. и позволить специфицировать точное значение, которое идентифицирует какое-либо имя ссылки на значение, и точное множество значений, которое идентифицирует какое-либо имя ссылки на множество типов или значений. Приложение нс устанавливает определения допустимых преобразований нотаций АСН.1 для каких-либо целей, отличных от указанных выше.

F.1 Необходимость понятия "отображение значении" (введение)

Г. 1.1 Рассмотрим следующие определения АСН.1:

А : : = INTEGER

В : : - |l| INTEGER

C:: = |2)INTEGER(0..6,...)

D::~|2| INTEGER (0.. 6.....7)

E ::- INTEGER (7.. 20)

Г : : = INTEGER {red (0). while (1). blue (2). green (3). purple (4)}

a A :: “ 3

bB:: = 4

с C :: = 5

d D:: = 6

с E : : = 7

f F :: = green

F.1.2 Ясно, что ссылки на значения a. b. с, d. с. f могут быть использованы в нотациях значений, управляемых А. В. С. D. Е. F соответственно. Например:

W :: = SEQUENCE {wl A DEFAULT a)

x A :: = a

Y :: = A (1 .. a)

где все записи допустимы при определениях, данных в F. 1.1. Однако если заменить .А на В. С, D. Е или F. то будут ли получившиеся предложения допустимыми? Аналогично, если ссылку на значение а заменить ссылкой Ь, с, d, е или I', то будут ли получившиеся предложения допустимыми?

F.1.3 Болес сложный вопрос возник бы в случае замены ссылки на тип явным текстом правой части присваивания. Например:

f INTEGER (red (0), while (1). blue (2). green (3). purple (4)} : : = green

W: : = SEQUENCE{

wl INTEGER {red (0), while (I), blue (2), green (3). purple (4))

DEFAULT f}

x INTEGER (red (0). while (1). blue (2), green (3), purple (4)} : : = f

Y : : = INTEGER Ircd (0). while (I), blue (2). green (3). purple (4)) (I .. f)

Допуст имо ли это в АСН.1?

F.I.4 Некоторые из приведенных выше примеров таковы, что даже если и являются допустимыми (а большинство из них допустимы — см. ниже), то пользователям не следовало бы писать аналогичные тексты, как как они мало понятны и вводят в заблуждение. Однако часто встречается использование ссылки на значение некоторого типа (не обязательно INTEGER), как на значение по умолчанию для этого типа с применением тегирования или образования подтипа в управляющем типе. Понятие "отображение значений* вводится для того, чтобы обеспечить ясный и точный смысл определения, какие из приведенных выше конструкций допустимы.

F. 1.5 Рассмотрим определения

C:: = |2|1NTEGER(O..6....)

Е:: = INTEGER (7..20)

F : : = INTEGER {red (0). while (1). blue (2). green (3). purple (4)}

В каждом случае создается новый тип. Для F можно четко идентифицировать соответствие 1 — 1 между значениями в этом типе и значениями в универсальном типе INTEGER. Для С и Е можно четко идентифицировать соответствие 1 — 1 между значениями в этих типах и подмножествами значений в универсальном типе INTEGER. -Тю взаимоотношение называется отображением значений между значениями в двух типах. Болес того, так как значения в С, Е и F имеют отображения 1 — 1 в значения INTEGER, можно использовать эти отображения для обеспечения отображений между значениями самих С. Е и F. Для С и F это показано на рисунке F.I.

88

&

W&

ко*-

V.^

ГОСТ Р ИСО/М ЭК 8824-1-2001

F.I.7 Следует учитывать, что н некоторых случаях в одном типе имеются значения (например 7—20 в А. см. Г. 1.1). которые имеют отображения в значения в другом типе (например 7—20 в Е, см. F.1.I). а другие значения (например равные или больше 21 в А. см. F.I.I) таких отображений нс имеют. Ссылка на такое значение в А нс даст допустимой ссылки на значение в Е. (В данном примере весь тип Е имеет отображение значений в подмножество А. В общем случае, в обоих типах могут быть подмножества значений, имеющих отображения, и подмножества значений без отображений).

F.1.8 В стандартах АСН.1 используется текст на естественном языке для спецификации допустимости в приведенных выше и аналогичных случаях. В F.6 даны точные требования для допустимости, к которым следует обращаться при затруднениях со сложными конструкциями.

П р и м е ч а и и с — То обстоятельство, что определено отображение значений между двумя конструкциями "Туре*, позволяет использовать ссылки на значения, установленные с использованием одной конструкции "Туре", для идентификации значений в другой конструкции ’Туре", которая достаточно похожа на первую. Это позволяет типизировать пустые и фактические параметры, используя текстуально разные конструкции "Туре* без нарушения правил совместимости пустых и фактических параметров. Кроме того, это позволяет специфицировать поля классов информационных объектов, используя одну конструкцию "Туре", а соответствующие значения в информационном объекте — используя другую конструкцию "Туре", которая достаточно похожа на первую. (Эти примеры не являются исчерпывающими). Рекомендуется, чтобы преимущества, предоставляемые этой свободой, использовались в таких простых случаях, как "SEQUENCE OF INTEGER" или "CHOICE (ini INTEGER, id OBJECT IDENTIFIER}", а не в более сложных конструкциях ’Туре".

F.2 Отображения значений

F.2.I Лежащей в основе моделью являются типы, такие как неперскрывающиеся контейнеры, в которых находятся значения, и конструкция АСН.1 "Туре", каждое появление которой определяет новый, отличный от других, тип (см. рисунки F.I и F.2). В настоящем приложении усганаативается. когда между такими типами существует отображение значений, позволяющее использовать ссылку на значение одного типа, когда нужна ссылка на значение некоторого другого.

Пример. Рассмотрим

Х:: = INTEGER

Y:: = INTEGER

где X и Y — имена ссылок на два разных типа (указатели), но между этими типами существует отображение значений, так что любая ссылка на значение X может использоваться там. где управляет Y (например после DEFAULT).

F.2.2 На множестве всех возможных значений АСН.1 отображение значений относится к парс значений. Все множество отображений значений является математическим отношением. Это отношение обладает следующими свойствами: оно рефлексивно (каждое значение АСН.1 отображается само на себя), симметрично (если, по определению, существует отображение значения х! в значение х2. то существует и отображение значения х2 в х!) и транзитивно (если существуют отображения значения xl в х2 и х2 в хЗ, то существует и отображение значения х! в хЗ).

F.2.3 Для любых двух данных типов XI и Х2. рассматриваемых как множества значений, множество отображений значений из XI в Х2 является отношением один к одному, т. е. для всех значений xl из XI и х2 из Х2. если существует отображение значения xl в х2. то:

а) нет отображения значения xl в значение из Х2, отличное от х2. и

б) нет отображения значения из XI (отличного от xl) в значение х2.

F.2.4 Когда существует отображение значений между значениями xl и х2. ссылка на любое из этих значений автоматически может использоваться для ссылки на другое значение, если это требуется некоторым управляющим типом.

При м е ч а н и е — Определение отображений между значениями некоторых конструкций 'Туре" предназначено только для обеспечения гибкости при использовании нотации АСН.1. Существование таких отображений нс имеет никакого отношения к тому, что эти два типа несут одну и ту же прикладную семантику. но рекомендуется, чтобы конструкции АСН.1. которые были бы недопустимы без отображения значении, использовались только в тех случаях, когда соответствующие тины действительно выражают одну и ту же прикладную семантику. Часто отображения значения будут существовать в больших спецификациях между типами, которые являются идентичными конструкциями АСН.1. но несут совершенно разную прикладную семантику, и существование таких отображений никогда не должно использоваться при определении допустимости всей спецификации.

F.3 Определения идентичных типов

F.3.I Понятие "определения идентичных типов" используется для того, чтобы было возможно определить отображения значений между двумя экземплярами Туре", которые либо идентичны, либо достаточно похожи для использования в качестве взаимозаменяемых. Для определения точного смысла выражения “достаточно

90

ГОСТ Р ИСО/МЭК 8824-1-2001

похожи* в настоящем разделе специфицирован ряд преобразований, которые применяются к каждому из экземпляров "Туре" для приведения их к нормальной форме. Два экземпляра "Туре" являются определениями идентичных типов только в том случае, котла их нормальные формы являются идентично упорядоченными списками одних и тех же элементов АСН.1 (см. раздел 11).

F.3.2 Каждый экземпляр "Туре" в спецификации АСН.1 является упорядоченным списком элементов, определенных в разделе 11. Нормальная форма получается путем применения преобразовании, определенных в F.3.2.I — F.3.2.4 в указанном порядке.

F.3.2.1 Удаляются все комментарии (см. 11.6).

F.3.2.2 Следующие преобразования нс являются рекурсивными и. следовательно, должны применяться только один раз в произвольном порядке.

а) Для каждого целочисленного типа: "NamedNumbcrList" (см. 18.1). если он есть, переупорядочивается так. чтобы "identifier" были расположены в алфавитном порядке.

6) Для каждого перечислимого типа: к каждому "Enumcrationltcm" (см. 19.1). который не есть "identifier" (без номера), добавляется номер, как установлено в 19.3; затем "RootEnumcratioir переупорядочивается так. чтобы "identifier" были расположены в алфавитном порядке.

в) Для каждого типа "битовая строка" : "NamedBitList" (см. 21.1). если он есть, переупорядочивается так, чтобы "identifier" были расположены в алфавитном порядке.

г) Для каждого значения идентификатора объекта: каждый "ObjldComponent" преобразуется в соответствующую ему ' NumberForm" согласно семантике раздела 31 (см. пример в 31.11).

д) Для типов "последовательность" (см. раздел 24) и "множес тво" (см. раздел 26): любое расширение вида "ExlensionAnd Exception" или "ExlcnsionAdditions" вырезается и помешается в конец "Component Type Lists"; "Optional Extension Marker", если он есть, удаляется.

Котла "TagDefault" есть "IMPLICIT TAGS", то к каждому экземпляру "Tag" добавляется ключевое слово "IMPLICIT TAGS" (см. раздел 30). если только не выполнено одно из следующих условий:

- оно уже есть, или

- присутствует ключевое слово EXPLICIT, или

- тегируемый тип есть CHOICE, или

- это открытый тип.

Когда "TagDefault" есть "AUTOMATIC TAGS", то решение о применении автоматического тегирования принимается в соответствии с 24.2 (автоматическое тегирование будет осуществляться позже).

П р и м с ч а н и е — 24.3 и 26.2 устанавливают, что присутствие элемента Tag" в "ComponentType", который будет вставлен в результате замены “COMPONENTS OF Туре", само по себе нс предотвращает преобразования автоматического тегирования.

Когда "ExtensionDefault" есть "EXTENSIBILITY IMPLIED", то после "ComponentTypeLists" добавляется многоточие ("... "), если его нс было.

с) Для выборочного типа (см. раздел 28): "RootAlternaliveTypeList" переупорядочивается так. чтобы идентификаторы в "NamedType" были расположены в алфавитном порядке. Когда "TagDefault" есть "IMPLICIT TAGS", то к каждому экземпляру “Tag" добавляется ключевое слово "IMPLICIT TAGS" (см. раздел 30). если только нс выполнено одно из следующих условий:

- оно уже есть, или

- присутствует ключевое слово EXPLICIT, или

- тегируемый тип есть CHOICE, или

- эго открытый тип.

Когда "TagDefault" есть "AUTOMATIC TAGS", то решение о применении автоматического тегирования принимается в соответствии с 24.2 (автоматическое тегирование будет осуществляться позже). Когда "ExtensionDefault" есть "EXTENSIBILITY IMPLIED", то после "AlternativeTypeLists" добавляется многоточие, если его нс было.

F.3.2.3 Следующие преобразования должны применяться рекурсивно в указанном порядке до достижения неизменного состояния.

а) Для каждого значения идентификатора объекта (см. 31.3): если определение значения начинается с "DefinedValue", то "DefinedValue" заменяется се определением.

б) Для типов “последовательность" и "множество*: все экземпляры "COMPONENTS OF Туре" (см. раздел 24) преобразуются в соответствии с разделами 24 и 26.

в) Для выборочных типов, типов "последовательность" и "множество": если ранее было принято решение о применении автоматического тегирования |см. F.3.2.2. перечисления д) и с)|. то оно осуществляется в соответствии с разделами 24. 26 и 28.

г) Для селективного типа: конструкция заменяется выбранной альтернативной в соответствии с разделом 29.

д) Все ссылки на типы заменяются их определениями ио следующим правилам:

91

ГОСТ Р ИСО/М ЭК 8824-1-2001

- если .вмещающий тин является ссылкой на тип. являющийся преобразованным, то ссылка на тип заменяется специальным элементом, которому не соответствует никакой другой, кроме его самого;

- если замещающий тин является типом "послсдовательность-из" или “множество-из", то ограничения, следующие за заметаемым типом, если они есть, помещаются перса ключевым словом "ОР;

- если замещаемый тин является параметризованным типом или множеством параметризованных значений (см. ИСО/МЭК 8824-4. 8.2), то каждый элемент "DummyReference" заменяется соответствующим "Actual Parameter''.

е) Все ссылки на значения заменяются их определениями; если замещаемое значение является параметризованным (см. ИСО/МЭК 8824-4. 8.2). то каждый элемент "DummyReference" заменяется соответствующим "Actual Parameter".

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

F.3.2.4 Для типа ’множество": "RootComponentTypeList" переупорядочивается так. чтобы "ComponentType" были расположены в алфавитном порядке (от ’а' до “z").

II р и м с ч а н и с — В 11.9 (bslring), 11.10 (hstring) и 11.11 (cstring) установлено, что новые строки и пропуски в таких элементах значения нс имеют. Если два экземпляра таких элементов содержат различающиеся использования новых строк и пропусков, то для целей F.3.3 они трактуются как идентичные.

F.3.3 Если два экземпляра "Туре", преобразованные к нормальной форме, являются идентичными списками элементов АСН.1 (см. раздел II). то они называются определениями идентичных типов за следующим исключением: если ’objeclclassreferencc" (см. ГОСТ Р ИСО/МЭК 8824-2, 7.1) встречается в какой-либо нормальной форме Туре", то эти два экземпляра не являются определениями идентичных типов и между ними не существует отображения значений (см. F.4 ниже).

Примечание — Эго исключение введено для предотвращения необходимости введения правил преобразования к нормальной форме для элементов синтаксиса, относящихся к нотации информационных объектов, их классов и множеств. Аналогично, не определена нормализация для нотации всех значений и нотации арифметической установки. После доказательства требований для таких спецификаций, они могут быть включены в последующие версии стандарта. Понятия определений идентичных типов и отображении значений введены для обеспечения того, что простые конструкции АСН. I могут быть использованы либо через имена ссылок, либо копированием текста. Нет необходимости обеспечивать эту возможность для более сложных экземпляров "Туре", содержащих классы информационных объектов и пр.

F.4 Спецификация отображения значений

F.4.1 Если два экземпляра "Туре* являются определениями идентичных типов по правилам F.3, то существуют отображения между всеми значениями одного типа и соответствующими значениями другого.

F.4.2 Для типа XI. созданного тегированием из некоторого типа Х2 (см. раздел 30), отображения значений существуют по определению между всеми членами XI и соответствующими членами Х2.

Примечание — Хотя отображения значений по определению существуют между значениями XI и Х2 из F.4.2 и между значениями ХЗ и Х4 из F.4.3. если такие тапы встроены в идентичные в других отношениях, но разные определения типов (таких как определения типов SEQUENCE или CHOICE), получающиеся определения типов (SEQUENCE или CHOICE) нс будут определениями идентичных типов и между ними не существуют отображения значений.

F.4.3 Для типа ХЗ, созданного из некоторого управляющего типа Х4 выбором значений, конструкцией множества элементов или образованием подтипа, отображения значений существуют по определению между членами нового типа и теми членами управляющего типа, которые были выбраны конструкцией множества элементов или подтипа. Присутствие или отсутствие маркера расширения нс влияет на это правило.

F.4.4 В F.5 определены дополнительные отображения значений между некоторыми типами символьных строк.

F.4.5 Отображение значений существует между всеми значениями некоторого типа, определенного как целочисленный тип с поименованными значениями, и любого целочисленного типа, определенного без поименованных значений, с другими поименованными значениями, с другими именами поименованных значений или с другими поименованными значениями и именами одновременно.

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

F.4.6 Отображение значений существует по определению между всеми значениями любого типа, определенного как битовая строка с поименованными бигами, и любого типа, определенного как битовая строка без поименованных битов, с другими поименованными бигами, с другими именами поименованных битов или с другими поименованными битами и менами одновременно.

92

ГОСТ Р ИСО/МЭК 8824-1-2001

И римечание — Существование отображения значений нс влияет на требования правила области действия имен и поименованных битов. Они могут использоваться только в области действия, управляемой типом, в котором они определены, или ссылкой на имя этого типа.

F.5 Дополнительные отображения значений, определенные для типов символьных строк

F.5.I Имеется две группы ограниченных типов символьных строк: группа ?\ (F.5.2) и В (F.5.3). По определению. отображения значений существуют между всеми типами в группе А и ссылки на их значения могут использоваться, когда они управляются одним из этих типов. Отображения значений никогда не существуют между разными типами в группе В или между какими-либо типами из групп А и В.

F.5.2 Группа А состоит из:

UTRString

NumericString

PrintableSlring

IAS St ring

VisibleString <ISO646String)

UniversalString

BM PString

F.5.3 Группа В состоит из:

TeictexString (T61String)

VideoiexString

GraphicStnng

GeneralSlring

F.5.4 Отображения значений в группе А определяются отображением значений символьных строк каждого типа в UniversalString и использованием свойства транзитивности отображений значений. Для отображения значений одного из типов группы А в UniversalString строка заменяется на UniversalString той же длины и с отображением каждого символа так. как описано ниже.

F.5.5 Формально множество абстрактных значений UTRString то же самое, что и множество абстрактных значений UniversalString. но с другим тегом (см. 36.13), и каждое абстрактное значение UTRString по определению отображается в соответствующее абстрактное значение UniversalString.

F.5.6 Глифы (формы печатных символов), используемые для типов Numeric-String и PrintableSlring, распознаются и недвусмысленно отображаются в подмножество глифов, присвоенных первым 128 символам ИСО/ МЭК 10646-1. Отображение для этих типов определяется через отображение глифов.

F.5.7 lA5String и VisibleString отображаются в UniversalString путем отображения каждого символа в символ UniversalString. который имеет (32-битовос) значение в кодировании BER для UniversalString идентичное (8-битовому) значению в кодировании BER для lASString и VisibleString.

F.5.8 BMPString формально является подмножеством UniversalString. и соответствующие абстрактные значения имеют отображения значений.

F.6 Специфичные для типов и значений требования совместимости

В данном разделе понятие отображения значений используется для точной формулировки допустимости некоторых конструкций АСН.1.

F.6.1 Любое появление "Value* в х-нотации с управляющим типом Y идентифицирует у-значенис в управляющем типе Y. которое имеет отображение в х-значснии. заданное х-нотаиисй. Требуется, чтобы такое значение существовало.

Например рассмотрим появление х в последней строке следующей записи:

X :: = |0| INTEGER (0.. 30)

хХ :: - 29

Y :: = |l| INTEGER(25..35)

Zl :: = Y(x|30)

Эти конструкции АСН.1 допустимы и в последнем присваивании х-нотации х являются указанием х-значсния 29 в X и. через отображение значения, идентифицирует у-значенис 29 в Y. х-котация 30 является указанием на у-значсние 30 в Y и Zl является множеством значений 29 и 30. С другой стороны, присваивание

Z2 :: = Y (х | 20)

недопустимо, так как нет у-значения, на которое может указывать х-нотапия 20.

F.6.2 Любое появление *Турс" в 1-нотации, которое имеет управляющий тип V. идентифицирует все множество значений в управляющем типе V. которые имеют отображения значений в любые значения в "Туре* t-нотацик. Требуется, чтобы это множество содержало по крайней мерс одно значение.

Например рассмотрим появление W в последней строке следующей записи:

V :: = (0] INTEGER (0 .. 30)

W :: = |1| INTEGER(25 . 35)

Y ::-|2| INTEGER (31 .. 35)

Zl :: = V(W|24>

Т-2-2112

93

ГОСТ Р ИСО/М ЭК 8824-1-2001

W привносит значения 25—30 в арифметическое множество, приводя к Z1. имеющему значения 24—30. С другой стороны, присваивание

Z2 ::₽V(Y|24)

недопустимо, так как нет значений в Y. которые отображались в значение в V.

Г.6.3 Требуется, чтобы тип любою значения, подставленного в качестве фактического параметра, имел отображение из этого значения в одно из значений в типе, управляющем пустым параметром, и идентифицируется именно это значение в управляющем типе.

F.6.4 Если "Туре" подставлен в качестве фактического для пустого параметра, который является пустым параметром множества значений, требуется, чтобы все значения этого "Туре" имели отображения в значения в управляющем типе пустого параметра множества значений. Фактический параметр выбирает в управляющем типе потное множество значений, которые имеют отображения в 'Туре".

F.6.5 При спецификации типа А пустой параметр, который является параметром значения или множества значений, допустим только в том случае, если для всех значений А и для всех использований А в правой части присваивания эти значения А могут быть использованы вместо пустого параметра.

Г.7 Примеры

F.7.I В данном разделе приведены примеры, иллюстрирующие F.3 и F.4

F.7.2 Пример I X ::- SEQUENCE {name VisibleString. age INTEGER)

X2 :: = J8] SEQUENCE (name VisibleString. age INTEGER)

XI :: «SEQUENCE {name VisibleString. - - комментарий - -age INTEGER)

X3 :: = SEQUENCE {name VisibleString. age AgeTypc)

AgeType : : = INTEGER

X. Xl. Х2 и ХЗ являются определениями идентичных типов. Ни различие в пропусках и комментариях, ни использование ссылки на тип 'Age-Type" в ХЗ значения нс имеют. Однако если измени ть любой идентификатор элемента последовательности, то они перестанут быть идентичными определениями и между ними не

будет отображения значений.

F.7.3 П р и м с р 2

В:: = SET

BI :: = SET

(name VisibleString, {age INTEGER.

age INTEGER) name VisibleString)

Это определения идентичных типов при условии, что они не находятся в модуле, в заголовке которого стоит "AUTOMATIC TAGS"; в противном случае они не являются определения идентичных типов и между ними не существуют отображения значений. Аналогичные примеры могут быть написаны для CHOICE и ENUMERATED (используя форму "identifier" для "Enumcrationltcm").

F.7.4 П р и м с р 3

С:: «SET Cl :: = SET

(name |0| VisibleString. {name VisibleString.

age INTEGER} age INTEGER (I .. 64)}

Это нс определения идентичных типов, и ни одно из них нс является определением идентичного типа с В или BI; также пег отображений значений между С и С1 или между этими типами и В или В1.

F.7.5 11 р и м е р 4

х INTEGER { Y (2)}:: = 3

z INTEGER :: = х

Это допустимо, и присваивается значение 3 через отображение, определенное в F.4.5.

F.7.6 П р и м с р 5

bl BIT STRING ::« ЮГВ

Ь2 BIT STRING (version! (0), version! (1), version! (2)} : : » bl

Это допустимо и Ь2 присваивается значение {versionI. version!}.

F.7.7 П р и м е р 6

С определениями из F.I.I элементы SEQUENCE вида

X DEFAULT у допустимы, где X — любой из А. В. С, D. Е, F или любой текст справа от присваивания типов этим именам, у — любой из а. Ь. с. d, с или f. за следующими исключениями: Е DEFAULT у недопустимо для всех а. Ь. с, d, ( и С DEFAULT с недопустимо, так как в этих случаях нет отображений значений из ссылки на значение по умолчанию на тип. для которого умолчание устанавливается.

94

ГОСТ Р ИСО/МЭК 8824-1-2001

ПРИЛОЖЕНИЕ G (справочное»

Руководство по модели расширения типа АСН.1

G.1 Об юр

G.I.) Может случиться так. что тип АСН.1 с течением времени выходит за корень расширения с помощью серин расширений, называемых расширяющими дополнениями.

G.I.2 Тип АСН.1, доступный конкретной реализации, может быть типом корня расширения или типом корня расширения плюс одно или несколько расширяющих дополнений. Каждый тип АСН.1, содержащий расширяющее дополнение, содержит и все ранее определенные расширяющие дополнения.

G.I.3 Говорят, что определения типов АСН.1 в этой последовательности являются связанными расширением (более точное определение понятия "связанные расширением" см. в 3.8.32). и требуется, чтобы правила кодирования применялись к связанным расширением типам таким образом, что если две системы используют два разных связанных расширением типа, то между ними будут успешно переданы те части информации содержимого этих типов, которая является общей для двух систем. Кроме тою. требуется, чтобы части, не являющиеся общими для обеих систем, могли быть выделены и в последующем ретранслированы (возможно, третьей стороне) при условии использования того же синтаксиса передачи.

Примечание — Отправитель может использовать тип. который находится в последовательности расширяющих дополнений как раньше, так и позже.

G.I.4 Последовательность типов, полученная добавлениями к корневому типу, называется серией расширений. Для того чтобы правила кодирования могли обеспечить соответствующую передачу связанных расширением типов (которая может потребовать больше битов в строке), такие типы (включая корень расширения) должны быть отмечены синтаксически. Признаком является многоточие (. . .) и называется маркером расширения.

П р и м е р

Корень расширения А: : = SEQUENCE] a INTEGER.

1-е расширение А: : = SEQUENCE{ a INTEGER.

2-е расширение

А : : = SEQUENCE{ a INTEGER.

3-е расширение А : : = SEQUENCE( a INTEGER.

)

b BOOLEAN, с INTEGER

b BOOLEAN.

с INTEGER.

dSEQUENCE{ е INTEGER.

b BOOLEAN.

c INTEGER.

dSEQUENCE| e INTEGER.

1' lASString i

g BOOLEAN OPTIONAL, h BMPString.

г

I

fLASString

>

G.I.5 Все расширяющие дополнения вставляются между парами маркеров расширения. Единственный маркер расширения допустим, если в корне расширения он стоит последним элементом типа; в лом случае принимается, что парный ему маркер расширения стоит непосредственно перед закрывающей фигурной скобкой типа, а расширяющие дополнения вставляются в коней типа.

G.I.6 Тип. имеющий маркер расширения, может быть вложен либо в тип. нс имеющий такого маркера, либо в тип в корне расширения, либо в тип расширяющего дополнения. В таких случаях серии расширений трактуются независимо друг оз друга и вложенный тип с маркером расширения не влияет на тин. в который он вложен. В любой конкретной конструкции может быть только одна точка вставки расширения (в конце типа, если используется единственный маркер расширения, или непосредственно перед вторым маркером расширения, если используется пара маркеров расширения).

G.I.7 Новое расширяющее дополнение в серии расширений определяется в терминах расширяющей дополнительной группы (из одного или нескольких типов, заключенных между "||" и "Ц") или единственного типа, добавленного в точке вставки расширения. В следующем примере первое расширение определяет расширяющую дополнительную группу, когда Ь. с должны одновременно присутствовать или отсутствовать в значении типа А. Второе расширение определяет единственный тип компонента d. который может отсутствовать в значении типа А. Третье расширение определяет расширяющую дополнительную группу, в которой компонент h должен присутствовать в значении типа А всякий раз. когда в нем есть новая расширяющая дополнительная группа.

95

ГОСТ Р ИСО/М ЭК 8824-1-2001

Пример Корень расширения A::-SEQUENCE! a INTEGER.

1-е расширение А::=SEQUENCE| a INTEGER.

2-е расширение

А::=SEQUENCE( a INTEGER.

3-е расширение A:: = SEQUENCE{ a INTEGER.

1

II

II

II

b BOOLEAN,

b BOOLEAN.

b BOOLEAN.

с INTEGER

с INTEGER.

c INTEGER.

II

II.

II-

}

dSEQUENCE!

dSEQUENCE(

с INTEGER.

e INTEGER.

....

II

f IA5Stnng

g BOOLEAN OPTIONAL.

1

h BMPString.

1

II.

1 lA5String

1

G.1.B Хотя обычной практикой должно стать добавление со временем расширяющих дополнений, используемые модель и спецификация АСН.1 не содержал время. Два типа являются связанными расширением, если один может быть "выращен* из другого расширяющими дополнениями. Таким образом, один тип содержит все компоненты другого. Могут быть типы, которые "наращиваются” в противоположном направлении (хотя это мало вероятно}. Эго может произойти, если тип начинается (во времени} с большого количества расширений, которые последовательно удаляются. Все. что передает АСН.1 и ее правила кодирования, является две спецификации типов связанные или не связанные расширением. Если они связаны, то все правила кодирования АСН.1 должны обеспечивать взаимодействие между их пользователями.

G.1.9 Обычно начинают с некоторого типа и затем решают, хотят ли взаимодействовать с предшествующими версиями, если они были расширены. Если это так. то включают маркер расширения. Затем к типу можно добавить последующие расширяющие дополнения без изменения битов в строке для более ранних значений, но с определенной обработкой расширенных значений ранними системами. Существенно отметить, •по добавление маркера расширения к типу, который ранее его нс имел, или удаление существующего маркера расширения в обшем случае изменит биты в строке и будет препятствовать взаимодействию. Такие изменения в общем случае потребуют изменения версий всех задействованных протоколов.

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

Т а б л и ц a G.1 — Расширяющие дополнения

Tim корня расширения

Вии расширяющих дополнений

ENUMERATED

Добавление единичного перечисления в коней "AdditionalEnumeration" со значением перечисления большим, чем значение любого добавленного ранее перечисления

SEQUENCE и SET

Добавление единичного типа или расширяющей дополнительной группы в коней ’ExtensionAddilionList". "ComponentType". которые являются расширяющими дополнениями (не содержащимися в расширяющей дополнительной группе) не обязательно должны быть отмечены как OPTIONAL или DEFAULT, хотя чаше всего это именно так

CHOICE

Добавление единичного “NamedType" в конец "ExtensionAddilionAllcr-nativesList"

Нотация ограничения

Добавление единичного ".AdditionalElementSetSpec” к нотации "Elcmenl-SelSpecs*

96

ГОСТ Р ИСО/МЭК 8824-1-2001

G.2 Влияние из нумерацию версий

G.2.I Когда спецификация АСН.1 используется повторно с определениями типов, измененными в терминах определении, связанных расширением типов, то для любых задач эти изменения сами по себе нс требуют изменения идентификатора обьекта модуля или номера версии протокола.

G.2.2 Может быть так. что по некоторым другим причинам такие изменения должны сопровождаться изменением номера версии, но это не является обязательным требованием.

G.2.3 Напротив, добавление маркера расширения к типу, который ранее его не имел, или добавление компонентов к типу "последовательность’' или "множество" без маркера расширения создаст новый тип. который не связан расширением со старым, и содержащему его модулю должен быть присвоен новый идентификатор объекта, а с протоколом должен быть связан новый номер версии.

G.3 Т ребования к правилам кодирования

G.1I Абстрактный синтаксис может быть определен как значения единственного тина АСН.1. который является расширяемым. Он содержит все значения, которые могут быть получены добавлением или удалением расширяющих дополнений. Такой абстрактный синтаксис называется связанным расширением абстрактным синтаксисом.

G.3.2 Набор правильно созданных правил кодирования для связанного расширением абстрактного синтаксиса удовлетворяет дополнительным требованиям, установленным в G.3.3 — G.3.5.

Примечание — Правила кодирования АСН.1 удовлетворяют этим требованиям.

G.3.3 Определение процедур для преобразования абстрактного значения в кодирование для передачи и преобразования полученного кодирования в абстрактное значение должно распознавать возможность того, что отправитель и получатель используют разные абстрактные синтаксисы, которые не идентичны, но связаны расширением.

G.3.4 В этом случае правила кодирования должны гаран тировать, что когда отправитель имеет спсцифи-капию более раннюю в серии расширений, чем получатель, то значения отправителя должны быть преобразованы таким образом, чтобы получатель мог определить, что расширяющие дополнения отсутствуют.

G.3.5 Правила кодирования должны гарантировать, что когда отравитель имеет спецификацию типа, которая является более поздней в серии расширений, чем спецификация получателя, то передача значений этого типа получателю остается возможной.

97

ГОСТ Р ИСО/М ЭК 8824-1-2001

ПРИЛОЖЕНИЕН (Справочное)

Сводка нотации АСН.1

Следующие элементы определены в разделе II:

type reference

BEGIN

ISO646String

identifier

BIT

MAX

value reference

BM PString

MIN

modulcrefercnce

BOOLEAN

MINUS-INFINITY

comment

BY

NULL

empty

CHARACTER

NumericString

number

CHOICE

OBJECT

bslring

CLASS

Object Descriptor

hstnng

COMPONENT

OCTET

cstring

COMPONENTS

OF

• • =

CONSTRAINED

OPTIONAL

И 4

DEFAULT

PDV

It •

DEFINITIONS

PLUS-INFINITY

T

EMBEDDED

PRESENT

END

Pnntablc Siring

"<"

ENUMERATED

PRIVATE

M It

EXCEPT

REAL

II II

EXPLICIT

SEQUENCE

M . II

EXPORTS

SET-

г

EXTERNAL

SIZE

FALSE

STRING

у

FROM

SYNTAX

II •

GcneralizedTime

TblStnng

It.M

GcncralString

TAGS

Graphic-String

TelctcxString

"ф"

lASStnng

TRUE

И|11

TYPE-IDENTIFIER

UNION

.I'M

IDENTIFIER

UNIQUE

IMPLICIT

UNIVERSAL

ABSENT

IMPORTS

UniversalString

ABSTRACT-SYNTAX

INCLUDES

UTCTimc

ALL

INSTANCE

VidcotcxString

APPLICATION

INTEGER

VisibleString

AUTOMATIC

INTERSECTION

WITH

В настоящем стандарте использованы следующие продукции с указанными выше элементами в качестве терминальных символов:

ModulcDcfinilion : : = Module Identifier

DEFINITIONS

Tag Default

BEGIN

ModuleBodv

END

Moduleldentilter : : = modulcrefercncc

Definitive Identifier

Definitivcldcntificr : : = "{" DefinitiveObjldComponent List "J* | empty

DcfinitivcObjldComponcnlList : : =

DefinitiveObjldComponent |

DefinitiveObjldComponent DefinitiveObjldComponentList

DefinitiveObjldComponent :: =

NameForm

DefinitiveNumberForm |

DefinitiveNamcAndNumberFonn

DefinitiveNumberForm : : = number

98

ГОСТ Р ИСО/МЭК 8824-1-2001

DcfmitivcNamcAndNumbcrFonn : : я identifier"(" DefinitiveNumberForm") TagDefault :: = EXPLICIT TAGS |

IMPLICIT TAGS

AUTOMATIC TAGS | empty Extension Default : : =

EXTENSIBILITY IMPLIED | empty

ModuleBody :: - Exports Imports .AssignmentList | empty

Exports:: = EXPORTS Symbols Exported ":" | empty

Symbols Exported : : = Symbol List | empty

Imports : : = IMPORTS Symbolslrnported ";" |

empty

Symbols I rnported : : = SymbolsFromModuleList | empty

SymbolsFrom Module List : : =

SymbolsFrom Modulc |

SymbolsFromModuleList SymbolsFromModule SymbolsFromModule : : SymbolList FROM Global ModuleRcfcrence Global Module Reference : : = modulercfercnce Assigned Identifier Assigncdldcntifier : : = Object Idem ificrValue

DelinedValuc | empty

SymbolList : : = Symbol | Symbol "." SymbolList Symbol : : = Reference | Parameterized Reference Reference : : = typerefcrencc | valucrcfcrcmx objectclassrc fere nee |

object reference |

objectset refe re ncc

Assignment List : : = /Assignment | Assignment List .Assignment Assignment : : =

Type Assignment |

ValucAxsignmcnt |

ValucSclTypc.Assignmcnl |

ObjectClassAssignmcnl |

ObjectAssigninenl | ObjectSctAssignmcnt | ParamctenzcdAssignmcnt

Externahypcrefcrencc : : = modulcrcfcrencc

type reference Externalvaluereference : : ® modulcrcfcrencc * и

value reference

DefinedType : : =

Extcmallypercfcrcnce | typcreferencc | ParameterizedType | ParamclenzedValueSctType DcfmedValuc : : =

Extcmalvaluereferencc | valucrcfcrcncc |

Parameterized Value

99

ГОСТ Р ИСО/М ЭК 8824-1-2001

Absolute Reference : : = "©•" GlobalModuleReference

II я

ItemSpec

ItemSpec : : = typereference | Itemid *." Componentld Itemid : : = ItemSpec Componentld :: =

identifier | number | *11" TypcAssignmcnt: : = typcrcfcrencc

Type ValueAssignment : : = valucrcfcrcncc Type .

Value

ValueSetTypeAsignment : : = lyperefercnee

Value Set

ValueSct :: n"f ElementSetSpec "Г

Type :: = BuiltinType | ReferencedType | ConstraincdType

BuiltinType :: =

BitStringTypc |

Boolean T ype

CharactcrSlnngTypc |

ChoiceType |

Embedded PDVType |

EnumeratedType |

ExtcrnalType |

InstanceOiType |

Integer Type |

NullTypc |

ObjectClassFieldType |

Objec t I dentificrTypc

OctelStringType |

RcalTypc |

SequenceType |

ScquenceOtTypc |

SetType |

SctOfType |

TaggedType

NamedType : : = identifier Type | Selection Type RcfcrcncedType : : =

DcfincdType |

UscfulType |

SclectionType |

TypcFromObjcct |

ValueSct FromObjecls

Value : : = BuillinValue | RcfcrenccdValue

BuiltinValuc : : =

BitStringValuc |

BooIcanValue |

CharaclcrStringValuc |

ChoiccValuc |

Embedded PDWaluc |

EnumcratcdValuc |

External Value |

InstanccOiValuc |

IntegerValue |

NuUValuc | ObjectClassFieldValuc |

100

ГОСТ Р ИСО/МЭК 8824-1-2001

Object IdentificrValuc |

OctetStringValuc |

RcalValuc |

ScquenceValuc |

ScquenccOlValuc |

SetValue |

SetOIValue |

TaggcdValue

RcfcrcncedValue : : =

Defined Value |

Value FromObject

NamedValue : : = identifier Value

BooleanType : : » BOOLEAN

BooleanValue :: = TRUE | FALSE

Integer Type : : =

INTEGER |

INTEGER "{" NamcdNumbcrList "J"

NamcdNumberLtst : : =

NamedNumber |

NamcdNunibcrList '." NamedNumber

NamedNumber : : “

identifier "(" SigncdNumber *)" |

identifier "(* DefincdValue T

SigncdNumber : : = number | "-“ number

IntegerValuc : : = SigncdNumber | identifier

EnumeratedType : : =

ENUMERATED "{" Enumerations "}"

Enumerations : : ™ Root Enumeration |

Root Enumeration '.* "..." |

Root Enumeration '," "..." V AdditionalEnumcration

Root Enumeration : : - Enumeration

AdditionalEnumcration : : = Enumeration

Enumeration : : =

Enumcrationltcm | Enumcrationkcm "." Enumeration

Enumcrationltcm :: =

identifier | NamedNumber

EnumeratedValue : : = identifier

RcalTypc : : ~ REAL

RcalValuc :: =

NumcricRealValuc | SpecialRcalValuc

NumericRcalValuc :: 1 0 |

ScqucnccValue - - Значение ассоциированного типа "последовательность"

SpccialRealValue : : ™

PLUS-INFINITY | MINUS-INFINITY

BitStringType : : = BIT STRING | BIT STRING NamcdBitList

NamedBitList :: - NamedBit | NamcdBitList "." NamcdBit

NamedBil : : “ identifier "(" number ")’ | identifier DefincdValue

BitStnngValuc :: = bstring | hslnng | "{* IdentificrList "}" | "Г ")*

IdcntifierLisl : : = identifier | IdentificrList "," identifier

OctetStnngTypc : : = OCTET STRING

OctetStringValuc :: = bstring | hstring

NullType : : = NULL

Null Value : : = NULL

SequenceType : : ~ SEQUENCE "{" “}" |

SEQUENCE "[" ExtensionAndException OptionalExlensionMarker ")‘ |

SEQUENCE "{* ComponentTypeLists ")"

ExtensionAndException :: = "..." |"... " ExceptionSpec

OptionalExlensionMarker:: = ",’ ".. -' | empty

ComponentTypeLisis : : ~ RootComponentTypeList |

RootComponentTypeList ".’ ExtensionAndException ExtensionAdditions OptionalExlensionMarker |

101

ГОСТ Р ИСО/М ЭК 8824-1-2001

RootComponentTypeList ".* ExlensionAnd Exception ExtensionAdditions

Extension End Marker V RootComponentTypeList |

ExlensionAndException ExtensionAdditions ExlensionEndMarker "," RootComponentTypeList RootComponentTypeList: : = ComponentTypeList ExtensionEndMarker : : = "." H. ..“

ExtensionAdditions :: = *,’ ExtensionAdditionList | empty

ExtensionAdditionList: : = ExtensionAddilion | ExtensionAdditionList “," ExlensionAddition ExtensionAddition : : = ComponentType | ExtensionAddilionGroup ExtensionAdditionGroup : : = "|(" ComponentTypeList “||" ComponentTypeList : : = ComponentType | ComponentTypeList ".' ComponentType ComponentType : : = NamedType |

NamedType OPTIONAL |

NamedType DEFAULT Value |

COMPONENTS OF Type

Sequence Value : : = Component Value List "}" | T T

Component Value List : : = NamedValue | Component Value List ",“ NamedValue ScquenccOlType : : = SEQUENCE OF Type ScqucnccOlValuc : : = "{" ValueLisl "}" | T "J"

ValucLisl : : ° Value | ValueLisl Value Set Type :: = SETT T I

SET T ExlensionAnd Exception OptionalExtensionMarker "}" |

SET "(" ComponentTypeLists T

Set Value : : = T Component ValueLisl "Г | T "I" SetOiType : : = SET OF Type SctOfValue : : = "{" ValueLisl T I “I" "I" ChoiceType : : = CHOICE "I" Alternative Iypc Lists "Г AlternativeTypeLisls : : = RootAltcrnativcTypeList | RoolAltcrnativeTypcLisl ",’ ExlensionAnd Except ion

ExtensionAddilionAltcmalives Optional Extension Marker RootAltcrnativcTypeList : : = AltemativeTypeList ExtensionAdditionAlternalivcs : : =

"." ExtensionAdditionAllcmativesList | empty

ExtensionAdditionAlternativesList : : = ExtensionAdditionAltcmativc | ExtensionAddilionAltemativcsLisl "," ExtensionAdditionAltcmativc

ExtensionAdditionAlternativc : : = ExlcnsionAddilionAltcrnatives | NamedType

ExlcnsionAddilionAltcrnatives : : = "Ц" AllcrnalivcTypcLisl "j|"

AlternativcTypcList : : = NamedType | AllcmativcTypcList *.* NamedType ChoiccValuc : : = identifier ":" Value SclectionType :: = identifier "<" Type TaggedType : : = Tag Type |

Tag IMPLICIT Type |

Tag EXPLICIT Type Tag : : = "Г Class ClassNumber "Г ClassNumber : : = number | Defined Value Class: := UNIVERSAL | APPLICATION | PRIVATE empty Tagged Value : : = Value EmbeddedPDVType :: = EMBEDDED PDV EmbeddcdPDWalue : : ~ ScqucnccValue ExtemalType : : - EXTERNAL ExternalValue : : = ScqucnccValue ObjcctldcntilierType : : = OBJECT IDENTIFIER ObjcctldcntificrValue : : “ "{" ObjldComponcnlLisI ")" |

T DefinedValue ObjldComponcnlLisI "J"

Obj IdComponcntLisl : : = ObjldComponcnl |

ObjldComponcnl ObjldComponcnlLisI

102

ГОСТ Р ИСО/МЭК 8824-1-2001

Ob; IdComponent :: с NamcForm NumberForm NamcAndNumberForm

NamcForm :: = identifier

NumberForm : : = number | DcfmedValuc

NamcAndNumberForm : : = identifier "(" NumberForm ")"

CharacterSt ringType : : = RestrictedCharactcrSlringType | Unrest rictedCharacterStringType

RcstnctcdCharactcrStringTypc : : = BMPString |

GencralString | Graphic-String | LASString ISO646Slring | Numeric-String | PrintableStnng | TeletexSlring T61 String UniversalString | VideotexString | VisibleString

RcstncicdCharacterStnngValuc :: = cstring | CharacterStringList | Quadruple | Tuple CharacTcrStnngList :: = "{* CharSyms '}"

CharSyms : : = CharsDcfn | CharSyms "," CharsDcfn

CharsDcfn :: = cstring | DcfmedValuc

Quadruple : : = T Group Plane "." Row Cell “I"

Group : : - number

Plane : : = number

Row : : = number

Cell : : = number

Tuple :: = "{* TablcColumn TablcRow

TablcColumn : : = number

TablcRow : : = number

UnrcslrictcdCharaclcrStnngTypc : : = CHARACTER STRING

CharacterStringValuc : : = RcstnctedCharacterStnngValuc |

Unrest rictedCharacterStringValue UnrcstrictcdCharaclerStringValuc : : = ScquenccValuc UsefulType : : = typerelcrcncc

Следующие типы символьных строк определены в 36.1:

Numeric-String PrintableStnng TcletcxString T61 String VideotexString UniversalString

VisibleString ISO646Stnng lA5Slring Graphic St ri ng GencralString BMPStnng

Следующие полезные типы определены в разделах 39—41:

GeneralizedTime

UTCTime

Object Descriptor

Следующие продукции используются в разделах 42—45:

ConstraincdType : : =

Type Constraint |

TypeWithConstraint

TypeWithConstraint : : =

SET Constraint OF Type |

SET SizeConstraint OF Type |

SEQUENCE Constraint OF Type |

SEQUENCE SizeConstraint OF Type

Constraint : : = "(" ConstraintSpec ExceptionSpcc ")’

ConstraintSpcc :: =

SubtypeConstrainl |

GencralConstramt

103

ГОСТ Р ИСО/М ЭК 8824-1-2001

ExccptionSpcc : : = "!" Exccptionldcntilkation | empty

Exceptionidentification : : = SignedNumber |

Defined Value |

Type ":" Value

SubtypcConstraint: : - ElementSetSpec

ElemcntSctSpccs : : =

RootElementSetSpec |

Root ElementSetSpec V " |

Root ElementSetSpec *," "... " "," AdditionalElementSetSpec

RootElementSetSpec : : = ElementSetSpec

AdditionalElementSetSpec : : = ElementSetSpec

ElementSetSpec : : = Unions | ALL Exclusions

Unions :: = Intersections |

UElems UnionMark Intersections

UElems : :.= Unions

Intersections :: = InterscctionEicmenls | lElems Intersect ion Mark Intersect ion Elements lElems : : = Intersections

InterscctionEicmenls :: = Elements | Elems Exclusions

Elems : : = Elements

Exclusions : : = EXCEPT Elements

UnionMark :: ^ "|" | UN ION

InterseCtionMark : : = “~ INTERSECTION

Elements : : =

Subtype Elements |

ObjcclSctElemcnls |

"(" ElementSetSpec

Subtype Elements : : =

SingleValue |

ContaincdSubtype

ValucRange

PermitledAlphabet

SizeConstrainl

TypeConslraint

InncrTypcConstrainls

Single Value : : 13 Value

ContaincdSubtype : : = Includes Type

Includes :: = INCLUDES | empty

ValucRange :: = LowcrEndpoint ".." UpperEndpoint

LowcrEndpoint:: = LowcrEndValuc | LowcrEndValuc "<“

UpperEndpoint : : = UppcrEndValuc |'<" UpperEndValue

LowcrEndValuc : : - Value | MIN

UppcrEndValuc :: = Value | MAX

SizcConstraint : : = SIZE Constraint

PermitledAlphabet : : = PROM Constraint

TypcConstraint : : = Type

InncrTypcConstrainls : : =

WITH COMPONENT SingleTypcConstraini |

WITH COMPONENTS MullipleTypcConstraints

SingleTypcConstraini : : “ Constraint

MullipleTypcConstraints : : B EullSpccification | PartialSpeciTicalion

FullSpccification : : ’(" TypcConstraints "J"

PartialSpecification :: = "(" "..." "," TypcConstraints *)“

TypcConstraints :: =

Named Constraint |

NamedConstraint "," TypcConstraints

NamcdConstraint :: =

identifier ComponcntConstraint

ComponcnlConstraint :: = ValucConstrainl PrcscnceConstraint

ValucConstraint : : = Constraint | empty

PrcscnceConstraint:: = PRESENT | ABSENT | OPT IONAL | empty

104

УДК 681.324:006.354

ОКС 35.100.60

ГОСТ Р ИСО/МЭК 8824-1-2001

1185 ОКСТУ4002

Ключевые слова: информационная технология, обработка данных, информационный обмен, взаимосвязь открытых систем, уровень представления, спецификации, абстрактная синтаксическая нотация

Редактор Н. П. Огурцов

Технический редактор Л. А. Гусева Корректор Н. И. Гаврищук Компьютерная верстка 3. И. Мартыновой

Изд. лиц. № 02354 от 14.07.2000. Сдано в набор 17.09.2001. Подписано и печагь 09.11.2001. Усл. печ.л. 12.56 Уч.-изд. л. 12.70.

Тира* 400 зк-j. С 2488. Зак. 2112

И ПК Издательств стандартов. 107076. Москва. Колодезный пер., 14 hllp://www.slandards.ru e-mail: inro&Mandanlcnj

Набрано в Калужской типографик стандартов на ПЭВМ Калужская топография стандартов.. 248021. Калуга, ул. Московская. 256.

ПЛР № 040138