ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

ЭЛЕКТРОННЫЙ ОБМЕН ДАННЫМИ В УПРАВЛЕНИИ, ТОРГОВЛЕ И НА ТРАНСПОРТЕ (ЭДИФАКТ)

Синтаксические правила

ГОСТ 6.20.1-90
(ИСО 9735-88)

ИЗДАТЕЛЬСТВО СТАНДАРТОВ

МОСКВА

ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

ЭЛЕКТРОННЫЙ ОБМЕН ДАННЫМИ В УПРАВЛЕНИИ, ТОРГОВЛЕ И НА ТРАНСПОРТЕ (ЭДИФАКТ)

Синтаксические правила

EDI for administration, commerce and transport (EDIFACT). Syntax rules

ГОСТ
6.20.1-90

(ИСО 9735-88)

Дата введения 01.01.92

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

Стандарт распространяется на различные сферы народного хозяйства, в том числе применяется в управлении, внешней торговле и на транспорте.

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

Термины, используемые в настоящем стандарте, приведены в приложении 1.

1. УРОВНИ СИНТАКСИСА

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

Уровень А использует набор знаков, указанный в п. 2.2.1.

Уровень В использует набор знаков, указанный в п. 2.2.2.

1.2. Служебный сегмент UNA (согласованный набор ограничителей, см. приложение 2) устанавливает набор знаков (разделители и другие служебные знаки), которые используются при обмене. Если набор используемых служебных знаков отличается от наборов знаков уровней А и В, то эти знаки должны быть установлены партнерами по обмену на многосторонней или двусторонней основе и определены в сегменте UNA.

2. НАБОРЫ ЗНАКОВ

2.1. В передаваемой информации должны применяться установленные в настоящем разделе наборы знаков.

2.2. Для представления, знаков в указанных ниже наборах должны использоваться 7-битные коды ГОСТ 27463 (ИСО 646) или соответствующие 8-битные коды ИСО 6937/2 и ГОСТ 19753 (ИСО 8859).

2.2.1. Набор знаков синтаксического уровня А содержит следующие знаки:

прописные буквы верхнего регистра латинского алфавита - А - Z

цифры - 0 - 9

пробел

точка - .

запятая - ,

дефис или знак минуса - -

левая скобка (открыть скобку) - (

правая скобка (закрыть скобку) - )

наклонная черта - /

знак равенства - =

Знаки, предназначенные для использования в качестве:

Апостроф - ’ указателя конца сегмента

знак плюс - + указателя начала сегмента и разделителя элементов данных

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

вопросительный знак - ? знака отмены

ПРИМЕЧАНИЕ. Вопросительный знак, непосредственно предшествующий одному из следующих знаков: апостроф (’), плюс (+), вопросительный знак (?) - восстанавливает их обычное значение. Например, 10?+10=20 означает 10+10=20. Вопросительный знак в собственном значении обозначается - ??.

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

восклицательный знак - !

кавычки - »

знак процента - %

амперсенд (знак, обозначающий союз «и») - &

звездочка - *

точка с запятой - ;

знак меньше, чем - <

знак больше, чем - >

2.2.2. Набор знаков синтаксического уровня В содержит следующие знаки:

прописные буквы верхнего регистра латинского алфавита - А - Z

строчные буквы нижнего регистра латинского алфавита - а - z

цифры - 0 - 9

пробел

точка - .

запятая - ,

дефис или знак минуса - -

левая скобка (открыть скобку) - (

правая скобка (закрыть скобку) - )

наклонная черта - /

апостроф – ’

знак плюс - +

двоеточие - :

знак равенства - =

вопросительный знак - ?

восклицательный знак - !

кавычки - »

знак процента - %

амперсенд - &

звездочка - *

точка с запятой - ;

знак меньше, чем - <

знак больше, чем - >

Знаки, предназначенные для использования в качестве:

разделитель информации - IS4 указателя конца сегмента

разделитель информации - IS3 указателя начала сегмента и разделителя элементов данных

разделитель информации - IS1 разделителя компонентных элементов данных

ПРИМЕЧАНИЕ. Данный набор знаков не предназначен для передачи сообщении по телексной связи.

3. СТРУКТУРА ОБМЕНА

3.1. Элементы данных пользователей содержатся только в информационных сегментах. Служебные сегменты содержат служебные элементы данных, которые формируют структуру протокола обмена. Содержание служебных сегментов приведено в приложении 2.

Иерархическая структура обмена

3.2. Сегмент UNA и служебные сегменты UNB - UNZ включаются в обмен в установленном порядке. В рамках одного обмена допускается передача нескольких функциональных групп или сообщений. В рамках одной функциональной группы допускается передача нескольких сообщений. Сообщение состоит из сегментов. Структура сегментов и их элементов данных описана в пп. 3.6 и 3.7.

3.3. Обмен должен иметь следующую структуру:

согласованный набор ограничителей - UNA (условный);

заголовок обмена - UNB (обязательный);

заголовок функциональной группы - UNG (условный);

заголовок сообщения - UNH (обязательный);

сегменты данных пользователя - (если требуются);

окончание сообщения - UNT (обязательный);

окончание функциональной группы - UNE (условный);

окончание обмена - UNZ (обязательный).

ПРИМЕЧАНИЕ. Кроме перечисленных служебных сегментов, при необходимости, допускается использование служебного сегмента UNS для разделения зон сообщения.

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

