/*
**    Name: initialise.c
**
**    Date: Thu Jan 17 12:02:13 2002
**
*/

#include "ODBC.h"
#include "rmamem.h"
#include "sql.h"

int odbcparameter_index = 0;

ODBCLibQueryType odbcquerytype;

int odbcparameter_copyback[ODBCLIBMAXPARAMETERS];

ODBCBoundInfo odbcboundinfo[ODBCLIBMAXBOUNDPARAMETERS];

_kernel_oserror *odbcrequest_error = NULL;

int odbcnewbound[ODBC_MAX_NEW_BOUND];

int odbcnewbound_count = 0;

_kernel_oserror odbcerror_memory     = { 0x56780, "Not enough RMA for ODBC parameters" };
_kernel_oserror odbcerror_parameters = { 0x56781, "Too many ODBC parameters" };
_kernel_oserror odbcerror_bound      = { 0x56782, "Too many bound ODBC buffers" };
_kernel_oserror odbcerror_busy       = { 0x56783, "ODBC manager is busy with another query" };
_kernel_oserror odbcerror_block      = { 0x56784, "Missing ODBC parameter block" };

void initialise_parameters(int type,int subtype)
    {
    odbcquerytype.type = type;
    odbcquerytype.subtype = subtype;

    odbcparameter_index = 0;
    }

/* Start a new parameter SWI, discarding anything left by an abandoned query */

void begin_request(void)
    {
    free_parameters();

    odbcrequest_error = NULL;
    odbcnewbound_count = 0;
    }

void request_error(_kernel_oserror *error)
    {
    if (odbcrequest_error == NULL)
        {
        odbcrequest_error = error;
        }
    }

int request_succeeded(void)
    {
    return odbcquerytype.reply == SQL_SUCCESS ||
           odbcquerytype.reply == SQL_SUCCESS_WITH_INFO;
    }
