Прочее образование

Какая программа читает файл формата grs?

Схема данных и абстрактная структура записи, рассмотренные в предыдущей секции, определяют лишь логическую структуру записи. Физическая реализация этой структуры остается неопределенной. Стандарт Z39.50 требует, чтобы записи из внутреннего представления отображались во внешние структуры, которые и пересылаются по сети. Для внешних представлений, которые стандартизуются в классе (recordSyntax) {Z39.50 5}, физическая реализация становится определяющей.

Существует всего один универсальный формат внешнего представления (recordSyntax), который однозначно отображает абстрактную структуру записи в экспортируемую внешнюю физическую структуру. Он называется GRS-1 (Generic Record Syntax) OID {Z39.50 5 105}.

ASN.1 определение записи в формате GRS-1 можно найти в Приложении П7.2. Если в этом определении оставить основное, исключив варианты и метаинформацию, останется:

GenericRecord ::= SEQUENCE OF TaggedElement
TaggedElement ::= SEQUENCE {
tagType [1] IMPLICIT INTEGER OPTIONAL,
tagValue [2] StringOrNumeric,
content [4] ElementData }

ElementData ::= CHOICE{
octets OCTET STRING,
numeric INTEGER,
date GeneralizedTime,
ext EXTERNAL,
string InternationalString,
trueOrFalse BOOLEAN,
oid OBJECT IDENTIFIER,
intUnit [1] IMPLICIT IntUnit,
elementNotThere [2] IMPLICIT NULL, --element requested but not there
elementEmpty [3] IMPLICIT NULL, --element there, but empty
noDataRequested [4] IMPLICIT NULL, --variant request said 'no data'
diagnostic [5] IMPLICIT EXTERNAL,
subtree [6] SEQUENCE OF TaggedElement }
END

т. е. последовательность элементов (taggedElement), каждый их которых содержит тип тэга (tagType, т. е. номер tagSet), значение тэга (tagValue) и данные (content). Значение тэга может быть числовым или текстовым. Данные – это или значение или вложенный элемент (taggedElement) с описанной структурой (определение subtree ничем не отличается от определения GenericRecord). Таким образом, GRS-1 представляет собой последовательность элементов со структурой, определенной в терминах, аналогичных определению абстрактной структуры записи и схемы данных, с бесконечным количеством вложений.

5.5. APDU presentRequest и presentResponse
Для извлечения найденных ранее записей origin посылает target APDU presentRequest, target пересылает затребованные записи или диагностику в APDU presentResponse. Исключения описаны в секции 5.8. Структура APDU presentRequest и presentResponse приведены в Приложении П6.4.

Следует обратить внимание, что собственно данные в APDU presentResponse определены как

Records ::= CHOICE{
responseRecords [28] IMPLICIT SEQUENCE OF NamePlusRecord,
nonSurrogateDiagnostic [130] IMPLICIT DefaultDiagFormat,
multipleNonSurDiagnostics [205] IMPLICIT SEQUENCE OF DiagRec}
--
NamePlusRecord ::= SEQUENCE{
name [0] IMPLICIT DatabaseName OPTIONAL,
record [1] CHOICE{
retrievalRecord [1] EXTERNAL,
surrogateDiagnostic [2] DiagRec }

т. е. могут включать в себе не только извлекаемые записи retrievalRecord, но и диагностические сообщения DiagRec. При этом каждая извлекаемая запись представлена через внешнее определение EXTERNAL. Структуры, определенные как EXTERNAL обычно идентифицируются по OID и дополнительные ASN.1 определения
Александр Васильев
Александр Васильев
63 160
Лучший ответ
1с от версии 8.0 и выше.