Дать идентификатор пользователя
Назначение
Команда
FUSR
предназначена для получения идентификатора указанного пользователя.
Параметры вызова
inter(CBL, VarBuf, NULL, [CondBuf], RowBuf);
Входные данные
Входными данными являются:
-
контрольный блок
CBL
; -
буфер описания параметров
VarBuf
.
В контрольном блоке должны быть заполнены поля:
Имя поля | Значение | |
---|---|---|
NumChan
| Номер канала | |
Command
|
"FUSR"
| |
LnBufRow
| Длина буфера выборки данных | |
Node
| Имя ЛИНТЕР-сервера |
Буфер описания параметров
VarBuf
должен содержать имя интересующего пользователя. В отличие от
употребления имени пользователя при
его идентификации (например, в команде
OPEN
), в данной команде оно не проходит синтаксического разбора,
его символы воспринимаются в том виде, в котором заданы, без изменения
регистра. Поэтому в конкретном случае любые двойные кавычки
(если они используются в имени пользователя) представляют самих себя и
не являются элементом синтаксической конструкции.
Например, приведенные ниже имена пользователей (как они представлены в
VarBuf) являются различными именами:
Иванов, ИВАНОВ, "ИВАНОВ", Smit, SMIT, "Smit"
Примечание
Если длина имени пользователя меньше MAX_ID_LEN символов, то имя пользователя должно быть дополнено справа пробелами до MAX_ID_LEN символов.
Выходные данные
Выходными данными являются:
-
контрольный блок
CBL
; -
буфер выборки данных
RowBuf
.
В контрольном блоке будут возвращены:
Имя поля | Значение | |
---|---|---|
CodErr
| Код завершения запроса к СУБД ЛИНТЕР | |
LnBufRow
| Фактическая длина буфера выборки данных | |
SysErr
| Код состояния ОС |
Информация в буфере выборки данных
RowBuf
будет представлена в следующем виде:
L_LONG User_Id; /* Идентификатор пользователя */
Описание
По этой команде СУБД сначала просматривает очередь пользователей в
оперативной памяти ядра для поиска указанного имени.
Если нужного пользователя не найдено, поиск продолжается в таблице
пользователей
$$$USR
.
Коды завершения
Код | Описание | |
---|---|---|
NORMAL | Нормальное завершение | |
SMALLBUFKOR | Недостаточный размер буфера выборки данных | |
EORR | Указанный пользователь не найден |
Пример формирования команды
#include < string.h > #include < stdlib.h > #include "inter.h" L_LONG LinterFUSR(TCBL * pCBL, L_CHAR * User, L_LONG * pUser_ID) { memcpy(pCBL- >Command, "FUSR", 4); pCBL- >LnBufRow = sizeof(L_LONG); pCBL- >PrzExe &= ~Q_ASYNC; inter(pCBL, User, NULL, NULL, pUser_ID); return pCBL- >CodErr; }
Пример использования команды
#include < stdio.h > #include < stdlib.h > #include < string.h > #include "inter.h" #include "exlib.h" #ifndef WINCE int main() #else int exfusr() #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; L_LONG ID; L_CHAR User[] = "SYSTEM"; 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 = LinterFUSR(&CBLconnect, User, &ID); if (Err != NORMAL) PrintError(&CBLconnect); printf("FUSR:\n"); printf("User=%s,ID=%ld\n", User, ID); printf("End Example\n"); return 0; }