#include "sqlca.h"
#include "sqlda.h"
#include "sqlcc.h"
static int module = 0;
#include <stdio.h>
#include "onyx_config.h"

/* 
 *	some neccesary engine related stuff
 */


#line 8 "YardLib.ec"
/* BEGIN DECLARE SECTION */


#line 1 "/home/yard/include/sqltypes.h"
/******************************************************************************
***
***				COPYRIGHT
***
***	Die Daten in dieser Datei sind Eigentum der 
***
***	YARD Software GmbH in 5000 Koeln 90, Deutschland.
***
***	Diese Datei gilt als Werk im Sinne des Urherberrechtsgesetzes und ist
***	damit urheberrechtlich geschuetzt. Jede Verwertung, insbesondere die
***	Vervielfaeltigung, Aenderung und Weitergabe, auch auszugsweise,
***	ist nur mit ausdruecklicher schriftlicher Genehmigung der YARD
***	Software GmbH zulaessig.
***
***	Ebenso ist die Speicherung dieser Datei auf Datentraegern wie z.B.
***	Festplatten, Disketten, Magentbaendern, CDs und aehnlichen, auch 
***	auszugsweise, nur mit ausdruecklicher schriftlicher Genehmigung der 
***	YARD Software GmbH zulaessig.
***
***	Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechts-
***	gesetzes.
***
******************************************************************************/

#ifndef _SQLTYPES_H
#define _SQLTYPES_H 

#define 		NOTYPE -1

#define 	CHARTYPE 0
#define 	LONGTYPE 1
#define 	DOUBLETYPE 2
#define 	DATETYPE 3
#define 	DECIMALTYPE 4


#define 		/*	for future use			*/BYTETYPE 5
#define 		INTTYPE 6
#define 	FLOATTYPE 7
#define 	VCHARTYPE 8
#define 		/*	for future use			*/DTIMETYPE 9
#define 		/*	for future use			*/IVALTYPE 10
#define 	MONEYTYPE 11
#define 		/*	muss groessten Wert haben	*/SERIALTYPE 12

#endif 	/* _SQLTYPES_H */

#line 10 "YardLib.ec"
/* END DECLARE SECTION */

#define MAX_DATE_LEN    10
#define MAX_COL_LEN     18

/* 
 *	check,connect,commit,rollback,error,disconnect.
 *
 *	uses 	BEGIN DECLARE SECTION
 *		END DECLARE SECTION
 *		CONNECT :yard_user
 *		DATABASE :yard_db
 *		COMMIT WORK
 *		ROLLBACK WORK
 *		CLOSE DATABASE
 *		DISCONNECT
 */

char *yard_act;
int   yard_code;
#define yard_check(ACT,CHECK) { yard_code = SQLCODE; if (SQLCODE < 0) { int sc=SQLCODE; yard_act = ACT; yard_error(CHECK); return (sc); } }
extern void yard_error(int rollback);

int yard_connect(char *user,char *db)
{	
	
#line 35 "YardLib.ec"
/* BEGIN DECLARE SECTION */

	char *yard_user;
	char *yard_db;
	/* END DECLARE SECTION */

	char env[1024];

	sprintf(env,"YARDHOME=%s",YARD_HOME);
	putenv(strdup(env));
	sprintf(env,"PATH=%s:%s/bin",getenv("PATH"),YARD_HOME);
	putenv(strdup(env));
	sprintf(env,"YARDDBS=%s",YARD_DBS);
	putenv(strdup(env));
	putenv(strdup("YARDDELIM=\t"));

	yard_user = user;
	yard_db   = db;

	
#line 53 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 53L;
YSQL_connect((yard_user), (char *)0, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 53 "YardLib.ec"

	yard_check("connect",0);

	
#line 56 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 56L;
YSQL_db((yard_db), 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 56 "YardLib.ec"

	yard_check("database",0);

	return (SQLCODE);
	}

int yard_commit()
{	
#line 63 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 63L;
YSQL_commit();

}	/* END OF EMBEDDED SQL C CODE */
#line 63 "YardLib.ec"

	yard_check("commit",1);

	return (SQLCODE);
	}

int yard_rollback()
{	
#line 70 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 70L;
YSQL_rollback();

}	/* END OF EMBEDDED SQL C CODE */
#line 70 "YardLib.ec"

	return (SQLCODE);
	}

void yard_error(int rollback)
{	if (rollback) {
		yard_rollback();
		}
	}

