Закрыть канал
Назначение
Команда
CLOS
предназначена для освобождения главного или подчиненного канала
связи (соединения или курсора) между приложением и ядром
СУБД ЛИНТЕР.
Параметры вызова
inter(CBL, NULL, NULL, [CondBuf], NULL);
Входные данные
Входными данными является контрольный блок
CBL
.
В нем должны быть заполнены поля:
Имя поля | Значение | |
---|---|---|
NumChan
| Номер закрываемого канала | |
Command
|
"CLOS"
| |
Node
| Имя ЛИНТЕР-сервера |
Выходные данные
Выходными данными является контрольный блок
CBL
.
В нем будут возвращены:
Имя поля | Значение | |
---|---|---|
CodErr
| Код завершения запроса к СУБД ЛИНТЕР | |
SysErr
| Код состояния ОС |
Описание
Команда
CLOS
делает канал неактивным и освобождает все связанные с ним ресурсы.
Закрытый канал может быть использован другим приложением
либо повторно тем же самым приложением.
Курсоры могут закрываться независимо друг от друга.
При закрытии главного канала СУБД ЛИНТЕР автоматически закрывает все подчиненные каналы (курсоры).
Право на закрытие канала имеет только то приложение, которое открыло этот канал.
Если в момент закрытия канала в нем имеется незавершенная транзакция, то она будет завершена командой COMT автоматически.
Коды завершения
Код | Описание | |
---|---|---|
DupCurName | Дубликат имени курсора |
Пример формирования команды
#include < string.h > #include < stdlib.h > #include "inter.h" L_LONG LinterCLOS(TCBL * pCBL) { memcpy(pCBL- >Command, "CLOS", 4); 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 exclos() #endif { TCBL CBLconnect; 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 = LinterCLOS(&CBLconnect); if (Err != NORMAL) PrintError(&CBLconnect); printf("Close Channel\n"); printf("End Example\n"); return 0; }