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

#include "ODBC.h"
#include "rmamem.h"
#include <string.h>

void store_bound_parameter(int stmt,int parameter,int size)
    {
    int len;

    int index;

    odbcquerytype.parameters[odbcparameter_index].type = ODBC_REFERENCE;
    odbcquerytype.parameters[odbcparameter_index].size = size;

    if (size > 0)
        {
        if (parameter > 0)
            {
            odbcquerytype.parameters[odbcparameter_index].type = ODBC_BOUNDREFERENCE;
            odbcquerytype.parameters[odbcparameter_index].value = (int)rmamalloc(size);
            memcpy((void *)odbcquerytype.parameters[odbcparameter_index].value,
                   (void *)parameter,
                   size);

/* Add to bound parameter list */

            for (index = 0;index < ODBCLIBMAXBOUNDPARAMETERS;index++)
                {
                if (odbcquerytype.boundparameters[index].stmt == 0)
                    {
                    odbcquerytype.boundparameters[index].stmt    = stmt;
                    odbcquerytype.boundparameters[index].data    = parameter;
                    odbcquerytype.boundparameters[index].rmadata = odbcquerytype.parameters[odbcparameter_index].value;
                    odbcquerytype.boundparameters[index].size    = size;
                    break;
                    }
                }
            }
        else
            {
            odbcquerytype.parameters[odbcparameter_index].value = parameter;
            }
        }
    else if (size == -3 && parameter > 0)
        {
        len = strlen((char *)parameter) + 1;
        odbcquerytype.parameters[odbcparameter_index].value = (int)rmamalloc(len);
        memcpy((void *)odbcquerytype.parameters[odbcparameter_index].value,
               (void *)parameter,
               len);
        }
    else
        {
        odbcquerytype.parameters[odbcparameter_index].type = ODBC_VALUE;
        odbcquerytype.parameters[odbcparameter_index].value = parameter;
        }

    odbcparameter_index++;
    }