int yard_disconnect()
{	
#line 81 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 81L;
YSQL_commit();

}	/* END OF EMBEDDED SQL C CODE */
#line 81 "YardLib.ec"


	
#line 83 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 83L;
YSQL_closedb();

}	/* END OF EMBEDDED SQL C CODE */
#line 83 "YardLib.ec"

	
#line 84 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 84L;
YSQL_disconnect();

}	/* END OF EMBEDDED SQL C CODE */
#line 84 "YardLib.ec"

	return (SQLCODE);
	}

/* 
 *	command for sending all what is not select !
 *
 *	uses 	BEGIN DECLARE SECTION
 *		END DECLARE SECTION
 *		PREPARE p_output FROM :yard_cmd
 *		EXECUTE p_output
 */

int yard_command(char *cmd)
{	
#line 98 "YardLib.ec"
/* BEGIN DECLARE SECTION */

	char *yard_cmd;
	/* END DECLARE SECTION */

	yard_cmd = cmd;

	
#line 104 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 104L;
YSQL_prepare("p_cmd", (yard_cmd), module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 104 "YardLib.ec"

	yard_check("prepare",1);

	
#line 107 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 107L;
YSQL_execute("p_cmd", (sqlda_t *)NULL, (char *)0, (sqlda_t *)NULL, (char *)0, module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 107 "YardLib.ec"

	yard_check("execute",1);

	
#line 110 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 110L;
YSQL_free("p_cmd", 2, module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 110 "YardLib.ec"

	yard_check("free",1);

	return (SQLCODE);
	}

/*
 *	select for selecting stuff.
 *
 *	uses 	BEGIN DECLARE SECTION
 *		END DECLARE SECTION
 *		PREPARE p_output FROM :yard_cmd
 *
 *	warning	maxdesc = sqlca.sqlerrd[4]
 */

int yard_select_prep(char *cmd)
{	
#line 127 "YardLib.ec"
/* BEGIN DECLARE SECTION */

	char *descname = "outdesc";
	char *yard_cmd;
	int maxdesc;
	int desccount;
	int desctype;
	int desclen;
	int i;
	/* END DECLARE SECTION */

	yard_cmd = cmd;

	
#line 139 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 139L;
YSQL_prepare("p_output", (yard_cmd), module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 139 "YardLib.ec"

	yard_check("prepare",1);

	maxdesc = sqlca.sqlerrd[4];

	
#line 144 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 144L;
YSQL_alloc_desc(descname, maxdesc);

}	/* END OF EMBEDDED SQL C CODE */
#line 144 "YardLib.ec"

	yard_check("allocat",1);
	
#line 146 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 146L;
YSQL_describe("p_output", (sqlda_t **)NULL, descname, module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 146 "YardLib.ec"

	yard_check("describe",1);
	
#line 148 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 148L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 0, 258, sizeof((desccount)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(desccount));
YSQL_get_desc(descname, descinfo, 1, 0, 1);

}	/* END OF EMBEDDED SQL C CODE */
#line 148 "YardLib.ec"

	yard_check("get count",1);

	for (i = 1; i <= desccount; i++) {
		
#line 152 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 152L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 1, 258, sizeof((desctype)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(desctype));
YSQL_get_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 153 "YardLib.ec"


		switch(desctype) {
			case DATETYPE:
				desclen = MAX_DATE_LEN + 1;
				
#line 158 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[2];
static int sqlctrl = 0;
sqlca.sqlline = 158L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 1, 256, 0);
	YSQL_desc_info(descinfo[1], 2, 258, sizeof((desclen)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], "0");
YSQL_desc_data(descinfo[1], (char *)&(desclen));
YSQL_set_desc(descname, descinfo, 2, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 160 "YardLib.ec"

				break;
			case DECIMALTYPE:
			case MONEYTYPE:
				
#line 164 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 164L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 3, 258, sizeof((desclen)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(desclen));
YSQL_get_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 165 "YardLib.ec"


				
#line 167 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[2];
static int sqlctrl = 0;
sqlca.sqlline = 167L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 1, 256, 0);
	YSQL_desc_info(descinfo[1], 2, 258, sizeof((desclen)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], "0");
YSQL_desc_data(descinfo[1], (char *)&(desclen));
YSQL_set_desc(descname, descinfo, 2, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 169 "YardLib.ec"

				break;
			case INTTYPE:
				
#line 172 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 172L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 1, 256, 0);
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], "1");
YSQL_set_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 173 "YardLib.ec"

				break;
			case FLOATTYPE:
				
#line 176 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 176L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 1, 256, 0);
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], "2");
YSQL_set_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 177 "YardLib.ec"

				break;
			}
		}

	
