Поля контрольного блока

CodErr

Код завершения запроса к СУБД ЛИНТЕР. Устанавливается СУБД ЛИНТЕР. В это поле заносятся коды завершения, сформированные самим интерфейсом нижнего уровня (при неправильном вызове функции inter), и результаты обработки команды СУБД ЛИНТЕР. Поле CodErr дублируется значением, возвращаемым непосредственно функцией. Так, например, если адрес контрольного блока при вызове функции был передан неверно, то такую ошибку можно обнаружить только через анализ кода завершения самой функции inter. Список возможных кодов завершения приведен в документе «СУБД ЛИНТЕР. Справочник кодов завершения», подраздел «Коды завершения при коммуникационных операциях (1000-1011)».

Prior

Приоритет канала; может иметь значения от 0 (самый низкий приоритет) до 249 (высший приоритет). Используется для изменения очередности обработки запросов ядром СУБД. В большинстве приложений рекомендуется задавать нулевой приоритет, так как в этом случае ядро выделяет поочередно одинаковый квант времени для всех запросов, и обработка запросов выполняется в псевдопараллельном режиме. Более высокий приоритет канала следует устанавливать в приложениях, предъявляющих повышенные требования к временным характеристикам.

NumChan

Номер канала СУБД, по которому выполняется обработка запроса. При создании (открытии) канала СУБД возвращает в этом поле номер, назначенный созданному каналу. Если пользовательская программа открыла несколько каналов и использует только один контрольный блок, то при каждом обращении к СУБД в этом поле должен явно задаваться номер канала, по которому происходит обработка команды СУБД. При этом содержимое остальных полей контрольного блока зависит от подаваемого запроса: если запрос является продолжением обработки последнего выполненного по данному каналу запроса, то контрольный блок должен содержать контекст последнего запроса, если предполагается выполнение нового запроса, контрольный блок должен содержать контекст нового запроса. В обоих случаях поля, значения которых использовались для открытия канала, не должны изменяться. Если же открыт один канал или несколько, но каждый из них имеет собственный контрольный блок, то это поле можно не формировать (оно остается неизменным после открытия канала в течение всего сеанса работы с СУБД).

UserName

Имя пользователя. Зарезервировано для будущего использования.

Command

Имя команды интерфейса нижнего уровня.

Node

Имя ЛИНТЕР-сервера (см. таблицу 1). Если поле содержит пробелы или двоичные нули, предполагается работа с сервером по умолчанию.

RowId

Внутренний системный номер записи, которая была последней обработана (найдена/добавлена/изменена/удалена) в данном канале. Заполняется СУБД ЛИНТЕР только при выполнении запроса на обработку данных. В некоторых случаях устанавливается приложением для прямого доступа к этой записи.

RowCount

Количество реально обработанных (найденных, добавленных, удаленных или измененных) записей при выполнении запроса. Заполняется СУБД ЛИНТЕР после нормального завершения обработки запроса.

PrzExe

Указание о режиме обработки команды интерфейса нижнего уровня. Режим устанавливается пользовательской программой в контексте команды СУБД ЛИНТЕР. Конкретные значения этого поля приведены в таблице 2.

SysErr

Код ошибки, переданный СУБД операционной/сетевой средой при обработке запроса. В это поле передаются, в основном, коды завершения файловых операций и операций обмена данными ОС. Значение SysErr используется для уточнения и детализации кода завершения, сформированного ядром СУБД ЛИНТЕР. Так, например, код завершения СУБД ЛИНТЕР Ошибка создания файла может быть вызван разными причинами: отсутствием свободного места на устройстве, неактивным состоянием устройства и т.п. Код завершения, помещаемый в поле SysErr для однотипных ошибочных ситуаций, в различных операционных средах может иметь разное значение, поэтому для его анализа следует руководствоваться справочными документами соответствующей операционной системы.

LnBufRow

Длина буфера записи выборки данных (RowBuf) при обработке команды. Для входных параметров – это предполагаемая или максимально возможная длина записи выборки данных, для выходных – реальная (фактически полученная) длина записи выборки данных. В первом случае поле заполняется пользовательской программой, во втором – СУБД ЛИНТЕР. Если реальная длина записи выборки данных окажется больше, чем длина буфера выборки данных, выполнение SELECT-запроса будет прервано с выдачей соответствующего кода завершения (кроме случая использования RowBuf в команде OPEN). Если буфер приложения может вместить запись выборки данных, это поле будет содержать реальную длину выбранной записи. Так как значение в LnBufRow изменяется после каждой переданной записи, то при переходе к другим SELECT-запросам нужно вновь инициализировать это поле.

CharSet

Номер кодовой страницы (для внутреннего использования СУБД ЛИНТЕР).

Таблица 2. Возможные значения поля PrzExe контрольного блока
Значение PrzExeМакроопределение в intlib2.hСпецификация
0x00000000M_BINARYПередать выборку данных на SELECT-запрос в формате без спецификаций полей записи
0x00000003M_SPECПередать выборку данных на SELECT-запрос в формате со спецификациями полей записи
0x00000100M_OPTIMISTICУстанавливает режим обработки транзакций OPTIMISTIC

Примечание

Режим OPTIMISTIC устарел. Применять не рекомендуется.

0x00000200M_SHAREНе используется
0x00000400M_EXCLUSIVEУстанавливает режим обработки транзакций EXCLUSIVE (PESSIMISTIC)
0x00001000Q_ASYNCУстанавливает режим асинхронного взаимодействия с СУБД ЛИНТЕР
0x00002000Q_ASYNCDONEУстанавливается интерфейсом нижнего уровня по факту завершения обращения к СУБД ЛИНТЕР при работе в асинхронном режиме
0x00400000Q_USE_UTF8Транслировать SQL-запросы в кодировке UTF8 независимо от установленной клиентской кодировки
0x00800000Q_USE_ADO Информировать о наличии заблокированных записей при выборке данных (см. команды GETM, GETN, GETP). Зарезервировано для будущего применения
0x40000000Q_KRBREQИдентификация и аутентификация пользователя должна выполняться по Kerberos-протоколу

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

  • режим обработки транзакций AUTOCOMMIT;

  • синхронный режим выполнения запросов;

  • формат выборки данных не содержит спецификации полей записи;

  • режим приема/передачи данных: по умолчанию.

Режим приема/передачи данных для СУБД ЛИНТЕР по умолчанию выбирается следующим образом:

  • если по каналу подан SQL-запрос set names (кодировка соединения по умолчанию) (см. документ «СУБД ЛИНТЕР. Справочник по SQL», пункт «Кодировка соединения по умолчанию»), то используется заданная в запросе кодовая страница (при условии, что она загружена в БД);

  • иначе, если задана переменная окружения LINTER_CP, то используется указанная в этой переменной кодовая страница (при условии, что она загружена в БД);

  • иначе используется кодировка по умолчанию, которая автоматически определяется СУБД ЛИНТЕР в соответствии с правилами, диктуемыми ОС, в которой функционирует СУБД;

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