Дать идентификатор узла сети

Назначение
 

Команда 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;
  }