/*
**    Name: ForKeys.c
**
**    Date: Sun Jan 20 16:53:00 2002
**
*/

#include "ODBCLib.h"
#include "isql.h"
#include "isqlext.h"
#include "kernel.h"

SQLRETURN  SQLForeignKeys(
    SQLHSTMT hstmt,
    SQLCHAR * szPkCatalogName,
    SQLSMALLINT cbPkCatalogName,
    SQLCHAR * szPkSchemaName,
    SQLSMALLINT cbPkSchemaName,
    SQLCHAR * szPkTableName,
    SQLSMALLINT cbPkTableName,
    SQLCHAR * szFkCatalogName,
    SQLSMALLINT cbFkCatalogName,
    SQLCHAR * szFkSchemaName,
    SQLSMALLINT cbFkSchemaName,
    SQLCHAR * szFkTableName,
    SQLSMALLINT cbFkTableNam)
    {
    _kernel_swi_regs regs;

    int block[7];

/* Wait for ready status */

    if (ODBCLibWait(ODBC_STATE_READY))
        {
        return SQL_ERROR;
        }

/* Store parameters */

    regs.r[0] = SQL_ForeignKeys;
    regs.r[1] = (int)hstmt;
    regs.r[2] = (int)szPkCatalogName;
    regs.r[3] = (int)cbPkCatalogName;
    regs.r[4] = (int)szPkSchemaName;
    regs.r[5] = (int)cbPkSchemaName;
    regs.r[6] = (int)szPkTableName;

    block[0] = (int)cbPkTableName;
    block[1] = (int)szFkCatalogName;
    block[2] = (int)cbFkCatalogName;
    block[3] = (int)szFkSchemaName;
    block[4] = (int)cbFkSchemaName;
    block[5] = (int)szFkTableName;
    block[6] = (int)cbFkTableNam;

    regs.r[7] = (int)block;

    _kernel_swi(SQL_SystemTablesP,&regs,&regs);

/* Wait for completion */

    if (ODBCLibWait(ODBC_STATE_COMPLETE))
        {
        return SQL_ERROR;
        }

/* Get results */

    regs.r[0] = SQL_ForeignKeys;
    regs.r[1] = (int)hstmt;
    regs.r[2] = (int)szPkCatalogName;
    regs.r[3] = (int)cbPkCatalogName;
    regs.r[4] = (int)szPkSchemaName;
    regs.r[5] = (int)cbPkSchemaName;
    regs.r[6] = (int)szPkTableName;

    block[0] = (int)cbPkTableName;
    block[1] = (int)szFkCatalogName;
    block[2] = (int)cbFkCatalogName;
    block[3] = (int)szFkSchemaName;
    block[4] = (int)cbFkSchemaName;
    block[5] = (int)szFkTableName;
    block[6] = (int)cbFkTableNam;

    regs.r[7] = (int)block;

    _kernel_swi(SQL_SystemTables,&regs,&regs);

    return (SQLRETURN)ODBCLibFinished();
    }
