Создать подчиненный канал
Назначение
Команда
OCUR
предназначена для создания подчиненного канала между клиентским
приложением и СУБД ЛИНТЕР.
Параметры вызова
inter(CBL, NULL, NULL, {CondBuf }, NULL);
Входные данные
Входными данными является контрольный блок
CBL
.
В нем должны быть заполнены поля:
Имя поля | Значение | |
---|---|---|
Prior
| Приоритет подчиненного канала | |
NumChan
| Номер главного канала | |
Command
|
"OCUR"
| |
Node
| Имя ЛИНТЕР-сервера | |
PrzExe
| Режим обработки запросов |
Выходные данные
Выходными данными является контрольный блок
CBL
.
В нем будут возвращены:
Имя поля | Значение | |
---|---|---|
CodErr
| Код завершения запроса к СУБД ЛИНТЕР | |
NumChan
| Номер канала | |
SysErr
| Код состояния ОС |
Описание
В контрольном блоке (поле
NumChan
)
устанавливается номер открытого подчиненного канала (курсора).
Команда
OCUR
должна использоваться только после успешного создания главного
канала.
Приоритет подчиненного канала может быть выше главного канала.
Различные подчиненные каналы (курсоры) могут иметь отличающиеся друг от друга и от главного канала режимы обработки запросов.
Коды завершения
Код | Описание | |
---|---|---|
NOFREEKAN | Нет свободных каналов для создания подчиненного канала (исчерпаны ресурсы СУБД ЛИНТЕР) |
Пример формирования команды
#include < string.h > #include < stdlib.h > #include "inter.h" L_LONG LinterOCUR(TCBL * pCBL, L_WORD NumChan, L_WORD Prior, L_LONG PrzExe) { memset(pCBL, 0, sizeof(TCBL)); memcpy(pCBL- >Command, "OCUR", 4); pCBL- >NumChan = NumChan; pCBL- >PrzExe = PrzExe; pCBL- >Prior = Prior; pCBL- >PrzExe &= ~Q_ASYNC; inter(pCBL, NULL, NULL, NULL, NULL); return pCBL- >CodErr; }
Пример использования команды
#include < stdio.h > #include < stdlib.h > #include < string.h > #include "inter.h" #include "exlib.h" #ifndef WINCE int main() #else int exocur() #endif { TCBL CBLconnect, CBL1; L_CHAR Name_Pass[] = "SYSTEM/MANAGER8"; L_CHAR Node[] = " "; L_WORD Priority = 0; L_LONG PrzExe = M_EXCLUSIVE | Q_ENCODE | M_BINARY; L_LONG Err; memset(&CBLconnect,0,sizeof(TCBL)); Err = LinterOPEN(&CBLconnect, Name_Pass, Node, Priority, PrzExe); if (Err != NORMAL) PrintError(&CBLconnect); printf("Connect to RDBMS Linter\n"); Err = LinterOCUR(&CBL1, CBLconnect.NumChan, Priority, PrzExe); if (Err != NORMAL) PrintError(&CBL1); printf("Opening Channel\n"); printf("End Example\n"); return 0; }