#ifndef SQL_CRSR
# define SQL_CRSR
struct sql_cursor
{
unsigned int curocn;
void *ptr1;
void *ptr2;
unsigned int magic;
};
typedef struct sql_cursor sql_cursor;
typedef struct sql_cursor SQL_CURSOR;
#endif /* SQL_CRSR */
typedef void * sql_context;
typedef void * SQL_CONTEXT;
struct sqltvn
{
unsigned char *tvnvsn;
unsigned short tvnvsnl;
unsigned char *tvnnm;
unsigned short tvnnml;
unsigned char *tvnsnm;
unsigned short tvnsnml;
};
typedef struct sqltvn sqltvn;
struct sqladts
{
unsigned int adtvsn;
unsigned short adtmode;
unsigned short adtnum;
sqltvn adttvn[1];
};
typedef struct sqladts sqladts;
static struct sqladts sqladt = {
1,1,0,
};
struct sqltdss
{
unsigned int tdsvsn;
unsigned short tdsnum;
unsigned char *tdsval[1];
};
typedef struct sqltdss sqltdss;
static struct sqltdss sqltds =
{
1,
0,
};
struct sqlcxp
{
unsigned short fillen;
char filnam[17];
};
static const struct sqlcxp sqlfpn =
{
16,
"hgeomora2conn.pc"
};
static unsigned int sqlctx = 4724107;
static struct sqlexd {
unsigned long sqlvsn;
unsigned int arrsiz;
unsigned int iters;
unsigned int offset;
unsigned short selerr;
unsigned short sqlety;
unsigned int occurs;
const short *cud;
unsigned char *sqlest;
const char *stmt;
sqladts *sqladtp;
sqltdss *sqltdsp;
unsigned char **sqphsv;
unsigned long *sqphsl;
int *sqphss;
short **sqpind;
int *sqpins;
unsigned long *sqparm;
unsigned long **sqparc;
unsigned short *sqpadto;
unsigned short *sqptdso;
unsigned int sqlcmax;
unsigned int sqlcmin;
unsigned int sqlcincr;
unsigned int sqlctimeout;
unsigned int sqlcnowait;
int sqfoff;
unsigned int sqcmod;
unsigned int sqfmod;
unsigned int sqlpfmem;
unsigned char *sqhstv[4];
unsigned long sqhstl[4];
int sqhsts[4];
short *sqindv[4];
int sqinds[4];
unsigned long sqharm[4];
unsigned long *sqharc[4];
unsigned short sqadto[4];
unsigned short sqtdso[4];
} sqlstm = {13,4};
extern "C" {
void sqlcxt (void **, unsigned int *,
struct sqlexd *, const struct sqlcxp *);
void sqlcx2t(void **, unsigned int *,
struct sqlexd *, const struct sqlcxp *);
void sqlbuft(void **, char *);
void sqlgs2t(void **, char *);
void sqlorat(void **, unsigned int *, void *);
}
static const int IAPSUCC = 0;
static const int IAPFAIL = 1403;
static const int IAPFTL = 535;
extern "C" { void sqliem(unsigned char *, signed int *); }
typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;
static const short sqlcud0[] =
{13,4130,1,0,0,
5,0,0,1,0,0,32,101,0,0,0,0,0,1,0,
20,0,0,2,0,0,29,130,0,0,0,0,0,1,0,
35,0,0,3,0,0,31,137,0,0,0,0,0,1,0,
50,0,0,0,0,0,27,187,0,0,4,4,0,1,0,1,97,0,0,1,97,0,0,1,10,0,0,1,10,0,0,
81,0,0,5,76,0,4,212,0,0,2,1,0,1,0,2,3,0,0,1,97,0,0,
104,0,0,6,56,0,6,241,0,0,1,1,0,1,0,2,3,0,0,
123,0,0,7,79,0,6,283,0,0,3,3,0,1,0,3,3,0,0,2,3,0,0,2,9,0,0,
150,0,0,8,149,0,6,321,0,0,2,2,0,1,0,1,97,0,0,2,97,0,0,
173,0,0,9,150,0,6,348,0,0,2,2,0,1,0,1,97,0,0,2,97,0,0,
196,0,0,10,156,0,6,376,0,0,2,2,0,1,0,1,3,0,0,2,97,0,0,
};
using namespace std;
#include "hgeomora2conn.h"
#include "TRandom.h"
#include <stdio.h>
#include <iostream>
#include <iomanip>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <termios.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <oraca.h>
#include <sqlca.h>
ClassImp(HGeomOra2Conn)
HGeomOra2Conn::HGeomOra2Conn() {
strcpy(dbName,"db-hades");
strcpy(userName,"hades_ana");
isConnected=kFALSE;
actRunId=-1;
runStart=-1;
expLocation[0]='\0';
historyDate[0]='\0';
needsServerCheck=kTRUE;
writable=kFALSE;
}
HGeomOra2Conn::~HGeomOra2Conn() {
close();
}
Bool_t HGeomOra2Conn::open() {
Char_t* password = new Char_t[20];
strcpy(password,"hades");
Bool_t rc=openConnection(password);
writable=kFALSE;
if (!rc) close();
return rc;
}
Bool_t HGeomOra2Conn::open(const Char_t *uName) {
strcpy(userName,uName);
Char_t* password=getPassword();
Bool_t rc=openConnection(password);
writable=kTRUE;
if (!rc) close();
return rc;
}
Bool_t HGeomOra2Conn::open(const Char_t *dbN,const Char_t *uN) {
strcpy(dbName,dbN);
strcpy(userName,uN);
Char_t* password=getPassword();
Bool_t rc=openConnection(password);
writable=kTRUE;
if (!rc) close();
return rc;
}
void HGeomOra2Conn::close() {
actRunId=-1;
runStart=-1;
expLocation[0]='\0';
historyDate[0]='\0';
if (isConnected) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 0;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )5;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) showSqlError("ORACLE error in HGeomOra2Conn::close():");
}
isConnected=kFALSE;
cout<<"connection to Oracle closed"<<endl;
}
writable=kFALSE;
needsServerCheck=kTRUE;
}
void HGeomOra2Conn::print() {
if (isConnected)
cout<<"Oracle-Database: "<<dbName<<" Username: "<<userName<<'\n';
else cout<<"*** no connection to Oracle established ***\n";
if (strlen(historyDate)==0) cout<<"No history date set\n";
else cout<<"History date: "<<historyDate<<'\n';
}
void HGeomOra2Conn::showSqlError(const Char_t* fctName) {
Error(fctName,"\n%s\n",sqlca.sqlerrm.sqlerrmc);
}
void HGeomOra2Conn::showSqlError(const Char_t* fctName,const Char_t* msg) {
Error(fctName,"\n%s\n%s\n",sqlca.sqlerrm.sqlerrmc,msg);
}
void HGeomOra2Conn::commit(void) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 0;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )20;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) showSqlError("ORACLE error in HGeomOra2Conn::close():");
}
cout<<"Transaction committed"<<endl;
return;
}
void HGeomOra2Conn::rollback(void) {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 0;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )35;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) showSqlError("ORACLE error in HGeomOra2Conn::close():");
}
cout<<"Transaction rolled back"<<endl;
return;
}
Char_t* HGeomOra2Conn::getPassword() {
Char_t* passwd = new Char_t[20];
Char_t buf[20];
Int_t ttyfd = 0;
struct termios tio, itio;
if ((ttyfd = ::open("/dev/tty", O_RDWR)) < 0) {
fprintf(stderr, "cannot open tty, using stdin\n");
ttyfd = 0;
}
if (tcgetattr(ttyfd, &tio) < 0) {
fprintf (stderr, "\nUnable to get terminal characteristics: ");
cout<<"enter password for user "<<userName<<" > ";
Int_t n=scanf("%[^\n]%*c",passwd);
if(n==0)cout<<"no password found!"<<endl;
return passwd;
}
itio = tio;
tio.c_lflag &= ~(ECHO|ICANON);
tcsetattr (ttyfd, TCSAFLUSH, &tio);
cout<<"enter password for user "<<userName<<" > ";
Bool_t res=fgets(buf, 20, stdin);
if(!res)cout<<"could not retrieve next buffer!"<<endl;
tcsetattr (ttyfd, TCSAFLUSH, &itio);
sscanf(buf, "%s", passwd);
cout<<endl;
return passwd;
}
Bool_t HGeomOra2Conn::openConnection(const Char_t* password) {
if (isConnected) close();
Char_t connId[80];
strcpy(connId,userName);
strcat(connId,"@");
strcat(connId,dbName);
char* uName;
char* pWord;
uName=connId;
pWord=(Char_t*)password;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )10;
sqlstm.offset = (unsigned int )50;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)uName;
sqlstm.sqhstl[0] = (unsigned long )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)pWord;
sqlstm.sqhstl[1] = (unsigned long )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlstm.sqlcmax = (unsigned int )100;
sqlstm.sqlcmin = (unsigned int )2;
sqlstm.sqlcincr = (unsigned int )1;
sqlstm.sqlctimeout = (unsigned int )0;
sqlstm.sqlcnowait = (unsigned int )0;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) showSqlError("ORACLE error in HGeomOra2Conn::openConnection(...):");
}
if (sqlca.sqlcode==0) isConnected=kTRUE;
else cout<<"*** Failed to connect to Oracle ***"<<endl;
delete password;
actRunId=-1;
runStart=0;
expLocation[0]='\0';
historyDate[0]='\0';
return isConnected;
}
Bool_t HGeomOra2Conn::setSimulRefRun(const Char_t* runName) {
if (!isConnected) return kFALSE;
simulRefRun=runName;
if (simulRefRun.Length()==0) return kFALSE;
simulRefRun.ToLower();
runStart=-1;
char* fname;
int run;
fname=(Char_t*)simulRefRun.Data();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select ref_run_id into :b0 from hanal2.simul_ref_run where\
ref_run_name=:b1";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )81;
sqlstm.selerr = (unsigned short)1;
sqlstm.sqlpfmem = (unsigned int )0;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&run;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)fname;
sqlstm.sqhstl[1] = (unsigned long )0;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto errorfound;
}
getRunStart(run);
if (runStart>0) return kTRUE;
else return kFALSE;
errorfound:
showSqlError("setSimulRefRun(const Char_t*");
return kFALSE;
notfound:
Error("setSimulRefRun(const Char_t*)",
"No such simulation reference run %s",runName);
return kFALSE;
}
Bool_t HGeomOra2Conn::setRunId(Int_t id) {
if (!isConnected) return kFALSE;
simulRefRun="";
getRunStart(id);
if (runStart==-1) return kFALSE;
else return kTRUE;
}
Int_t HGeomOra2Conn::checkServerLoad() {
int retval;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin :retval := hanal . check_analysis_sessions ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )104;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&retval;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto notfound;
}
return retval;
notfound:
showSqlError("checkServerLoad");
return -1;
}
Int_t HGeomOra2Conn::getRunStart(Int_t id) {
if (id==actRunId && runStart>0) return runStart;
if (needsServerCheck) {
Int_t l=0;
UInt_t nTotWait=0;
l=checkServerLoad();
while (l==0&&nTotWait<86400000) {
UInt_t nWait=10000+gRandom->Integer(20000);
nTotWait+=nWait;
cout<<"Oracle server busy, retry in "<<nWait/1000<<" seconds"<<endl;
usleep(nWait*1000);
l=checkServerLoad();
}
if (l>0) needsServerCheck=kFALSE;
else return -1;
}
if (strlen(historyDate)==0) setParamRelease(id);
actRunId=id;
runStart=-1;
int ri;
int rs;
struct { unsigned short len; unsigned char arr[30]; } exp_loc;
ri = actRunId;
exp_loc.len=30;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin hades_oper . run_query_2 . get_run_start ( :ri , :rs \
, :exp_loc ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )123;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&ri;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)&rs;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)&exp_loc;
sqlstm.sqhstl[2] = (unsigned long )32;
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto notfound;
}
if (ri==actRunId) {
runStart=rs;
exp_loc.arr[exp_loc.len]='\0';
if (strlen(expLocation)==0) strcpy(expLocation,(Char_t*)exp_loc.arr);
else {
if (strcmp(expLocation,(Char_t*)exp_loc.arr)!=0) {
Error("getRunStart(Int_t)",
"\nA switch from beamtime runs to simulations runs and vice versa is not "
"possible\nwithout the close and reopen of the Oracle connection!\n\n");
runStart=-1;
}
}
return runStart;
}
notfound:
Error("getRunStart(Int_t)","Run not found!\n\n");
return -1;
}
Bool_t HGeomOra2Conn::setHistoryDate(const Char_t* dateString) {
if (!isConnected) return kFALSE;
if (strstr(dateString,"_")!=NULL) {
return setParamRelease(dateString);
}
char* d;
char rd[21];
d=(Char_t*)dateString;
rd[0]='\0';
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin hades_oper . run_query_2 . set_history_date ( :d ) ; \
:rd := to_char ( hades_oper . run_query_2 . get_history_date , hwww . c_datema\
sk ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )150;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)d;
sqlstm.sqhstl[0] = (unsigned long )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)rd;
sqlstm.sqhstl[1] = (unsigned long )21;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto notfound;
}
rd[20]='\0';
strcpy(historyDate,rd);
cout<<"*************************************************************\n";
cout<<" Oracle history date: "<<historyDate<<"\n";
cout<<"*************************************************************\n";
return kTRUE;
notfound:
showSqlError("setHistoryDate(const Char_t*): sql error");
return kFALSE;
}
Bool_t HGeomOra2Conn::setParamRelease(const Char_t* release_name) {
if (!isConnected) return kFALSE;
char* r;
char rd[21];
rd[0]='\0';
r=(Char_t*)release_name;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin hades_oper . run_query_2 . set_param_release ( :r ) ;\
:rd := to_char ( hades_oper . run_query_2 . get_history_date , hwww . c_datem\
ask ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )173;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)r;
sqlstm.sqhstl[0] = (unsigned long )0;
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)rd;
sqlstm.sqhstl[1] = (unsigned long )21;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto notfound;
}
rd[20]='\0';
strcpy(historyDate,rd);
cout<<"*************************************************************\n";
cout<<" Oracle history date: "<<historyDate<<"\n";
cout<<"*************************************************************\n";
return kTRUE;
notfound:
showSqlError("setParamRelease(const Char_t*): sql error");
return kFALSE;
}
Bool_t HGeomOra2Conn::setParamRelease(Int_t run) {
if (!isConnected) return kFALSE;
int r;
char rd[21];
r=run;
rd[0]='\0';
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "begin hades_oper . run_query_2 . set_history_date_by_run ( \
:r ) ; :rd := to_char ( hades_oper . run_query_2 . get_history_date , hwww . c\
_datemask ) ; END ;";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )196;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char *)&sqlca;
sqlstm.sqlety = (unsigned short)4352;
sqlstm.occurs = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&r;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )0;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)rd;
sqlstm.sqhstl[1] = (unsigned long )21;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) goto notfound;
if (sqlca.sqlcode < 0) goto notfound;
}
rd[20]='\0';
strcpy(historyDate,rd);
cout<<"*************************************************************\n";
cout<<" Oracle history date: "<<historyDate<<"\n";
cout<<"*************************************************************\n";
return kTRUE;
notfound:
showSqlError("setParamRelease(Int_t): sql error");
return kFALSE;
}