#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[22];
};
static const struct sqlcxp sqlfpn =
{
21,
"horaslowreader2016.pc"
};
static unsigned int sqlctx = 157481691;
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[9];
unsigned long sqhstl[9];
int sqhsts[9];
short *sqindv[9];
int sqinds[9];
unsigned long sqharm[9];
unsigned long *sqharc[9];
unsigned short sqadto[9];
unsigned short sqtdso[9];
} sqlstm = {13,9};
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 *); }
static const char *sq0002 =
"select period_id ,mean_value ,sigma_value ,min_value ,max_value ,num_data_ro\
ws ,stat ,mon_num_data_rows ,mon_smpl_per from hades_slow2.hcss_chan_run_sum_\
view_ana where ((channel_id=:b0 and partition_name=:b1) and period_id between \
:b2 and :b3) order by period_id ";
static const char *sq0004 =
"select smpl_date ,smpl_nanosec ,NVL(float_val,0.) ,status from hades_slow2.\
hcss_sample_data_view_ana where (smpl_time between TO_TIMESTAMP(:b0,'yyyy-mm-d\
d hh24:mi:ss.ff6') and TO_TIMESTAMP(:b1,'yyyy-mm-dd hh24:mi:ss.ff6') and chann\
el_id=:b2) order by smpl_time ";
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,80,0,4,45,0,0,2,1,0,1,0,2,3,0,0,1,97,0,0,
28,0,0,2,275,0,9,107,0,0,4,4,0,1,0,1,3,0,0,1,97,0,0,1,3,0,0,1,3,0,0,
59,0,0,2,0,0,13,109,0,0,9,0,0,1,0,2,3,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,4,0,0,2,3,
0,0,2,3,0,0,2,3,0,0,2,3,0,0,
110,0,0,2,0,0,15,127,0,0,0,0,0,1,0,
125,0,0,3,184,0,4,164,0,0,5,2,0,1,0,2,3,0,0,2,9,0,0,2,97,0,0,1,3,0,0,1,97,0,0,
160,0,0,4,273,0,9,234,0,0,3,3,0,1,0,1,97,0,0,1,97,0,0,1,3,0,0,
187,0,0,4,0,0,13,236,0,0,4,0,0,1,0,2,97,0,0,2,3,0,0,2,4,0,0,2,3,0,0,
218,0,0,4,0,0,15,251,0,0,0,0,0,1,0,
};
#include "horaslowreader2016.h"
#include "hdbconn.h"
#include "horaslowpartition.h"
#include "horaslowperiod.h"
#include "horaslowchannel.h"
#include "horaslowchanrunsum.h"
#include "horaslowchanmeta.h"
#include "horaslowchanraw.h"
#include <stdio.h>
#include <stdlib.h>
#define SQLCA_STORAGE_CLASS extern
#define ORACA_STORAGE_CLASS extern
#include <oraca.h>
#include <sqlca.h>
ClassImp(HOraSlowReader2016)
Int_t HOraSlowReader2016::readChannelId(HOraSlowChannel* pChannel) {
if (!pConn->isOpen()||!pChannel) return kFALSE;
char* chname;
int chid;
chname=(Char_t*)pChannel->GetName();
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 2;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select channel_id into :b0 from hades_slow2.hcss_channel w\
here channel_name=:b1";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )5;
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 *)&chid;
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 *)chname;
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;
}
pChannel->setChannelId(chid);
return chid;
notfound:
Warning("readChannelId","Channel %s not found",chname);
return -1;
errorfound:
pConn->showSqlError("readChannelId");
return -1;
}
Bool_t HOraSlowReader2016::readChannelRunSum(HOraSlowChannel* pChannel) {
if (!pConn->isOpen()||!pPartition||!pChannel) return kFALSE;
TObjArray* periods=pPartition->getRunPeriods();
if (!periods) return kFALSE;
Int_t lastIndex=periods->GetLast();
if (lastIndex<0) return kFALSE;
Int_t channelId=pChannel->getChannelId();
if (channelId<0) {
channelId=readChannelId(pChannel);
}
if (channelId<=0) return kFALSE;
char* pname;
int chid;
int pmin;
int pmax;
struct {
int pid[NMAX_SCS];
double vmean[NMAX_SCS];
double vsigma[NMAX_SCS];
double vmin[NMAX_SCS];
double vmax[NMAX_SCS];
int nd[NMAX_SCS];
int vstat[NMAX_SCS];
int ndmon[NMAX_SCS];
int spmon[NMAX_SCS];
} runsum;
pname=(Char_t*)pPartition->GetName();
chid=channelId;
pmin=((HOraSlowPeriod*)(periods->At(0)))->getPeriodId();
pmax=((HOraSlowPeriod*)(periods->At(lastIndex)))->getPeriodId();
Int_t nData=lastIndex+1;
TObjArray* data=new TObjArray(nData);
Int_t nTot=0;
Int_t nLast=0;
Int_t periodId=0;
HOraSlowPeriod* period=0;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0002;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )28;
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.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)&chid;
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 *)pname;
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.sqhstv[2] = (unsigned char *)&pmin;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
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.sqhstv[3] = (unsigned char *)&pmax;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (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 < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 9;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )59;
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.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = (unsigned char *)runsum.pid;
sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
sqlstm.sqhsts[0] = ( int )sizeof(int);
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqharc[0] = (unsigned long *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)runsum.vmean;
sqlstm.sqhstl[1] = (unsigned long )sizeof(double);
sqlstm.sqhsts[1] = ( int )sizeof(double);
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqharc[1] = (unsigned long *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)runsum.vsigma;
sqlstm.sqhstl[2] = (unsigned long )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqharc[2] = (unsigned long *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)runsum.vmin;
sqlstm.sqhstl[3] = (unsigned long )sizeof(double);
sqlstm.sqhsts[3] = ( int )sizeof(double);
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqharc[3] = (unsigned long *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)runsum.vmax;
sqlstm.sqhstl[4] = (unsigned long )sizeof(double);
sqlstm.sqhsts[4] = ( int )sizeof(double);
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqharc[4] = (unsigned long *)0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (unsigned short )0;
sqlstm.sqhstv[5] = (unsigned char *)runsum.nd;
sqlstm.sqhstl[5] = (unsigned long )sizeof(int);
sqlstm.sqhsts[5] = ( int )sizeof(int);
sqlstm.sqindv[5] = ( short *)0;
sqlstm.sqinds[5] = ( int )0;
sqlstm.sqharm[5] = (unsigned long )0;
sqlstm.sqharc[5] = (unsigned long *)0;
sqlstm.sqadto[5] = (unsigned short )0;
sqlstm.sqtdso[5] = (unsigned short )0;
sqlstm.sqhstv[6] = (unsigned char *)runsum.vstat;
sqlstm.sqhstl[6] = (unsigned long )sizeof(int);
sqlstm.sqhsts[6] = ( int )sizeof(int);
sqlstm.sqindv[6] = ( short *)0;
sqlstm.sqinds[6] = ( int )0;
sqlstm.sqharm[6] = (unsigned long )0;
sqlstm.sqharc[6] = (unsigned long *)0;
sqlstm.sqadto[6] = (unsigned short )0;
sqlstm.sqtdso[6] = (unsigned short )0;
sqlstm.sqhstv[7] = (unsigned char *)runsum.ndmon;
sqlstm.sqhstl[7] = (unsigned long )sizeof(int);
sqlstm.sqhsts[7] = ( int )sizeof(int);
sqlstm.sqindv[7] = ( short *)0;
sqlstm.sqinds[7] = ( int )0;
sqlstm.sqharm[7] = (unsigned long )0;
sqlstm.sqharc[7] = (unsigned long *)0;
sqlstm.sqadto[7] = (unsigned short )0;
sqlstm.sqtdso[7] = (unsigned short )0;
sqlstm.sqhstv[8] = (unsigned char *)runsum.spmon;
sqlstm.sqhstl[8] = (unsigned long )sizeof(int);
sqlstm.sqhsts[8] = ( int )sizeof(int);
sqlstm.sqindv[8] = ( short *)0;
sqlstm.sqinds[8] = ( int )0;
sqlstm.sqharm[8] = (unsigned long )0;
sqlstm.sqharc[8] = (unsigned long *)0;
sqlstm.sqadto[8] = (unsigned short )0;
sqlstm.sqtdso[8] = (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 < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
for (Int_t i=0;i<nLast;i++) {
HOraSlowChanRunSum* p=new HOraSlowChanRunSum();
period=(HOraSlowPeriod*)(periods->At(nTot));
periodId=period->getPeriodId();
if (periodId==runsum.pid[i]) {
p->setPeriod(period);
p->fill(runsum.pid[i],runsum.vmean[i],runsum.vsigma[i],
runsum.vmin[i],runsum.vmax[i],runsum.nd[i],
runsum.vstat[i],runsum.ndmon[i],runsum.spmon[i]);
} else {
p->fill(periodId,-999.,0.,-999.,-999.,0,1,-1,0);
}
data->AddAt(p,nTot);
nTot++;
}
} while (nLast==NMAX_SCS&&nTot<(lastIndex+1));
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 9;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )110;
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) goto errorfound;
}
pChannel->setRunSumData(data);
if (nTot==nData) {
cout<<"Run summary data for channel "<<pChannel->GetName()<<" read from Oracle\n";
return kTRUE;
} else {
Error("readChannelRunSum","Too few data read");
return kFALSE;
}
errorfound:
pConn->showSqlError("readChannelRunSum");
return kFALSE;
}
Bool_t HOraSlowReader2016::readChannelMetaData(HOraSlowChannel* pChannel) {
if (!pConn->isOpen()||!pPartition||!pChannel) return kFALSE;
Int_t channelId=pChannel->getChannelId();
if (channelId<0) {
channelId=readChannelId(pChannel);
}
if (channelId<=0) return kFALSE;
char* pname;
int chid;
int prec;
struct { unsigned short len; unsigned char arr[21]; } un;
char ts[20];
short un_Ind;
short ts_Ind;
pname=(Char_t*)pPartition->GetName();
chid=channelId;
TObjArray* data=NULL;
HOraSlowChanMeta* meta=NULL;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 9;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = "select NVL(precision,0) ,unit ,TO_CHAR(data_starttime,'yyyy\
-mm-dd hh24:mi:ss') into :b0,:b1:b2,:b3:b4 from hades_slow2.hcss_meta_view_an\
a where (channel_id=:b5 and partition_name=:b6)";
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )125;
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 *)≺
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 *)&un;
sqlstm.sqhstl[1] = (unsigned long )23;
sqlstm.sqhsts[1] = ( int )0;
sqlstm.sqindv[1] = ( short *)&un_Ind;
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 *)ts;
sqlstm.sqhstl[2] = (unsigned long )20;
sqlstm.sqhsts[2] = ( int )0;
sqlstm.sqindv[2] = ( short *)&ts_Ind;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)&chid;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )0;
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (unsigned short )0;
sqlstm.sqhstv[4] = (unsigned char *)pname;
sqlstm.sqhstl[4] = (unsigned long )0;
sqlstm.sqhsts[4] = ( int )0;
sqlstm.sqindv[4] = ( short *)0;
sqlstm.sqinds[4] = ( int )0;
sqlstm.sqharm[4] = (unsigned long )0;
sqlstm.sqadto[4] = (unsigned short )0;
sqlstm.sqtdso[4] = (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;
}
data=new TObjArray(1);
meta=new HOraSlowChanMeta();
meta->setPrecision(prec);
if (un_Ind!=-1) {
un.arr[un.len]='\0';
meta->setUnits((Char_t*)un.arr);
}
if (ts_Ind!=-1) {
ts[19]='\0';
meta->setStartTime((Char_t*)ts);
}
data->AddAt(meta,0);
pChannel->setMetaData(data);
pChannel->setMaxPrecision(prec);
cout<<"Meta data for channel "<<pChannel->GetName()<<" read from Oracle\n";
return kTRUE;
notfound:
Error("readChannelMetaData","No meta data found for channel %s",pChannel->GetName());
return kFALSE;
errorfound:
pConn->showSqlError("readChannelMetaData");
return kFALSE;
}
Bool_t HOraSlowReader2016::readRawData(HOraSlowChannel* channel,
const Char_t* start, const Char_t* end) {
if (!pConn->isOpen()||channel==0||start==0||end==0) return kFALSE;
Int_t channelId=channel->getChannelId();
if (channelId<0) {
channelId=readChannelId(channel);
}
if (channelId<=0) return kFALSE;
if (channel->getMetaData()==0) readChannelMetaData(channel);
int chid;
char* tstart;
char* tend;
struct {
char ti[NMAX_SCS][20];
int na[NMAX_SCS];
double va[NMAX_SCS];
int st[NMAX_SCS];
} rawdata;
chid=channelId;
TString t1(start);
t1.Append(".000000");
TString t2(end);
t2.Append(".999999");
tstart=(Char_t*)t1.Data();
tend=(Char_t*)t2.Data();
TObjArray* data=0;
Int_t nTot=0;
Int_t nLast=0;
TString lastTimestamp;
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 9;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.stmt = sq0004;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )160;
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.sqcmod = (unsigned int )0;
sqlstm.sqhstv[0] = (unsigned char *)tstart;
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 *)tend;
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.sqhstv[2] = (unsigned char *)&chid;
sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
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 < 0) goto errorfound;
}
do {
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 9;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )2000;
sqlstm.offset = (unsigned int )187;
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.sqfoff = ( int )0;
sqlstm.sqfmod = (unsigned int )2;
sqlstm.sqhstv[0] = (unsigned char *)rawdata.ti;
sqlstm.sqhstl[0] = (unsigned long )20;
sqlstm.sqhsts[0] = ( int )20;
sqlstm.sqindv[0] = ( short *)0;
sqlstm.sqinds[0] = ( int )0;
sqlstm.sqharm[0] = (unsigned long )0;
sqlstm.sqharc[0] = (unsigned long *)0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqhstv[1] = (unsigned char *)rawdata.na;
sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
sqlstm.sqhsts[1] = ( int )sizeof(int);
sqlstm.sqindv[1] = ( short *)0;
sqlstm.sqinds[1] = ( int )0;
sqlstm.sqharm[1] = (unsigned long )0;
sqlstm.sqharc[1] = (unsigned long *)0;
sqlstm.sqadto[1] = (unsigned short )0;
sqlstm.sqtdso[1] = (unsigned short )0;
sqlstm.sqhstv[2] = (unsigned char *)rawdata.va;
sqlstm.sqhstl[2] = (unsigned long )sizeof(double);
sqlstm.sqhsts[2] = ( int )sizeof(double);
sqlstm.sqindv[2] = ( short *)0;
sqlstm.sqinds[2] = ( int )0;
sqlstm.sqharm[2] = (unsigned long )0;
sqlstm.sqharc[2] = (unsigned long *)0;
sqlstm.sqadto[2] = (unsigned short )0;
sqlstm.sqtdso[2] = (unsigned short )0;
sqlstm.sqhstv[3] = (unsigned char *)rawdata.st;
sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
sqlstm.sqhsts[3] = ( int )sizeof(int);
sqlstm.sqindv[3] = ( short *)0;
sqlstm.sqinds[3] = ( int )0;
sqlstm.sqharm[3] = (unsigned long )0;
sqlstm.sqharc[3] = (unsigned long *)0;
sqlstm.sqadto[3] = (unsigned short )0;
sqlstm.sqtdso[3] = (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 < 0) goto errorfound;
}
nLast=sqlca.sqlerrd[2]-nTot;
if (nLast>0) {
if (data==0) data=new TObjArray(nLast);
else data->Expand(sqlca.sqlerrd[2]);
for (Int_t i=0;i<nLast;i++) {
HOraSlowChanRaw* p=new HOraSlowChanRaw();
rawdata.ti[i][19]='\0';
p->fill(rawdata.ti[i],rawdata.na[i],rawdata.va[i],rawdata.st[i]);
data->AddAt(p,nTot);
nTot++;
}
lastTimestamp=rawdata.ti[nLast-1];
}
} while (nLast==NMAX_SCS&&nTot<=20000);
{
struct sqlexd sqlstm;
sqlorat((void **)0, &sqlctx, &oraca);
sqlstm.sqlvsn = 13;
sqlstm.arrsiz = 9;
sqlstm.sqladtp = &sqladt;
sqlstm.sqltdsp = &sqltds;
sqlstm.iters = (unsigned int )1;
sqlstm.offset = (unsigned int )218;
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) goto errorfound;
}
if (nTot>0) {
if (nTot>=20000) channel->setRawData(data,start,lastTimestamp.Data());
else channel->setRawData(data,start,end);
cout<<"Number of raw data: "<<nTot<<'\n';
return kTRUE;
}
Error("readRawData","No raw data found!");
return kFALSE;
errorfound:
pConn->showSqlError("readRawData");
return kFALSE;
}
horaslowreader2016.pc.cc:1 horaslowreader2016.pc.cc:2 horaslowreader2016.pc.cc:3 horaslowreader2016.pc.cc:4 horaslowreader2016.pc.cc:5 horaslowreader2016.pc.cc:6 horaslowreader2016.pc.cc:7 horaslowreader2016.pc.cc:8 horaslowreader2016.pc.cc:9 horaslowreader2016.pc.cc:10 horaslowreader2016.pc.cc:11 horaslowreader2016.pc.cc:12 horaslowreader2016.pc.cc:13 horaslowreader2016.pc.cc:14 horaslowreader2016.pc.cc:15 horaslowreader2016.pc.cc:16 horaslowreader2016.pc.cc:17 horaslowreader2016.pc.cc:18 horaslowreader2016.pc.cc:19 horaslowreader2016.pc.cc:20 horaslowreader2016.pc.cc:21 horaslowreader2016.pc.cc:22 horaslowreader2016.pc.cc:23 horaslowreader2016.pc.cc:24 horaslowreader2016.pc.cc:25 horaslowreader2016.pc.cc:26 horaslowreader2016.pc.cc:27 horaslowreader2016.pc.cc:28 horaslowreader2016.pc.cc:29 horaslowreader2016.pc.cc:30 horaslowreader2016.pc.cc:31 horaslowreader2016.pc.cc:32 horaslowreader2016.pc.cc:33 horaslowreader2016.pc.cc:34 horaslowreader2016.pc.cc:35 horaslowreader2016.pc.cc:36 horaslowreader2016.pc.cc:37 horaslowreader2016.pc.cc:38 horaslowreader2016.pc.cc:39 horaslowreader2016.pc.cc:40 horaslowreader2016.pc.cc:41 horaslowreader2016.pc.cc:42 horaslowreader2016.pc.cc:43 horaslowreader2016.pc.cc:44 horaslowreader2016.pc.cc:45 horaslowreader2016.pc.cc:46 horaslowreader2016.pc.cc:47 horaslowreader2016.pc.cc:48 horaslowreader2016.pc.cc:49 horaslowreader2016.pc.cc:50 horaslowreader2016.pc.cc:51 horaslowreader2016.pc.cc:52 horaslowreader2016.pc.cc:53 horaslowreader2016.pc.cc:54 horaslowreader2016.pc.cc:55 horaslowreader2016.pc.cc:56 horaslowreader2016.pc.cc:57 horaslowreader2016.pc.cc:58 horaslowreader2016.pc.cc:59 horaslowreader2016.pc.cc:60 horaslowreader2016.pc.cc:61 horaslowreader2016.pc.cc:62 horaslowreader2016.pc.cc:63 horaslowreader2016.pc.cc:64 horaslowreader2016.pc.cc:65 horaslowreader2016.pc.cc:66 horaslowreader2016.pc.cc:67 horaslowreader2016.pc.cc:68 horaslowreader2016.pc.cc:69 horaslowreader2016.pc.cc:70 horaslowreader2016.pc.cc:71 horaslowreader2016.pc.cc:72 horaslowreader2016.pc.cc:73 horaslowreader2016.pc.cc:74 horaslowreader2016.pc.cc:75 horaslowreader2016.pc.cc:76 horaslowreader2016.pc.cc:77 horaslowreader2016.pc.cc:78 horaslowreader2016.pc.cc:79 horaslowreader2016.pc.cc:80 horaslowreader2016.pc.cc:81 horaslowreader2016.pc.cc:82 horaslowreader2016.pc.cc:83 horaslowreader2016.pc.cc:84 horaslowreader2016.pc.cc:85 horaslowreader2016.pc.cc:86 horaslowreader2016.pc.cc:87 horaslowreader2016.pc.cc:88 horaslowreader2016.pc.cc:89 horaslowreader2016.pc.cc:90 horaslowreader2016.pc.cc:91 horaslowreader2016.pc.cc:92 horaslowreader2016.pc.cc:93 horaslowreader2016.pc.cc:94 horaslowreader2016.pc.cc:95 horaslowreader2016.pc.cc:96 horaslowreader2016.pc.cc:97 horaslowreader2016.pc.cc:98 horaslowreader2016.pc.cc:99 horaslowreader2016.pc.cc:100 horaslowreader2016.pc.cc:101 horaslowreader2016.pc.cc:102 horaslowreader2016.pc.cc:103 horaslowreader2016.pc.cc:104 horaslowreader2016.pc.cc:105 horaslowreader2016.pc.cc:106 horaslowreader2016.pc.cc:107 horaslowreader2016.pc.cc:108 horaslowreader2016.pc.cc:109 horaslowreader2016.pc.cc:110 horaslowreader2016.pc.cc:111 horaslowreader2016.pc.cc:112 horaslowreader2016.pc.cc:113 horaslowreader2016.pc.cc:114 horaslowreader2016.pc.cc:115 horaslowreader2016.pc.cc:116 horaslowreader2016.pc.cc:117 horaslowreader2016.pc.cc:118 horaslowreader2016.pc.cc:119 horaslowreader2016.pc.cc:120 horaslowreader2016.pc.cc:121 horaslowreader2016.pc.cc:122 horaslowreader2016.pc.cc:123 horaslowreader2016.pc.cc:124 horaslowreader2016.pc.cc:125 horaslowreader2016.pc.cc:126 horaslowreader2016.pc.cc:127 horaslowreader2016.pc.cc:128 horaslowreader2016.pc.cc:129 horaslowreader2016.pc.cc:130 horaslowreader2016.pc.cc:131 horaslowreader2016.pc.cc:132 horaslowreader2016.pc.cc:133 horaslowreader2016.pc.cc:134 horaslowreader2016.pc.cc:135 horaslowreader2016.pc.cc:136 horaslowreader2016.pc.cc:137 horaslowreader2016.pc.cc:138 horaslowreader2016.pc.cc:139 horaslowreader2016.pc.cc:140 horaslowreader2016.pc.cc:141 horaslowreader2016.pc.cc:142 horaslowreader2016.pc.cc:143 horaslowreader2016.pc.cc:144 horaslowreader2016.pc.cc:145 horaslowreader2016.pc.cc:146 horaslowreader2016.pc.cc:147 horaslowreader2016.pc.cc:148 horaslowreader2016.pc.cc:149 horaslowreader2016.pc.cc:150 horaslowreader2016.pc.cc:151 horaslowreader2016.pc.cc:152 horaslowreader2016.pc.cc:153 horaslowreader2016.pc.cc:154 horaslowreader2016.pc.cc:155 horaslowreader2016.pc.cc:156 horaslowreader2016.pc.cc:157 horaslowreader2016.pc.cc:158 horaslowreader2016.pc.cc:159 horaslowreader2016.pc.cc:160 horaslowreader2016.pc.cc:161 horaslowreader2016.pc.cc:162 horaslowreader2016.pc.cc:163 horaslowreader2016.pc.cc:164 horaslowreader2016.pc.cc:165 horaslowreader2016.pc.cc:166 horaslowreader2016.pc.cc:167 horaslowreader2016.pc.cc:168 horaslowreader2016.pc.cc:169 horaslowreader2016.pc.cc:170 horaslowreader2016.pc.cc:171 horaslowreader2016.pc.cc:172 horaslowreader2016.pc.cc:173 horaslowreader2016.pc.cc:174 horaslowreader2016.pc.cc:175 horaslowreader2016.pc.cc:176 horaslowreader2016.pc.cc:177 horaslowreader2016.pc.cc:178 horaslowreader2016.pc.cc:179 horaslowreader2016.pc.cc:180 horaslowreader2016.pc.cc:181 horaslowreader2016.pc.cc:182 horaslowreader2016.pc.cc:183 horaslowreader2016.pc.cc:184 horaslowreader2016.pc.cc:185 horaslowreader2016.pc.cc:186 horaslowreader2016.pc.cc:187 horaslowreader2016.pc.cc:188 horaslowreader2016.pc.cc:189 horaslowreader2016.pc.cc:190 horaslowreader2016.pc.cc:191 horaslowreader2016.pc.cc:192 horaslowreader2016.pc.cc:193 horaslowreader2016.pc.cc:194 horaslowreader2016.pc.cc:195 horaslowreader2016.pc.cc:196 horaslowreader2016.pc.cc:197 horaslowreader2016.pc.cc:198 horaslowreader2016.pc.cc:199 horaslowreader2016.pc.cc:200 horaslowreader2016.pc.cc:201 horaslowreader2016.pc.cc:202 horaslowreader2016.pc.cc:203 horaslowreader2016.pc.cc:204 horaslowreader2016.pc.cc:205 horaslowreader2016.pc.cc:206 horaslowreader2016.pc.cc:207 horaslowreader2016.pc.cc:208 horaslowreader2016.pc.cc:209 horaslowreader2016.pc.cc:210 horaslowreader2016.pc.cc:211 horaslowreader2016.pc.cc:212 horaslowreader2016.pc.cc:213 horaslowreader2016.pc.cc:214 horaslowreader2016.pc.cc:215 horaslowreader2016.pc.cc:216 horaslowreader2016.pc.cc:217 horaslowreader2016.pc.cc:218 horaslowreader2016.pc.cc:219 horaslowreader2016.pc.cc:220 horaslowreader2016.pc.cc:221 horaslowreader2016.pc.cc:222 horaslowreader2016.pc.cc:223 horaslowreader2016.pc.cc:224 horaslowreader2016.pc.cc:225 horaslowreader2016.pc.cc:226 horaslowreader2016.pc.cc:227 horaslowreader2016.pc.cc:228 horaslowreader2016.pc.cc:229 horaslowreader2016.pc.cc:230 horaslowreader2016.pc.cc:231 horaslowreader2016.pc.cc:232 horaslowreader2016.pc.cc:233 horaslowreader2016.pc.cc:234 horaslowreader2016.pc.cc:235 horaslowreader2016.pc.cc:236 horaslowreader2016.pc.cc:237 horaslowreader2016.pc.cc:238 horaslowreader2016.pc.cc:239 horaslowreader2016.pc.cc:240 horaslowreader2016.pc.cc:241 horaslowreader2016.pc.cc:242 horaslowreader2016.pc.cc:243 horaslowreader2016.pc.cc:244 horaslowreader2016.pc.cc:245 horaslowreader2016.pc.cc:246 horaslowreader2016.pc.cc:247 horaslowreader2016.pc.cc:248 horaslowreader2016.pc.cc:249 horaslowreader2016.pc.cc:250 horaslowreader2016.pc.cc:251 horaslowreader2016.pc.cc:252 horaslowreader2016.pc.cc:253 horaslowreader2016.pc.cc:254 horaslowreader2016.pc.cc:255 horaslowreader2016.pc.cc:256 horaslowreader2016.pc.cc:257 horaslowreader2016.pc.cc:258 horaslowreader2016.pc.cc:259 horaslowreader2016.pc.cc:260 horaslowreader2016.pc.cc:261 horaslowreader2016.pc.cc:262 horaslowreader2016.pc.cc:263 horaslowreader2016.pc.cc:264 horaslowreader2016.pc.cc:265 horaslowreader2016.pc.cc:266 horaslowreader2016.pc.cc:267 horaslowreader2016.pc.cc:268 horaslowreader2016.pc.cc:269 horaslowreader2016.pc.cc:270 horaslowreader2016.pc.cc:271 horaslowreader2016.pc.cc:272 horaslowreader2016.pc.cc:273 horaslowreader2016.pc.cc:274 horaslowreader2016.pc.cc:275 horaslowreader2016.pc.cc:276 horaslowreader2016.pc.cc:277 horaslowreader2016.pc.cc:278 horaslowreader2016.pc.cc:279 horaslowreader2016.pc.cc:280 horaslowreader2016.pc.cc:281 horaslowreader2016.pc.cc:282 horaslowreader2016.pc.cc:283 horaslowreader2016.pc.cc:284 horaslowreader2016.pc.cc:285 horaslowreader2016.pc.cc:286 horaslowreader2016.pc.cc:287 horaslowreader2016.pc.cc:288 horaslowreader2016.pc.cc:289 horaslowreader2016.pc.cc:290 horaslowreader2016.pc.cc:291 horaslowreader2016.pc.cc:292 horaslowreader2016.pc.cc:293 horaslowreader2016.pc.cc:294 horaslowreader2016.pc.cc:295 horaslowreader2016.pc.cc:296 horaslowreader2016.pc.cc:297 horaslowreader2016.pc.cc:298 horaslowreader2016.pc.cc:299 horaslowreader2016.pc.cc:300 horaslowreader2016.pc.cc:301 horaslowreader2016.pc.cc:302 horaslowreader2016.pc.cc:303 horaslowreader2016.pc.cc:304 horaslowreader2016.pc.cc:305 horaslowreader2016.pc.cc:306 horaslowreader2016.pc.cc:307 horaslowreader2016.pc.cc:308 horaslowreader2016.pc.cc:309 horaslowreader2016.pc.cc:310 horaslowreader2016.pc.cc:311 horaslowreader2016.pc.cc:312 horaslowreader2016.pc.cc:313 horaslowreader2016.pc.cc:314 horaslowreader2016.pc.cc:315 horaslowreader2016.pc.cc:316 horaslowreader2016.pc.cc:317 horaslowreader2016.pc.cc:318 horaslowreader2016.pc.cc:319 horaslowreader2016.pc.cc:320 horaslowreader2016.pc.cc:321 horaslowreader2016.pc.cc:322 horaslowreader2016.pc.cc:323 horaslowreader2016.pc.cc:324 horaslowreader2016.pc.cc:325 horaslowreader2016.pc.cc:326 horaslowreader2016.pc.cc:327 horaslowreader2016.pc.cc:328 horaslowreader2016.pc.cc:329 horaslowreader2016.pc.cc:330 horaslowreader2016.pc.cc:331 horaslowreader2016.pc.cc:332 horaslowreader2016.pc.cc:333 horaslowreader2016.pc.cc:334 horaslowreader2016.pc.cc:335 horaslowreader2016.pc.cc:336 horaslowreader2016.pc.cc:337 horaslowreader2016.pc.cc:338 horaslowreader2016.pc.cc:339 horaslowreader2016.pc.cc:340 horaslowreader2016.pc.cc:341 horaslowreader2016.pc.cc:342 horaslowreader2016.pc.cc:343 horaslowreader2016.pc.cc:344 horaslowreader2016.pc.cc:345 horaslowreader2016.pc.cc:346 horaslowreader2016.pc.cc:347 horaslowreader2016.pc.cc:348 horaslowreader2016.pc.cc:349 horaslowreader2016.pc.cc:350 horaslowreader2016.pc.cc:351 horaslowreader2016.pc.cc:352 horaslowreader2016.pc.cc:353 horaslowreader2016.pc.cc:354 horaslowreader2016.pc.cc:355 horaslowreader2016.pc.cc:356 horaslowreader2016.pc.cc:357 horaslowreader2016.pc.cc:358 horaslowreader2016.pc.cc:359 horaslowreader2016.pc.cc:360 horaslowreader2016.pc.cc:361 horaslowreader2016.pc.cc:362 horaslowreader2016.pc.cc:363 horaslowreader2016.pc.cc:364 horaslowreader2016.pc.cc:365 horaslowreader2016.pc.cc:366 horaslowreader2016.pc.cc:367 horaslowreader2016.pc.cc:368 horaslowreader2016.pc.cc:369 horaslowreader2016.pc.cc:370 horaslowreader2016.pc.cc:371 horaslowreader2016.pc.cc:372 horaslowreader2016.pc.cc:373 horaslowreader2016.pc.cc:374 horaslowreader2016.pc.cc:375 horaslowreader2016.pc.cc:376 horaslowreader2016.pc.cc:377 horaslowreader2016.pc.cc:378 horaslowreader2016.pc.cc:379 horaslowreader2016.pc.cc:380 horaslowreader2016.pc.cc:381 horaslowreader2016.pc.cc:382 horaslowreader2016.pc.cc:383 horaslowreader2016.pc.cc:384 horaslowreader2016.pc.cc:385 horaslowreader2016.pc.cc:386 horaslowreader2016.pc.cc:387 horaslowreader2016.pc.cc:388 horaslowreader2016.pc.cc:389 horaslowreader2016.pc.cc:390 horaslowreader2016.pc.cc:391 horaslowreader2016.pc.cc:392 horaslowreader2016.pc.cc:393 horaslowreader2016.pc.cc:394 horaslowreader2016.pc.cc:395 horaslowreader2016.pc.cc:396 horaslowreader2016.pc.cc:397 horaslowreader2016.pc.cc:398 horaslowreader2016.pc.cc:399 horaslowreader2016.pc.cc:400 horaslowreader2016.pc.cc:401 horaslowreader2016.pc.cc:402 horaslowreader2016.pc.cc:403 horaslowreader2016.pc.cc:404 horaslowreader2016.pc.cc:405 horaslowreader2016.pc.cc:406 horaslowreader2016.pc.cc:407 horaslowreader2016.pc.cc:408 horaslowreader2016.pc.cc:409 horaslowreader2016.pc.cc:410 horaslowreader2016.pc.cc:411 horaslowreader2016.pc.cc:412 horaslowreader2016.pc.cc:413 horaslowreader2016.pc.cc:414 horaslowreader2016.pc.cc:415 horaslowreader2016.pc.cc:416 horaslowreader2016.pc.cc:417 horaslowreader2016.pc.cc:418 horaslowreader2016.pc.cc:419 horaslowreader2016.pc.cc:420 horaslowreader2016.pc.cc:421 horaslowreader2016.pc.cc:422 horaslowreader2016.pc.cc:423 horaslowreader2016.pc.cc:424 horaslowreader2016.pc.cc:425 horaslowreader2016.pc.cc:426 horaslowreader2016.pc.cc:427 horaslowreader2016.pc.cc:428 horaslowreader2016.pc.cc:429 horaslowreader2016.pc.cc:430 horaslowreader2016.pc.cc:431 horaslowreader2016.pc.cc:432 horaslowreader2016.pc.cc:433 horaslowreader2016.pc.cc:434 horaslowreader2016.pc.cc:435 horaslowreader2016.pc.cc:436 horaslowreader2016.pc.cc:437 horaslowreader2016.pc.cc:438 horaslowreader2016.pc.cc:439 horaslowreader2016.pc.cc:440 horaslowreader2016.pc.cc:441 horaslowreader2016.pc.cc:442 horaslowreader2016.pc.cc:443 horaslowreader2016.pc.cc:444 horaslowreader2016.pc.cc:445 horaslowreader2016.pc.cc:446 horaslowreader2016.pc.cc:447 horaslowreader2016.pc.cc:448 horaslowreader2016.pc.cc:449 horaslowreader2016.pc.cc:450 horaslowreader2016.pc.cc:451 horaslowreader2016.pc.cc:452 horaslowreader2016.pc.cc:453 horaslowreader2016.pc.cc:454 horaslowreader2016.pc.cc:455 horaslowreader2016.pc.cc:456 horaslowreader2016.pc.cc:457 horaslowreader2016.pc.cc:458 horaslowreader2016.pc.cc:459 horaslowreader2016.pc.cc:460 horaslowreader2016.pc.cc:461 horaslowreader2016.pc.cc:462 horaslowreader2016.pc.cc:463 horaslowreader2016.pc.cc:464 horaslowreader2016.pc.cc:465 horaslowreader2016.pc.cc:466 horaslowreader2016.pc.cc:467 horaslowreader2016.pc.cc:468 horaslowreader2016.pc.cc:469 horaslowreader2016.pc.cc:470 horaslowreader2016.pc.cc:471 horaslowreader2016.pc.cc:472 horaslowreader2016.pc.cc:473 horaslowreader2016.pc.cc:474 horaslowreader2016.pc.cc:475 horaslowreader2016.pc.cc:476 horaslowreader2016.pc.cc:477 horaslowreader2016.pc.cc:478 horaslowreader2016.pc.cc:479 horaslowreader2016.pc.cc:480 horaslowreader2016.pc.cc:481 horaslowreader2016.pc.cc:482 horaslowreader2016.pc.cc:483 horaslowreader2016.pc.cc:484 horaslowreader2016.pc.cc:485 horaslowreader2016.pc.cc:486 horaslowreader2016.pc.cc:487 horaslowreader2016.pc.cc:488 horaslowreader2016.pc.cc:489 horaslowreader2016.pc.cc:490 horaslowreader2016.pc.cc:491 horaslowreader2016.pc.cc:492 horaslowreader2016.pc.cc:493 horaslowreader2016.pc.cc:494 horaslowreader2016.pc.cc:495 horaslowreader2016.pc.cc:496 horaslowreader2016.pc.cc:497 horaslowreader2016.pc.cc:498 horaslowreader2016.pc.cc:499 horaslowreader2016.pc.cc:500 horaslowreader2016.pc.cc:501 horaslowreader2016.pc.cc:502 horaslowreader2016.pc.cc:503 horaslowreader2016.pc.cc:504 horaslowreader2016.pc.cc:505 horaslowreader2016.pc.cc:506 horaslowreader2016.pc.cc:507 horaslowreader2016.pc.cc:508 horaslowreader2016.pc.cc:509 horaslowreader2016.pc.cc:510 horaslowreader2016.pc.cc:511 horaslowreader2016.pc.cc:512 horaslowreader2016.pc.cc:513 horaslowreader2016.pc.cc:514 horaslowreader2016.pc.cc:515 horaslowreader2016.pc.cc:516 horaslowreader2016.pc.cc:517 horaslowreader2016.pc.cc:518 horaslowreader2016.pc.cc:519 horaslowreader2016.pc.cc:520 horaslowreader2016.pc.cc:521 horaslowreader2016.pc.cc:522 horaslowreader2016.pc.cc:523 horaslowreader2016.pc.cc:524 horaslowreader2016.pc.cc:525 horaslowreader2016.pc.cc:526 horaslowreader2016.pc.cc:527 horaslowreader2016.pc.cc:528 horaslowreader2016.pc.cc:529 horaslowreader2016.pc.cc:530 horaslowreader2016.pc.cc:531 horaslowreader2016.pc.cc:532 horaslowreader2016.pc.cc:533 horaslowreader2016.pc.cc:534 horaslowreader2016.pc.cc:535 horaslowreader2016.pc.cc:536 horaslowreader2016.pc.cc:537 horaslowreader2016.pc.cc:538 horaslowreader2016.pc.cc:539 horaslowreader2016.pc.cc:540 horaslowreader2016.pc.cc:541 horaslowreader2016.pc.cc:542 horaslowreader2016.pc.cc:543 horaslowreader2016.pc.cc:544 horaslowreader2016.pc.cc:545 horaslowreader2016.pc.cc:546 horaslowreader2016.pc.cc:547 horaslowreader2016.pc.cc:548 horaslowreader2016.pc.cc:549 horaslowreader2016.pc.cc:550 horaslowreader2016.pc.cc:551 horaslowreader2016.pc.cc:552 horaslowreader2016.pc.cc:553 horaslowreader2016.pc.cc:554 horaslowreader2016.pc.cc:555 horaslowreader2016.pc.cc:556 horaslowreader2016.pc.cc:557 horaslowreader2016.pc.cc:558 horaslowreader2016.pc.cc:559 horaslowreader2016.pc.cc:560 horaslowreader2016.pc.cc:561 horaslowreader2016.pc.cc:562 horaslowreader2016.pc.cc:563 horaslowreader2016.pc.cc:564 horaslowreader2016.pc.cc:565 horaslowreader2016.pc.cc:566 horaslowreader2016.pc.cc:567 horaslowreader2016.pc.cc:568 horaslowreader2016.pc.cc:569 horaslowreader2016.pc.cc:570 horaslowreader2016.pc.cc:571 horaslowreader2016.pc.cc:572 horaslowreader2016.pc.cc:573 horaslowreader2016.pc.cc:574 horaslowreader2016.pc.cc:575 horaslowreader2016.pc.cc:576 horaslowreader2016.pc.cc:577 horaslowreader2016.pc.cc:578 horaslowreader2016.pc.cc:579 horaslowreader2016.pc.cc:580 horaslowreader2016.pc.cc:581 horaslowreader2016.pc.cc:582 horaslowreader2016.pc.cc:583 horaslowreader2016.pc.cc:584 horaslowreader2016.pc.cc:585 horaslowreader2016.pc.cc:586 horaslowreader2016.pc.cc:587 horaslowreader2016.pc.cc:588 horaslowreader2016.pc.cc:589 horaslowreader2016.pc.cc:590 horaslowreader2016.pc.cc:591 horaslowreader2016.pc.cc:592 horaslowreader2016.pc.cc:593 horaslowreader2016.pc.cc:594 horaslowreader2016.pc.cc:595 horaslowreader2016.pc.cc:596 horaslowreader2016.pc.cc:597 horaslowreader2016.pc.cc:598 horaslowreader2016.pc.cc:599 horaslowreader2016.pc.cc:600 horaslowreader2016.pc.cc:601 horaslowreader2016.pc.cc:602 horaslowreader2016.pc.cc:603 horaslowreader2016.pc.cc:604 horaslowreader2016.pc.cc:605 horaslowreader2016.pc.cc:606 horaslowreader2016.pc.cc:607 horaslowreader2016.pc.cc:608 horaslowreader2016.pc.cc:609 horaslowreader2016.pc.cc:610 horaslowreader2016.pc.cc:611 horaslowreader2016.pc.cc:612 horaslowreader2016.pc.cc:613 horaslowreader2016.pc.cc:614 horaslowreader2016.pc.cc:615 horaslowreader2016.pc.cc:616 horaslowreader2016.pc.cc:617 horaslowreader2016.pc.cc:618 horaslowreader2016.pc.cc:619 horaslowreader2016.pc.cc:620 horaslowreader2016.pc.cc:621 horaslowreader2016.pc.cc:622 horaslowreader2016.pc.cc:623 horaslowreader2016.pc.cc:624 horaslowreader2016.pc.cc:625 horaslowreader2016.pc.cc:626 horaslowreader2016.pc.cc:627 horaslowreader2016.pc.cc:628 horaslowreader2016.pc.cc:629 horaslowreader2016.pc.cc:630 horaslowreader2016.pc.cc:631 horaslowreader2016.pc.cc:632 horaslowreader2016.pc.cc:633 horaslowreader2016.pc.cc:634 horaslowreader2016.pc.cc:635 horaslowreader2016.pc.cc:636 horaslowreader2016.pc.cc:637 horaslowreader2016.pc.cc:638 horaslowreader2016.pc.cc:639 horaslowreader2016.pc.cc:640 horaslowreader2016.pc.cc:641 horaslowreader2016.pc.cc:642 horaslowreader2016.pc.cc:643 horaslowreader2016.pc.cc:644 horaslowreader2016.pc.cc:645 horaslowreader2016.pc.cc:646 horaslowreader2016.pc.cc:647 horaslowreader2016.pc.cc:648 horaslowreader2016.pc.cc:649 horaslowreader2016.pc.cc:650 horaslowreader2016.pc.cc:651 horaslowreader2016.pc.cc:652 horaslowreader2016.pc.cc:653 horaslowreader2016.pc.cc:654 horaslowreader2016.pc.cc:655 horaslowreader2016.pc.cc:656 horaslowreader2016.pc.cc:657 horaslowreader2016.pc.cc:658 horaslowreader2016.pc.cc:659 horaslowreader2016.pc.cc:660 horaslowreader2016.pc.cc:661 horaslowreader2016.pc.cc:662 horaslowreader2016.pc.cc:663 horaslowreader2016.pc.cc:664 horaslowreader2016.pc.cc:665 horaslowreader2016.pc.cc:666 horaslowreader2016.pc.cc:667 horaslowreader2016.pc.cc:668 horaslowreader2016.pc.cc:669 horaslowreader2016.pc.cc:670 horaslowreader2016.pc.cc:671 horaslowreader2016.pc.cc:672 horaslowreader2016.pc.cc:673 horaslowreader2016.pc.cc:674 horaslowreader2016.pc.cc:675 horaslowreader2016.pc.cc:676 horaslowreader2016.pc.cc:677 horaslowreader2016.pc.cc:678 horaslowreader2016.pc.cc:679 horaslowreader2016.pc.cc:680 horaslowreader2016.pc.cc:681 horaslowreader2016.pc.cc:682 horaslowreader2016.pc.cc:683 horaslowreader2016.pc.cc:684 horaslowreader2016.pc.cc:685 horaslowreader2016.pc.cc:686 horaslowreader2016.pc.cc:687 horaslowreader2016.pc.cc:688 horaslowreader2016.pc.cc:689 horaslowreader2016.pc.cc:690 horaslowreader2016.pc.cc:691 horaslowreader2016.pc.cc:692 horaslowreader2016.pc.cc:693 horaslowreader2016.pc.cc:694 horaslowreader2016.pc.cc:695 horaslowreader2016.pc.cc:696 horaslowreader2016.pc.cc:697 horaslowreader2016.pc.cc:698 horaslowreader2016.pc.cc:699 horaslowreader2016.pc.cc:700 horaslowreader2016.pc.cc:701 horaslowreader2016.pc.cc:702 horaslowreader2016.pc.cc:703 horaslowreader2016.pc.cc:704 horaslowreader2016.pc.cc:705 horaslowreader2016.pc.cc:706 horaslowreader2016.pc.cc:707 horaslowreader2016.pc.cc:708 horaslowreader2016.pc.cc:709 horaslowreader2016.pc.cc:710 horaslowreader2016.pc.cc:711 horaslowreader2016.pc.cc:712 horaslowreader2016.pc.cc:713 horaslowreader2016.pc.cc:714 horaslowreader2016.pc.cc:715 horaslowreader2016.pc.cc:716 horaslowreader2016.pc.cc:717 horaslowreader2016.pc.cc:718 horaslowreader2016.pc.cc:719 horaslowreader2016.pc.cc:720 horaslowreader2016.pc.cc:721 horaslowreader2016.pc.cc:722 horaslowreader2016.pc.cc:723 horaslowreader2016.pc.cc:724 horaslowreader2016.pc.cc:725 horaslowreader2016.pc.cc:726 horaslowreader2016.pc.cc:727 horaslowreader2016.pc.cc:728 horaslowreader2016.pc.cc:729 horaslowreader2016.pc.cc:730 horaslowreader2016.pc.cc:731 horaslowreader2016.pc.cc:732 horaslowreader2016.pc.cc:733 horaslowreader2016.pc.cc:734 horaslowreader2016.pc.cc:735 horaslowreader2016.pc.cc:736 horaslowreader2016.pc.cc:737 horaslowreader2016.pc.cc:738 horaslowreader2016.pc.cc:739 horaslowreader2016.pc.cc:740 horaslowreader2016.pc.cc:741 horaslowreader2016.pc.cc:742 horaslowreader2016.pc.cc:743 horaslowreader2016.pc.cc:744 horaslowreader2016.pc.cc:745 horaslowreader2016.pc.cc:746 horaslowreader2016.pc.cc:747 horaslowreader2016.pc.cc:748 horaslowreader2016.pc.cc:749 horaslowreader2016.pc.cc:750 horaslowreader2016.pc.cc:751 horaslowreader2016.pc.cc:752 horaslowreader2016.pc.cc:753 horaslowreader2016.pc.cc:754 horaslowreader2016.pc.cc:755 horaslowreader2016.pc.cc:756 horaslowreader2016.pc.cc:757 horaslowreader2016.pc.cc:758 horaslowreader2016.pc.cc:759 horaslowreader2016.pc.cc:760 horaslowreader2016.pc.cc:761 horaslowreader2016.pc.cc:762 horaslowreader2016.pc.cc:763 horaslowreader2016.pc.cc:764 horaslowreader2016.pc.cc:765 horaslowreader2016.pc.cc:766 horaslowreader2016.pc.cc:767 horaslowreader2016.pc.cc:768 horaslowreader2016.pc.cc:769 horaslowreader2016.pc.cc:770 horaslowreader2016.pc.cc:771 horaslowreader2016.pc.cc:772 horaslowreader2016.pc.cc:773 horaslowreader2016.pc.cc:774 horaslowreader2016.pc.cc:775 horaslowreader2016.pc.cc:776 horaslowreader2016.pc.cc:777 horaslowreader2016.pc.cc:778 horaslowreader2016.pc.cc:779 horaslowreader2016.pc.cc:780 horaslowreader2016.pc.cc:781 horaslowreader2016.pc.cc:782 horaslowreader2016.pc.cc:783 horaslowreader2016.pc.cc:784 horaslowreader2016.pc.cc:785 horaslowreader2016.pc.cc:786 horaslowreader2016.pc.cc:787 horaslowreader2016.pc.cc:788 horaslowreader2016.pc.cc:789 horaslowreader2016.pc.cc:790 horaslowreader2016.pc.cc:791 horaslowreader2016.pc.cc:792 horaslowreader2016.pc.cc:793 horaslowreader2016.pc.cc:794 horaslowreader2016.pc.cc:795 horaslowreader2016.pc.cc:796 horaslowreader2016.pc.cc:797 horaslowreader2016.pc.cc:798 horaslowreader2016.pc.cc:799 horaslowreader2016.pc.cc:800 horaslowreader2016.pc.cc:801 horaslowreader2016.pc.cc:802 horaslowreader2016.pc.cc:803 horaslowreader2016.pc.cc:804 horaslowreader2016.pc.cc:805 horaslowreader2016.pc.cc:806 horaslowreader2016.pc.cc:807 horaslowreader2016.pc.cc:808 horaslowreader2016.pc.cc:809 horaslowreader2016.pc.cc:810 horaslowreader2016.pc.cc:811 horaslowreader2016.pc.cc:812 horaslowreader2016.pc.cc:813 horaslowreader2016.pc.cc:814 horaslowreader2016.pc.cc:815 horaslowreader2016.pc.cc:816 horaslowreader2016.pc.cc:817 horaslowreader2016.pc.cc:818 horaslowreader2016.pc.cc:819 horaslowreader2016.pc.cc:820 horaslowreader2016.pc.cc:821 horaslowreader2016.pc.cc:822 horaslowreader2016.pc.cc:823 horaslowreader2016.pc.cc:824 horaslowreader2016.pc.cc:825 horaslowreader2016.pc.cc:826 horaslowreader2016.pc.cc:827 horaslowreader2016.pc.cc:828 horaslowreader2016.pc.cc:829 horaslowreader2016.pc.cc:830 horaslowreader2016.pc.cc:831 horaslowreader2016.pc.cc:832 horaslowreader2016.pc.cc:833 horaslowreader2016.pc.cc:834 horaslowreader2016.pc.cc:835 horaslowreader2016.pc.cc:836 horaslowreader2016.pc.cc:837 horaslowreader2016.pc.cc:838 horaslowreader2016.pc.cc:839 horaslowreader2016.pc.cc:840 horaslowreader2016.pc.cc:841 horaslowreader2016.pc.cc:842 horaslowreader2016.pc.cc:843 horaslowreader2016.pc.cc:844 horaslowreader2016.pc.cc:845 horaslowreader2016.pc.cc:846 horaslowreader2016.pc.cc:847 horaslowreader2016.pc.cc:848 horaslowreader2016.pc.cc:849 horaslowreader2016.pc.cc:850 horaslowreader2016.pc.cc:851 horaslowreader2016.pc.cc:852 horaslowreader2016.pc.cc:853 horaslowreader2016.pc.cc:854 horaslowreader2016.pc.cc:855 horaslowreader2016.pc.cc:856 horaslowreader2016.pc.cc:857 horaslowreader2016.pc.cc:858 horaslowreader2016.pc.cc:859 horaslowreader2016.pc.cc:860 horaslowreader2016.pc.cc:861 horaslowreader2016.pc.cc:862 horaslowreader2016.pc.cc:863 horaslowreader2016.pc.cc:864 horaslowreader2016.pc.cc:865 horaslowreader2016.pc.cc:866 horaslowreader2016.pc.cc:867 horaslowreader2016.pc.cc:868 horaslowreader2016.pc.cc:869 horaslowreader2016.pc.cc:870 horaslowreader2016.pc.cc:871 horaslowreader2016.pc.cc:872 horaslowreader2016.pc.cc:873 horaslowreader2016.pc.cc:874 horaslowreader2016.pc.cc:875 horaslowreader2016.pc.cc:876 horaslowreader2016.pc.cc:877 horaslowreader2016.pc.cc:878 horaslowreader2016.pc.cc:879 horaslowreader2016.pc.cc:880 horaslowreader2016.pc.cc:881 horaslowreader2016.pc.cc:882 horaslowreader2016.pc.cc:883 horaslowreader2016.pc.cc:884 horaslowreader2016.pc.cc:885 horaslowreader2016.pc.cc:886 horaslowreader2016.pc.cc:887 horaslowreader2016.pc.cc:888 horaslowreader2016.pc.cc:889 horaslowreader2016.pc.cc:890 horaslowreader2016.pc.cc:891 horaslowreader2016.pc.cc:892 horaslowreader2016.pc.cc:893 horaslowreader2016.pc.cc:894 horaslowreader2016.pc.cc:895 horaslowreader2016.pc.cc:896 horaslowreader2016.pc.cc:897 horaslowreader2016.pc.cc:898 horaslowreader2016.pc.cc:899 horaslowreader2016.pc.cc:900 horaslowreader2016.pc.cc:901 horaslowreader2016.pc.cc:902 horaslowreader2016.pc.cc:903 horaslowreader2016.pc.cc:904 horaslowreader2016.pc.cc:905 horaslowreader2016.pc.cc:906 horaslowreader2016.pc.cc:907 horaslowreader2016.pc.cc:908