Дать идентификатор узла сети
Назначение
Команда
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;
}