Создать подчиненный канал

Назначение
 

Команда OCUR предназначена для создания подчиненного канала между клиентским приложением и СУБД ЛИНТЕР.

Параметры вызова

inter(CBL, NULL, NULL, {CondBuf }, NULL);

Входные данные

Входными данными является контрольный блок CBL.

В нем должны быть заполнены поля:

Имя поля Значение
Prior Приоритет подчиненного канала
NumChan Номер главного канала
Command "OCUR"
Node Имя ЛИНТЕР-сервера
PrzExe Режим обработки запросов
Выходные данные

Выходными данными является контрольный блок CBL.

В нем будут возвращены:

Имя поля Значение
CodErr Код завершения запроса к СУБД ЛИНТЕР
NumChan Номер канала
SysErr Код состояния ОС
Описание

В контрольном блоке (поле NumChan) устанавливается номер открытого подчиненного канала (курсора).

Команда OCUR должна использоваться только после успешного создания главного канала.

Приоритет подчиненного канала может быть выше главного канала.

Различные подчиненные каналы (курсоры) могут иметь отличающиеся друг от друга и от главного канала режимы обработки запросов.

Коды завершения
Код Описание
NOFREEKAN Нет свободных каналов для создания подчиненного канала (исчерпаны ресурсы СУБД ЛИНТЕР)
Пример формирования команды
#include < string.h >
#include < stdlib.h >
#include "inter.h"

L_LONG LinterOCUR(TCBL * pCBL, L_WORD NumChan, L_WORD Prior, L_LONG PrzExe)
  {
  memset(pCBL, 0, sizeof(TCBL));
  memcpy(pCBL- >Command, "OCUR", 4);
  pCBL- >NumChan = NumChan;
  pCBL- >PrzExe = PrzExe;
  pCBL- >Prior = Prior;
  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    exocur()
#endif
  {
  TCBL    CBLconnect,
          CBL1;
  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 = LinterOCUR(&CBL1, CBLconnect.NumChan, Priority, PrzExe);
  if (Err != NORMAL)
    PrintError(&CBL1);
  printf("Opening Channel\n");

  printf("End Example\n");

  return 0;
  }