#line 182 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static int cflag = 0;
sqlca.sqlline = 182L;
cflag |= C_CLOSE;
YSQL_declare("c_output", "p_output", (sqlstmt_t *)NULL, 0, 0, (sqlda_t *)NULL, cflag, module, 0, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 182 "YardLib.ec"

	yard_check("declare",1);
	
#line 184 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 184L;
YSQL_open("c_output", (sqlda_t *)NULL, (char *)0, module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 184 "YardLib.ec"

	yard_check("open",1);

	return(SQLCODE);
	}

int yard_select_fetch(char *result)
{	
#line 191 "YardLib.ec"
/* BEGIN DECLARE SECTION */

	char *descname = "outdesc";
	int desccount;
	int i;
	short dummy;/* Hier ist ein BUG im Yard sonst wird i ueberschrieben */
	short ind;
	int desctype;
	int charlen;
	char *charval;
	long longval;
	double floatval;
	/* END DECLARE SECTION */
	char strval[256];

	
#line 205 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 205L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 0, 258, sizeof((desccount)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(desccount));
YSQL_get_desc(descname, descinfo, 1, 0, 1);

}	/* END OF EMBEDDED SQL C CODE */
#line 205 "YardLib.ec"

	yard_check("get count",1);

	
#line 208 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 208L;
YSQL_fetch("c_output", (sqlda_t *)NULL, descname, 100, 0, module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 208 "YardLib.ec"

	if (SQLCODE == SQLNOTFOUND) {
		return(SQLCODE);
		}

	yard_check("fetch",1);

	for (i = 1; i <= desccount; i++) {
		if (i == 1)
			*result=0;
		else	strcat(result,"\t");

		
#line 220 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 220L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 6, 257, sizeof((ind)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(ind));
YSQL_get_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 221 "YardLib.ec"

		yard_check("get ind",1);

		if (ind != -1) {
			
#line 225 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 225L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 1, 258, sizeof((desctype)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(desctype));
YSQL_get_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 226 "YardLib.ec"

			yard_check("get type",1);

			switch(desctype) {
			    case VCHARTYPE:
			    case CHARTYPE:
			    case DECIMALTYPE:
			    case MONEYTYPE:
			    case DATETYPE:
				
#line 235 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 235L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 2, 258, sizeof((charlen)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(charlen));
YSQL_get_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 237 "YardLib.ec"

				yard_check("get len",1);

				charval = (char *)malloc(charlen + 1);

				
#line 242 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 242L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 7, 256, 0);
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (charval));
YSQL_get_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 244 "YardLib.ec"

				yard_check("get data",1);
				strcat(result,charval);
				break;
			    case SERIALTYPE:
			    case LONGTYPE:
			    case INTTYPE:
				
#line 251 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 251L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 7, 259, sizeof((longval)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(longval));
YSQL_get_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 253 "YardLib.ec"

				sprintf(result+strlen(result),"%ld", longval);
				break;
			    case DOUBLETYPE:
			    case FLOATTYPE:
				
#line 258 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

static descinfo_t descinfo[1];
static int sqlctrl = 0;
sqlca.sqlline = 258L;

if (sqlctrl == 0)
{
	YSQL_desc_info(descinfo[0], 7, 261, sizeof((floatval)));
	sqlctrl = 1;
}
YSQL_desc_data(descinfo[0], (char *)&(floatval));
YSQL_get_desc(descname, descinfo, 1, i, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 260 "YardLib.ec"

				yard_check("get float data",1);
				sprintf(result+strlen(result),"%f", floatval);
				break;
			    }
			}
		}
	return(SQLCODE);
	}

int yard_select_close()
{	
#line 271 "YardLib.ec"
/* BEGIN DECLARE SECTION */

	char *descname = "outdesc";
	/* END DECLARE SECTION */

	
#line 275 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 275L;
YSQL_close("c_output", module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 275 "YardLib.ec"

	yard_check("close",1);
	
#line 277 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 277L;
YSQL_free("p_output", 2, module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 277 "YardLib.ec"

	yard_check("free statement",1);
	
#line 279 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 279L;
YSQL_free("c_output", 3, module, 0);

}	/* END OF EMBEDDED SQL C CODE */
#line 279 "YardLib.ec"

	yard_check("free cursor",1);
	
#line 281 "YardLib.ec"
{	/* BEGIN OF EMBEDDED SQL C CODE */

sqlca.sqlline = 281L;
YSQL_dealloc_desc(descname);

}	/* END OF EMBEDDED SQL C CODE */
#line 281 "YardLib.ec"

	yard_check("deallocat",1);

	return (SQLCODE);
	}
