Дать идентификатор узла сети
Назначение
Команда
FNOD
предназначена для получения идентификатора заданного узла сети.
Параметры вызова
inter(CBL, VarBuf, NULL, [CondBuf], RowBuf);
Входные данные
Входными данными являются:
-
контрольный блок
CBL
; -
буфер описания параметров
VarBuf
.
В контрольном блоке должны быть заполнены поля:
Имя поля | Значение | |
---|---|---|
NumChan
| Номер канала | |
Command
|
"FNOD"
| |
LnBufRow
| Длина буфера выборки данных | |
Node
| Имя ЛИНТЕР-сервера |
Буфер описания параметров
VarBuf
должен быть строкой длиной не
более 8 символов и содержать имя интересующего узла сети.
Примечание
Если строка имени узла в
VarBuf
меньше 8 символов, она должна дополняться пробелами до 8 символов
либо заканчиваться двоичным нулем.
Выходные данные
Выходными данными являются:
-
контрольный блок
CBL
; -
буфер выборки данных RowBuf.
В контрольном блоке будут возвращены:
Имя поля | Значение | |
---|---|---|
CodErr
| Код завершения запроса к СУБД ЛИНТЕР | |
LnBufRow
| Фактическая длина буфера выборки данных | |
SysErr
| Код состояния ОС |
Информация в буфере выборки данных
RowBuf
будет представлена в следующем виде:
L_LONG Node_Id; /* Идентификатор узла */
Описание
Для выполнения команды используется системная таблица
SERVERS
.
Примечание
Вместо команды
FNOD
можно воспользоваться SELECT-запросом из системной таблицы
SERVERS
(при наличии прав на чтение данных из нее).
Коды завершения
Код | Описание | |
---|---|---|
NORMAL | Нормальное завершение | |
SMALLBUFKOR | Недостаточный размер буфера выборки данных | |
EORR | Указанный узел не найден |
Пример формирования команды
#include < string.h > #include < stdlib.h > #include "inter.h" L_LONG LinterFNOD(TCBL * pCBL, L_CHAR * Node, L_LONG * Out) { memcpy(pCBL- >Command, "FNOD", 4); pCBL- >LnBufRow = sizeof(L_LONG); pCBL- >PrzExe &= ~Q_ASYNC; inter(pCBL, Node, NULL, NULL, Out); return pCBL- >CodErr; }
Пример использования команды
#include < stdio.h > #include < stdlib.h > #include < string.h > #include "inter.h" #include "exlib.h" #ifndef WINCE int main() #else int exfnod() #endif { TCBL CBLconnect; L_CHAR Name_Pass[] = "SYSTEM/MANAGER8"; L_CHAR Node[] = " "; L_CHAR NodeFind[] = "Linter"; L_WORD Priority = 0; L_LONG PrzExe = M_EXCLUSIVE | Q_ENCODE | M_BINARY; L_LONG Err; L_LONG Out; 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 = LinterFNOD(&CBLconnect, NodeFind, &Out); if (Err != NORMAL) PrintError(&CBLconnect); printf("FNOD, Out=%ld\n", Out); printf("End Example\n"); return 0; }