3.4.1. СОЕДИНЕНИЕ содержит один или несколько обменов. Технические протоколы, обслуживающие запуск, поддержание и окончание связи, а также другие операции, не являются предметом рассмотрения настоящего стандарта.

3.4.2. ОБМЕН включает:

служебный сегмент UNA - согласованный набор ограничителей, который, если используется, определяет используемые в обмене синтаксические разделители и другие контрольные знаки;

служебный сегмент UNB - заголовок обмена;

функциональные группы, если они используются, или одно или несколько сообщений;

служебный сегмент UNZ - окончание обмена.

3.4.3. ФУНКЦИОНАЛЬНАЯ ГРУППА включает:

служебный сегмент UNG - заголовок функциональной группы;

одно или несколько сообщений одного и того же типа;

служебный сегмент UNE - окончание функциональной группы.

3.4.4 СООБЩЕНИЕ включает:

служебный сегмент UNH - заголовок сообщения;

один или несколько сегментов данных пользователя;

служебный сегмент UNT - окончание сообщения.

3.4.5. СЕГМЕНТ ДАННЫХ ПОЛЬЗОВАТЕЛЯ включает:

идентификатор (метку) сегмента;

простые элементы данных или

составные элементы данных в зависимости от использования.

3.4.6. ИДЕНТИФИКАТОР (МЕТКА) СЕГМЕНТА содержит:

код сегмента, если он указывается;

значение (я) повторения и вложения.

3.4.7. ПРОСТОЙ ЭЛЕМЕНТ ДАННЫХ содержит значение одного элемента данных.

3.4.8. СОСТАВНОЙ ЭЛЕМЕНТ ДАННЫХ содержит значения двух или более простых взаимосвязанных элементов данных, которые называются компонентными элементами данных.

3.4.9. Ниже приводятся примеры, описывающие обмен в виде последовательности сегментов:

а) функциональная группа включает только одно сообщение:

UNA UNB UNG UNH . . . Сегменты данных пользователя ...UNT UNE UNZ

б) передача одного сообщения без функциональной группы:

UNA UNB UNH . . . Сегменты данных пользователя . . . UNT UNZ

в) передача одного сообщения без функциональной группы и без сегмента UNA:

UNB UNH . . . Сегменты данных пользователя ... UNT UNZ

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

3.6. Каждый сегмент данных пользователя должен иметь следующую структуру:

идентификатор (метку) сегмента, который является обязательным и состоит из:

кода сегмента, являющегося обязательным, разделителя компонентных элементов данных, являющегося условным;

указания повторения или вложения, являющегося условным;

разделитель элементов данных, являющийся обязательным;

простые или составные элементы данных;

знак окончания сегмента, являющийся обязательным.

3.7. Элемент данных в рамках сегмента данных пользователя должен иметь следующую структуру:

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

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

ПРИМЕЧАНИЕ. Разделитель компонентного элемента данных не должен ставиться после последнего простого элемента данных, входящего в составной элемент данных. Разделитель элемента данных не должен ставиться после последнего элемента данных в сегменте.

4. УПЛОТНЕНИЕ ДАННЫХ

4.1. При обмене в элементах данных, имеющих переменную длину, незначащие символы должны опускаться. Это правило распространяется в первую очередь на нули, предшествующие цифровому значению, и конечные пробелы.

4.2. Правило не распространяется на нуль, стоящий перед десятичной запятой (точкой), и на случаи значащих нулей - например в обозначении температуры, если это указано в описании данных.

4.3. При уплотнении данных в сообщениях должны соблюдаться правила, приведенные и пп. 4.3.1-4.3.5.

Примечание. В приведенных далее примерах «Tag» означает идентификатор (метку) начала сегмента, «DE» - элемент данных и «СЕ» - составной элемент данных. В примерах используются разделители уровня А.

4.3.1. Условные сегменты, не содержащие данных, исключаются, в том числе исключаются и идентификаторы начала сегмента.

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

Пример.

Два элемента данных опущены

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

Пример.

В примере, приведенном в п. 4.3.2, последние два элемента данных опущены, а сегмент сокращен.

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

Пример.

В последнем составном элементе данных опущены два компонентных элемента данных.

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

Пример.

В примере, приведенном в п. 4.3.4. последний компонентный элемент данных в первом составном элементе данных опущен. Также опущены три компонентных элемента данных в последнем составном элементе данных.

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

5. ПОВТОРЕНИЕ СЕГМеНТОВ

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

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

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

5.3. Сегменты уровня 0 (приложение 3) не должны повторяться и их идентификаторы не содержат указания на повторение.

5.4. Служебные сегменты (приложение 2), за исключением сегмента ТХТ, не должны повторяться и их идентификаторы не содержат указания на повторение.

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

5.6. При использовании метода косвенного указания на повторение сегменты должны появляться в сообщении в порядке, указанном в описании типа сообщения.

6. ПОВТОРЕНИЕ ЭЛЕМЕНТОВ ДАННЫХ

6.1. Элементы данных (DE) не должны повторяться в сегменте большее число раз, чем это предусмотрено в справочнике сегментов. Если они повторяются меньшее число раз, то применяются правила, содержащиеся в пп. 4.3.2-4.3.5.

Пример

Опущены два из четырех возможных повторений элемента данных DE1.

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

Эго правило применяется также к определенным повторяющимся последовательностям элементов данных, например, в отношении последовательности СЕ1:СЕ2:СЕ3.

Пример