где к' - число статей в справочнике;
р' - число байтов в статье справочника ЗД.
Черт. 8
Если в файле обмена за записями переменной длины следуют записи факсированной длины (т. е. записи содержат только поля данных фиксированной длины), где все ЗД, начиная с некоторой, имеют идентичные • значения ведущей метки и справочника, то ведущую метку и справочник первой ЗД. имеющей ведущую метку и справочник идентичные остальным ЗД, применяют ко всем последующим ЗД. В этом случае в последующих ЗД ведущая метка и справочник могут быть опущены.
3.1. Ведущая, метка ЗД
Ведущая метка каждой ЗД должна состоять из полей, приведенных на черт. 9, и определенных далее в пп. 5.3.1.1—5.3.1.7.
3.1.1. Поле „Длина записи” (ЗД ОП 0-4)
Определяет общую длину ЗД в байтах . Содержание поля цифровое. Значение „0” в этом поле означает длину ЗД, превышающую 99 999ё
3.1.2. Резерв (ЗД ОП5)
Поле резервируется для последующей стандартизаци
иОП |
Имя поля |
Длина |
Содержимое |
0 |
Длина записи |
5 / |
Цифры |
5 |
Резерв |
1 |
Символ ПРОБЕЛ |
6 |
Идентификатор ведущей метки |
1 |
Символ |
7 |
Резерв |
5 |
Символы ПРОБЕЛ |
12 |
Базовый адрес области данных пользователя* |
5 |
Цифры |
17 |
Резерв |
3 |
Символы ПРОБЕЛ |
20 |
План статьи |
4 |
Цифры |
Черт. 9
Поле „Идентификатор ведущей метки” (ЗД ОП6)
Определяет, что запись является ЗД, и указывает на наличие ведущих меток и справочников в последующих ЗД.
Символы в этом поле означают:
прописная латинская буква D — последующая ЗД содержит метку и справочник;
прописная латинская буква R - ведущая метка и справочник в последующих ЗД (следующих за текущей ЗД) отсутствуют, и ведущую метку и справочник текущей ЗД следует применять для каждой последующей ЗД.
езерв (ЗДОП 7-11)
Данное поле резервируется для последующей стандартизации.
Базовый адрес области данных (ЗД ОП 12-16)
Поле определяет позицию первого поля данных пользователя в ЗД.
Примечание. Первым полем данных пользователя будет поле идентификатора записи.
Резерв (ЗДОП17-19)
Поле резервируется для последующей стандартизации
Поле „План статьи” (ЗД ОП20-23)
Определяет длины подполей статей справочника внутри каждой ЗД и состоит из подполей приведенных на черт. 10. Каждое подполе этого поля должно содержать одну цифру.
Размер подполя ,Длина поля” (ЗДОП20)
Подполе определяет длину (в байтах) подполя статей справочника „Длина поля” и содержит цифру от 1 до 9 включительно.
Размер подполя „Позиция поля" (ЗД ОП21)
Подполе определяет длину (в байтах) подполя статей справочника „ Позиция поля” и содержит цифру от 1 до 9 включительно
ОП |
Имя под поля |
Длина |
Содержимое |
20 |
Размер подполя „Длина поля” |
1 |
Цифра |
21 |
Размер подполя „Позиция поля” |
1 |
Цифра |
22 |
Резерв |
1 |
Цифра |
23 |
Размер подполя „Метка поля” |
1 |
Цифра |
Черт. 10
Резерв (ЗДОП22)
Подполе резервируется для последующей стандартизации в целях расширения плана статьи и содержит цифру 0.
Размер подполя ,,Метка поля ” (ЗД ОП23)
Подполе определяет длину (в байтах) подполя статей справочника „Метка поля” и содержит цифру от 1 до 7 включительно. Значение, указанное в этом подполе, должно быть равно значению, указанному в подполе „Размер подполя „Метка поля” ЗОД ОП 23. .
- Примечание. В п. 5.3 используются следующие обозначения:
m - размер подполя „Длина поля”;
п' - размер подполя „Позиция поля”;
t - размер подполя „Метка поля”.
С п р а в о ч н и к ЗД
Состоит из повторяющихся статей справочника ЗД, длины подполей которых определяются планом статьи. Он должен содержать одну статью справочника для каждого поля данных пользователя и должен заканчиваться разделителем поля (1/14). Все метки полей должны быть определены в ЗОД.
Статья справочника определяет местоположение и длину соответствующего поля данных пользователя и состоит из подполей, приведенных на черт. 11. Каждая статья содержит метку поля, длину поля и позицию поля в указанной последовательности и состоит из m' + n + t байтов.
Статьи справочника должны однозначно соответствовать полям данных пользователя. Любая метка поля, за исключением метки поля „0 . . . может повторяться в справочнике З Д Для неиерархических структур повторяющиеся метки полей должны быть логически смежными в справочнике, и метки полей ЗД должны встречаться в том же порядке,что и метки полей ЗОД. Метки полей, соответствующие недостающим полям данных пользователя, могут бьїть опущены в справочнике, если они не требуются для описания структуры. Для иерархических структур данных (по п. 5.2.3.1.3) статьи справочника ЗД должны иметь то! же пордок, что и после- ■ довательность прямого обхода соответствующих полей данных полученного дерева данных этой ЗД. JСтруктура статьи справочника ЗД
ОП |
Имя подполя |
Длина |
Содержимое |
Р(і- 1) |
Метка поля |
t |
Буквенно-цифровое |
Р (і - 1) + t |
Длина поля |
m |
Цифры |
р (і - 1) + t + m' |
Позиция поля |
/ n |
Цифры |
где р = t + п/ + п ;
= индекс статьи справочника (і = 1 .. . п).
Черт. 11
. Подполе ,,Метка поля ” ЗД
Содержит метку поля, идентифицирующую поле данных, и может содержать от 1 до 7 буквенно-цифровых символов.
Метка поля „0 ... 1” идентифицирует поле идентификатора записи, должна встречаться только один раз в каждой ЗД и должна быть в справочнике ЗД первой.
2. Подполе, Длина поля ” ЗД
Определяет длину поля (в байтах), которому оно соответствует. Подполе содержит целое число, выровненное вправо и дополненное ведущими нулями. Длина поля включает разделитель поля.
3. Подполе,,Позиция поля ” ЗД
Определяет относительную позицию первого байта в поле, к которому относится статья. Подполе содержит целое число, выровненное вправо и дополненное ведущими нулями. Позицию поля указывают относительно базового адреса области данных пользователя*, указанного в ЗД ОП 12—16. Первый байт первого поля, следующего за справочником, должен иметь нумерацию 0.
О б л а с т ь данных пользователя
Поля данных области данных пользователя содержат информацию пользователя, предназначенную для обмена. Структура данных и тип данных для каждого поля данных определяются полем описания данных ЗОД с соответствующей меткой поля. Подполя содержат элементы данных, соответствующие меткам, приведенным в соответствующих подполях ЗОД. Каждое поле заканчивается разделителем поля (У/14). В структуре с разделителями, где символом разделения подпол ей является символ РЭ (1/15), пропущенные элементы данных должны быть представлены следующими один за другим разделителями. Последовательность разделителей смежных подполей может быть заменена разделителем поля (1/14),
Поля данных, содержащие элементарные символы, окончание которых определяется длиной поля, шириной формата, разделителем, определенным пользователем, или разделителем поля, могут содержать символ разделения элементов (РЭ), который будет трактоваться при реализации как символ данных пользователя.
Описание данных пользователя приведено в разд. 6.
Поле идентификатора записи (метка поля 0 ... 1)
Каждая ЗД содержит только одно поле идентификатора записи. Содержание поля идентификатора записи ЗД должно согласовываться с соответствующим полем описания данных ЗОД и должно быть уникальным в пределах файла. Идентификатор должен быть выровнен влево и дополнен справа пробелами (2/0), если он алфавитно-цифровой, или выровнен вправо и дополнен слева нулями (3/0) , если он цифровой.
'Примечание. Уникальные идентификаторы рассмотрены в разд. А. 3 приложения А.
Поля данных пользователя
Элементарные символьные поля данных
Поля данных пользователя ЗД содержат строку .символов, заканчивающуюся соответствующим разделителем поля (см. табл. 1) .
Файлы обмена, состоящие только из полей данных указанных структуры и типа, должны иметь следующие управляющие символы в своей ведущей метке ЗОД:
Поле ведущей метки ОП Символы
Указатель применения 9 ПРОБЕЛ
Длина управляющих элементов поля 10 и 11 00
Остальные поля ведущей метки ЗОД определяются по п. 5.2.1.
Составные поля данных
Данными в этих полях должны быть символы, разделители и строки битов, которые соответствуют определениям, содержащимся в соответствующем поле описания данных (по п. 6.2) .
Файлы обмена, состоящие исключительно из полей указанных структур, имеют следующие символы в своей ведущей метке ЗОД:
Поле ведущей метки ОП Символы
Указатель применения 9 ПРОБЕЛ
Длина управляющих элементов поля 10 и 11 06
Остальные поля ведущей метки ЗОД определяются по п. 5.2.1.
ОПИСАНИЕ ТИПОВ И СТРУКТУР ДАННЫХ ПОЛЬЗОВАТЕЛЯ
Описание элементарных символьных полей данных
Настоящий пункт определяет метод описания данных пользователя, представляющих собой строку элементарных символов.
Поле описания данных для элементарных полей данных должно содержать только строку символов, представляющую собой имя поля данных пользователя (см. черт. 2).
Описание составных полей данных
Настоящий пункт определяет метод для описания структур и типов данных более сложных, чем те, которые охватывает п. 6.1
.
- Структуры данных, определенные в этом пункте, могут быть элементарными, векторными и структурами массивов, содержащих строки символов, числа с неявной точкой, с явной точкой, масштабированные с явной точкой, строку битов символьного режима, поле битов и смешанные типы данных. Поле описания данных должно содержать управляющую информацию, разделители, имя поля, метки подполей для векторов и массивов и информацию о формате поля данных по пп. 6.2.1 - 6.2.4 и 7.1.
Поля описания данных
Поля описания данных для составных полей данных должны содержать управляющие элементы поля, имя поля данных, метки элементов данных и форматы данных (примеры приведены на черт. 12). Управляющие элементы поля, имена, метки, форматы допустимых структур и типов данных приведены в табл. 2 и определяются далее в этом подразделе. Использование разделителей приведено в табл. 1. Формат поля описания данных определяется по табл. 2.
В
Тип
символ неявная точка явная точка t
масштабированный с явной точкой строка битов символьного режима поле битов смешанный
поле описания данных могут быть описаны следующие типы данных:Содержимое
строки символов
представление чисел с неявной точкой
представление чисел с явной точкой, немасштабиро- ванное (фиксированная запятая)
представление чисел с явной точкой, масштабиро
ванное (плавающая запятая)
цифры 0 и 1 -
двоичные цифры
один или более из вышеперечисленных типов данных
В табл. 2 применяются следующие синтаксические правила:
[ ] — определяет необязательность присутствия подполя;
’имя’ — определяет строку символов, идентицирующую поле в целом;
’векторная метка’ - определяет набор элементарных меток, который соответствует набору подполей в записях данных и имеет вид: метка 1! метка 2! . . .; 1
■ 4) ’декартова метка’ — определяет набор меток, которые включают в себя векторные метки, образующие Декартово произведение, имеющее порядок, соответствующий набору подполей в записях данных, и принимает вид: метка 1! метка 2! ... * метка а! метка Ь! . ;
’уэф’ — определяет управляющие элементы формата, которые состоят из строки символов, определяющих формат поля данных.
Чтобы избежать неоднозначности при неполном описании данных, требуется наличие следующих непосредственно друг за другом разделителей, указывающих на отсутствие имени, метки или формата.Структура области описания данных для файла уровня 3*
Область описания данных
Поля описания данных
Пример для поля элементарных данных
*Эти управляющие элементы поля не используются (см. п. 5.2.3.1.1)
Пример для поля векторных данных
Пример для поля массива
Черт. 12
Разделители и их использование
Разделитель |
Печатный |
Запись |
Ис пользо вани е |
информации |
символ |
||
(РЗ) 1/14 |
5 |
ЗОД, ЗД |
Разделитель поля |
(РЗ) 1/15П |
1 & |
зд |
Разделитель элементов: 1) для ограничения подполей в |
|
|
|
полях, где это не определяется фор- |
|
|
|
матом; |
|
|
ЗОД |
2) для ограничения до и после не- |
|
|
|
обязательного имени поля и векторной метки; |
|
|
ЗОД |
3) для начального ограничения управляющих элементов иерархической структуры в поле с меткой 0 ... 0; |
|
|
ЗОД |
4) для начального ограничения управляющих элементов формата |
(!) 2/1 |
1 |
ЗОД |
Для ограничения меток элементов данных в пределах векторной метки |
(*) 2/10 |
* |
ЗОД |
Для ограничения векторных меток в декартовой метке |