ROOT logo

/* Result Sets Interface */
#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 */

/* Thread Safety */
typedef void * sql_context;
typedef void * SQL_CONTEXT;

/* Object support */
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,
};

/* Binding to PL/SQL Records */
struct sqltdss
{
  unsigned int tdsvsn; 
  unsigned short tdsnum; 
  unsigned char *tdsval[1]; 
};
typedef struct sqltdss sqltdss;
static struct sqltdss sqltds =
{
  1,
  0,
};

/* File name & Package Name */
struct sqlcxp
{
  unsigned short fillen;
           char  filnam[18];
};
static const struct sqlcxp sqlfpn =
{
    17,
    "horaslowreader.pc"
};


static unsigned int sqlctx = 9842619;


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[6];
   unsigned long  sqhstl[6];
            int   sqhsts[6];
            short *sqindv[6];
            int   sqinds[6];
   unsigned long  sqharm[6];
   unsigned long  *sqharc[6];
   unsigned short  sqadto[6];
   unsigned short  sqtdso[6];
} sqlstm = {13,6};

// Prototypes
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 *);
}

// Forms Interface
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 *sq0003 = 
"select period_id ,TO_CHAR(period_begin,'yyyy-mm-dd hh24:mi:ss') ,TO_CHAR(per\
iod_end,'yyyy-mm-dd hh24:mi:ss') ,run_id ,filename  from hades_slow2.hscs_peri\
ods where (partition=:b0 and period_id between :b1 and :b2) order by period_id\
            ";

typedef struct { unsigned short len; unsigned char arr[1]; } VARCHAR;
typedef struct { unsigned short len; unsigned char arr[1]; } varchar;

/* cud (compilation unit data) array */
static const short sqlcud0[] =
{13,4130,1,0,0,
5,0,0,1,181,0,4,86,0,0,3,1,0,1,0,2,97,0,0,2,97,0,0,1,97,0,0,
32,0,0,2,220,0,4,132,0,0,6,3,0,1,0,2,3,0,0,2,3,0,0,2,3,0,0,1,97,0,0,1,97,0,0,1,
97,0,0,
71,0,0,3,244,0,9,189,0,0,3,3,0,1,0,1,97,0,0,1,3,0,0,1,3,0,0,
98,0,0,3,0,0,13,191,0,0,5,0,0,1,0,2,3,0,0,2,97,0,0,2,97,0,0,2,3,0,0,2,9,0,0,
133,0,0,3,0,0,15,209,0,0,0,0,0,1,0,
};


//*-- AUTHOR  : Ilse Koenig
//*-- Created  : 16/08/2004 by Ilse Koenig
//*-- Modified : 09/02/2011 by Ilse Koenig

//_HADES_CLASS_DESCRIPTION 
//////////////////////////////////////////////////////////////////////////////
//
// HOraSlowReader
//
// Base class to read slowcontrol data from Oracle
//
//////////////////////////////////////////////////////////////////////////////

#include "horaslowreader.h"
#include "horaslowmanager.h"
#include "hdbconn.h"
#include "horaslowpartition.h"
#include "horaslowperiod.h"
#include <stdio.h>
#include <stdlib.h>

#define SQLCA_STORAGE_CLASS extern
#define ORACA_STORAGE_CLASS extern

// Oracle communication area
#include <oraca.h>
// SQL Communications Area
#include <sqlca.h>

ClassImp(HOraSlowReader)

HOraSlowReader::HOraSlowReader() {
  // Constructor
  pPartition=0;
  pConn=new HDbConn();
}

HOraSlowReader::~HOraSlowReader() {
  // Destructor
  if (pPartition) {
    delete pPartition;
    pPartition=0;
  }
  if (pConn) {
    delete pConn;
    pConn=0;
  }
}

Bool_t HOraSlowReader::open() {
  // Opens an Oracle connection
  if (pConn->isOpen()) return kTRUE;
  return pConn->connectDb(gHOraSlowManager->getOraUser(),gHOraSlowManager->getDbName());  
}

void HOraSlowReader::close() {
  // Disconnects from Oracle
  pConn->closeDbConn();
}

Bool_t HOraSlowReader::isOpen() {
  return pConn->isOpen();
}

void HOraSlowReader::print() {
  // Prints information about the database connection
  if (pConn->isOpen())
    cout<<"Connected to Oracle-Database db-hades\n";
  else cout<<"*** no connection to Oracle established  ***\n";
}

Bool_t HOraSlowReader::readPartition() {
  // Reads the start time and end time of the data partion
  if (!pConn->isOpen()||!pPartition) return kFALSE;
  TString startTime(pPartition->getStartTime());
  TString endTime(pPartition->getEndTime());
  if (startTime.Length()!=0 && endTime.Length()!=0) return kTRUE;
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    char* pname;
    char  ts[20];
    char  te[20];
  /* EXEC SQL END DECLARE SECTION; */ 

  pname=(Char_t*)pPartition->GetName();
  /* EXEC SQL WHENEVER SQLERROR GOTO errorfound; */ 

  /* EXEC SQL WHENEVER NOT FOUND GOTO notfound; */ 

  /* EXEC SQL SELECT TO_CHAR(starttime,'yyyy-mm-dd hh24:mi:ss'),
                  TO_CHAR(NVL(endtime,SYSDATE),'yyyy-mm-dd hh24:mi:ss')
           INTO :ts, :te
           FROM hades_slow2.archive_partitionmgnt
           WHERE partitionname = :pname; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 13;
  sqlstm.arrsiz = 3;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = "select TO_CHAR(starttime,'yyyy-mm-dd hh24:mi:ss') ,TO_CHAR(\
NVL(endtime,SYSDATE),'yyyy-mm-dd hh24:mi:ss') into :b0,:b1  from hades_slow2.a\
rchive_partitionmgnt where partitionname=:b2";
  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  *)ts;
  sqlstm.sqhstl[0] = (unsigned long )20;
  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  *)te;
  sqlstm.sqhstl[1] = (unsigned long )20;
  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  *)pname;
  sqlstm.sqhstl[2] = (unsigned long )0;
  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 errorfound;
}


  ts[19]='\0';
  te[19]='\0';
  if (startTime.Length()==0) startTime=ts;
  if (endTime.Length()==0) endTime=te;
  pPartition->setTimeRange(startTime,endTime);
  return kTRUE;
notfound:
  Error("readPartition","Partition %s not found",pPartition->GetName());
  return kFALSE;
errorfound:
  pConn->showSqlError("readPartition");  
  return kFALSE;
}

Bool_t HOraSlowReader::readRunPeriods() {
  // Reads the run periods in the partition range
  if (!pConn->isOpen()||!pPartition) return kFALSE;
  TString start=pPartition->getStartTime();
  TString end=pPartition->getEndTime();
  if (start.IsNull()||end.IsNull()) {
    readPartition();
    start=pPartition->getStartTime();
    end=pPartition->getEndTime();
  }
  if (start.IsNull()||end.IsNull()) return kFALSE;
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    char* pname;
    char* pstart;
    char* pend;
    int   nruns;
    int   minid;
    int   maxid;
    short nruns_Ind;
    short minid_Ind;
    short maxid_Ind;
  /* EXEC SQL END DECLARE SECTION; */ 

  pname=(Char_t*)pPartition->GetName();
  pstart=(Char_t*)start.Data();
  pend=(Char_t*)end.Data();
  /* EXEC SQL WHENEVER SQLERROR GOTO errorfound; */ 

  /* EXEC SQL WHENEVER NOT FOUND GOTO notfound; */ 

  /* EXEC SQL SELECT count(1), min(id), max(id)
           INTO :nruns:nruns_Ind, :minid:minid_Ind, :maxid:maxid_Ind
           FROM hades_slow2.hscs_run_period
           WHERE partition_name = :pname
             AND starttime BETWEEN TO_DATE(:pstart,'yyyy-mm-dd hh24:mi:ss')
                 AND TO_DATE(:pend,'yyyy-mm-dd hh24:mi:ss'); */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 13;
  sqlstm.arrsiz = 6;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = "select count(1) ,min(id) ,max(id) into :b0:b1,:b2:b3,:b4:b5\
  from hades_slow2.hscs_run_period where (partition_name=:b6 and starttime bet\
ween TO_DATE(:b7,'yyyy-mm-dd hh24:mi:ss') and TO_DATE(:b8,'yyyy-mm-dd hh24:mi:\
ss'))";
  sqlstm.iters = (unsigned int  )1;
  sqlstm.offset = (unsigned int  )32;
  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  *)&nruns;
  sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
  sqlstm.sqhsts[0] = (         int  )0;
  sqlstm.sqindv[0] = (         short *)&nruns_Ind;
  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  *)&minid;
  sqlstm.sqhstl[1] = (unsigned long )sizeof(int);
  sqlstm.sqhsts[1] = (         int  )0;
  sqlstm.sqindv[1] = (         short *)&minid_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  *)&maxid;
  sqlstm.sqhstl[2] = (unsigned long )sizeof(int);
  sqlstm.sqhsts[2] = (         int  )0;
  sqlstm.sqindv[2] = (         short *)&maxid_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  *)pname;
  sqlstm.sqhstl[3] = (unsigned long )0;
  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  *)pstart;
  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.sqhstv[5] = (unsigned char  *)pend;
  sqlstm.sqhstl[5] = (unsigned long )0;
  sqlstm.sqhsts[5] = (         int  )0;
  sqlstm.sqindv[5] = (         short *)0;
  sqlstm.sqinds[5] = (         int  )0;
  sqlstm.sqharm[5] = (unsigned long )0;
  sqlstm.sqadto[5] = (unsigned short )0;
  sqlstm.sqtdso[5] = (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;
}


  if (nruns_Ind!=-1 && nruns>0) {
    TObjArray* data=pPartition->setNumPeriods(nruns);
    return readPeriods(pname,data,nruns,minid,maxid);
  }
notfound:
  Error("readRunPeriods","No run summary for partition %s or specified time range",
        pPartition->GetName());
  return kFALSE;
errorfound:
  pConn->showSqlError("readRunPeriods");  
  return kFALSE;
}

Bool_t HOraSlowReader::readPeriods(Char_t* partitionName,TObjArray* data,Int_t nData,
                                   Int_t minPeriodId,Int_t maxPeriodId) {
  // Private function to read the run periods in the partition range
  if (!data) return kFALSE;
  /* EXEC SQL BEGIN DECLARE SECTION; */ 

    char* pname;
    int   minid;
    int   maxid;
    struct {
      int     id[NMAX_SCS];
      char    ts[NMAX_SCS][20];
      char    te[NMAX_SCS][20];
      int     rid[NMAX_SCS];
      /* varchar rname[NMAX_SCS][81]; */ 
struct { unsigned short len; unsigned char arr[82]; } rname[2000];

    } periods;
    struct {
      short id_Ind[NMAX_SCS];
      short ts_Ind[NMAX_SCS];
      short te_Ind[NMAX_SCS];
      short rid_Ind[NMAX_SCS];
      short rname_Ind[NMAX_SCS];
    } periods_Ind;
  /* EXEC SQL END DECLARE SECTION; */ 

  pname=partitionName;
  minid=minPeriodId;
  maxid=maxPeriodId;
  Int_t nTot=0;
  Int_t nLast=0;
  /* EXEC SQL WHENEVER SQLERROR GOTO errorfound; */ 

  /* EXEC SQL WHENEVER NOT FOUND continue; */ 

  /* EXEC SQL DECLARE run_cursor CURSOR FOR
           SELECT period_id,
                  TO_CHAR(period_begin,'yyyy-mm-dd hh24:mi:ss'),
                  TO_CHAR(period_end,'yyyy-mm-dd hh24:mi:ss'),
                  run_id, filename
           FROM hades_slow2.hscs_periods
           WHERE partition = :pname AND period_id BETWEEN :minid AND :maxid
           ORDER BY period_id; */ 

  /* EXEC SQL OPEN run_cursor; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 13;
  sqlstm.arrsiz = 6;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.stmt = sq0003;
  sqlstm.iters = (unsigned int  )1;
  sqlstm.offset = (unsigned int  )71;
  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  *)pname;
  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  *)&minid;
  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  *)&maxid;
  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 {  
    /* EXEC SQL FETCH run_cursor INTO :periods INDICATOR :periods_Ind; */ 

{
    struct sqlexd sqlstm;
    sqlorat((void **)0, &sqlctx, &oraca);
    sqlstm.sqlvsn = 13;
    sqlstm.arrsiz = 6;
    sqlstm.sqladtp = &sqladt;
    sqlstm.sqltdsp = &sqltds;
    sqlstm.iters = (unsigned int  )2000;
    sqlstm.offset = (unsigned int  )98;
    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  *)periods.id;
    sqlstm.sqhstl[0] = (unsigned long )sizeof(int);
    sqlstm.sqhsts[0] = (         int  )sizeof(int);
    sqlstm.sqindv[0] = (         short *)periods_Ind.id_Ind;
    sqlstm.sqinds[0] = (         int  )sizeof(short);
    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  *)periods.ts;
    sqlstm.sqhstl[1] = (unsigned long )20;
    sqlstm.sqhsts[1] = (         int  )20;
    sqlstm.sqindv[1] = (         short *)periods_Ind.ts_Ind;
    sqlstm.sqinds[1] = (         int  )sizeof(short);
    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  *)periods.te;
    sqlstm.sqhstl[2] = (unsigned long )20;
    sqlstm.sqhsts[2] = (         int  )20;
    sqlstm.sqindv[2] = (         short *)periods_Ind.te_Ind;
    sqlstm.sqinds[2] = (         int  )sizeof(short);
    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  *)periods.rid;
    sqlstm.sqhstl[3] = (unsigned long )sizeof(int);
    sqlstm.sqhsts[3] = (         int  )sizeof(int);
    sqlstm.sqindv[3] = (         short *)periods_Ind.rid_Ind;
    sqlstm.sqinds[3] = (         int  )sizeof(short);
    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  *)periods.rname;
    sqlstm.sqhstl[4] = (unsigned long )83;
    sqlstm.sqhsts[4] = (         int  )84;
    sqlstm.sqindv[4] = (         short *)periods_Ind.rname_Ind;
    sqlstm.sqinds[4] = (         int  )sizeof(short);
    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.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++) {
      HOraSlowPeriod* p=new HOraSlowPeriod();
      periods.ts[i][19]='\0';
      periods.te[i][19]='\0';
      p->setPeriodId(periods.id[i]);
      p->setStartTime((Char_t*)(periods.ts[i]));
      p->setEndTime((Char_t*)(periods.te[i]));
      if (periods_Ind.rid_Ind[i]!=-1) p->setRunId(periods.rid[i]);
      if (periods_Ind.rname_Ind[i]!=-1) {
        periods.rname[i].arr[periods.rname[i].len]='\0';      
        p->setFilename((Char_t*)(periods.rname[i].arr));
      }
      data->AddAt(p,nTot);
      nTot++;
    } 
  } while (nLast==NMAX_SCS&&nTot<nData);
  /* EXEC SQL CLOSE run_cursor; */ 

{
  struct sqlexd sqlstm;
  sqlorat((void **)0, &sqlctx, &oraca);
  sqlstm.sqlvsn = 13;
  sqlstm.arrsiz = 6;
  sqlstm.sqladtp = &sqladt;
  sqlstm.sqltdsp = &sqltds;
  sqlstm.iters = (unsigned int  )1;
  sqlstm.offset = (unsigned int  )133;
  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;
}


  cout<<"*** Run periods read: "<<nTot<<endl;
  if (nTot==nData) return kTRUE;
  else {
    Error("readPeriods","Too few data read");
    return kFALSE;
  }
errorfound:
  pConn->showSqlError("readPeriods");  
  return kFALSE;
}  
 horaslowreader.pc.cc:1
 horaslowreader.pc.cc:2
 horaslowreader.pc.cc:3
 horaslowreader.pc.cc:4
 horaslowreader.pc.cc:5
 horaslowreader.pc.cc:6
 horaslowreader.pc.cc:7
 horaslowreader.pc.cc:8
 horaslowreader.pc.cc:9
 horaslowreader.pc.cc:10
 horaslowreader.pc.cc:11
 horaslowreader.pc.cc:12
 horaslowreader.pc.cc:13
 horaslowreader.pc.cc:14
 horaslowreader.pc.cc:15
 horaslowreader.pc.cc:16
 horaslowreader.pc.cc:17
 horaslowreader.pc.cc:18
 horaslowreader.pc.cc:19
 horaslowreader.pc.cc:20
 horaslowreader.pc.cc:21
 horaslowreader.pc.cc:22
 horaslowreader.pc.cc:23
 horaslowreader.pc.cc:24
 horaslowreader.pc.cc:25
 horaslowreader.pc.cc:26
 horaslowreader.pc.cc:27
 horaslowreader.pc.cc:28
 horaslowreader.pc.cc:29
 horaslowreader.pc.cc:30
 horaslowreader.pc.cc:31
 horaslowreader.pc.cc:32
 horaslowreader.pc.cc:33
 horaslowreader.pc.cc:34
 horaslowreader.pc.cc:35
 horaslowreader.pc.cc:36
 horaslowreader.pc.cc:37
 horaslowreader.pc.cc:38
 horaslowreader.pc.cc:39
 horaslowreader.pc.cc:40
 horaslowreader.pc.cc:41
 horaslowreader.pc.cc:42
 horaslowreader.pc.cc:43
 horaslowreader.pc.cc:44
 horaslowreader.pc.cc:45
 horaslowreader.pc.cc:46
 horaslowreader.pc.cc:47
 horaslowreader.pc.cc:48
 horaslowreader.pc.cc:49
 horaslowreader.pc.cc:50
 horaslowreader.pc.cc:51
 horaslowreader.pc.cc:52
 horaslowreader.pc.cc:53
 horaslowreader.pc.cc:54
 horaslowreader.pc.cc:55
 horaslowreader.pc.cc:56
 horaslowreader.pc.cc:57
 horaslowreader.pc.cc:58
 horaslowreader.pc.cc:59
 horaslowreader.pc.cc:60
 horaslowreader.pc.cc:61
 horaslowreader.pc.cc:62
 horaslowreader.pc.cc:63
 horaslowreader.pc.cc:64
 horaslowreader.pc.cc:65
 horaslowreader.pc.cc:66
 horaslowreader.pc.cc:67
 horaslowreader.pc.cc:68
 horaslowreader.pc.cc:69
 horaslowreader.pc.cc:70
 horaslowreader.pc.cc:71
 horaslowreader.pc.cc:72
 horaslowreader.pc.cc:73
 horaslowreader.pc.cc:74
 horaslowreader.pc.cc:75
 horaslowreader.pc.cc:76
 horaslowreader.pc.cc:77
 horaslowreader.pc.cc:78
 horaslowreader.pc.cc:79
 horaslowreader.pc.cc:80
 horaslowreader.pc.cc:81
 horaslowreader.pc.cc:82
 horaslowreader.pc.cc:83
 horaslowreader.pc.cc:84
 horaslowreader.pc.cc:85
 horaslowreader.pc.cc:86
 horaslowreader.pc.cc:87
 horaslowreader.pc.cc:88
 horaslowreader.pc.cc:89
 horaslowreader.pc.cc:90
 horaslowreader.pc.cc:91
 horaslowreader.pc.cc:92
 horaslowreader.pc.cc:93
 horaslowreader.pc.cc:94
 horaslowreader.pc.cc:95
 horaslowreader.pc.cc:96
 horaslowreader.pc.cc:97
 horaslowreader.pc.cc:98
 horaslowreader.pc.cc:99
 horaslowreader.pc.cc:100
 horaslowreader.pc.cc:101
 horaslowreader.pc.cc:102
 horaslowreader.pc.cc:103
 horaslowreader.pc.cc:104
 horaslowreader.pc.cc:105
 horaslowreader.pc.cc:106
 horaslowreader.pc.cc:107
 horaslowreader.pc.cc:108
 horaslowreader.pc.cc:109
 horaslowreader.pc.cc:110
 horaslowreader.pc.cc:111
 horaslowreader.pc.cc:112
 horaslowreader.pc.cc:113
 horaslowreader.pc.cc:114
 horaslowreader.pc.cc:115
 horaslowreader.pc.cc:116
 horaslowreader.pc.cc:117
 horaslowreader.pc.cc:118
 horaslowreader.pc.cc:119
 horaslowreader.pc.cc:120
 horaslowreader.pc.cc:121
 horaslowreader.pc.cc:122
 horaslowreader.pc.cc:123
 horaslowreader.pc.cc:124
 horaslowreader.pc.cc:125
 horaslowreader.pc.cc:126
 horaslowreader.pc.cc:127
 horaslowreader.pc.cc:128
 horaslowreader.pc.cc:129
 horaslowreader.pc.cc:130
 horaslowreader.pc.cc:131
 horaslowreader.pc.cc:132
 horaslowreader.pc.cc:133
 horaslowreader.pc.cc:134
 horaslowreader.pc.cc:135
 horaslowreader.pc.cc:136
 horaslowreader.pc.cc:137
 horaslowreader.pc.cc:138
 horaslowreader.pc.cc:139
 horaslowreader.pc.cc:140
 horaslowreader.pc.cc:141
 horaslowreader.pc.cc:142
 horaslowreader.pc.cc:143
 horaslowreader.pc.cc:144
 horaslowreader.pc.cc:145
 horaslowreader.pc.cc:146
 horaslowreader.pc.cc:147
 horaslowreader.pc.cc:148
 horaslowreader.pc.cc:149
 horaslowreader.pc.cc:150
 horaslowreader.pc.cc:151
 horaslowreader.pc.cc:152
 horaslowreader.pc.cc:153
 horaslowreader.pc.cc:154
 horaslowreader.pc.cc:155
 horaslowreader.pc.cc:156
 horaslowreader.pc.cc:157
 horaslowreader.pc.cc:158
 horaslowreader.pc.cc:159
 horaslowreader.pc.cc:160
 horaslowreader.pc.cc:161
 horaslowreader.pc.cc:162
 horaslowreader.pc.cc:163
 horaslowreader.pc.cc:164
 horaslowreader.pc.cc:165
 horaslowreader.pc.cc:166
 horaslowreader.pc.cc:167
 horaslowreader.pc.cc:168
 horaslowreader.pc.cc:169
 horaslowreader.pc.cc:170
 horaslowreader.pc.cc:171
 horaslowreader.pc.cc:172
 horaslowreader.pc.cc:173
 horaslowreader.pc.cc:174
 horaslowreader.pc.cc:175
 horaslowreader.pc.cc:176
 horaslowreader.pc.cc:177
 horaslowreader.pc.cc:178
 horaslowreader.pc.cc:179
 horaslowreader.pc.cc:180
 horaslowreader.pc.cc:181
 horaslowreader.pc.cc:182
 horaslowreader.pc.cc:183
 horaslowreader.pc.cc:184
 horaslowreader.pc.cc:185
 horaslowreader.pc.cc:186
 horaslowreader.pc.cc:187
 horaslowreader.pc.cc:188
 horaslowreader.pc.cc:189
 horaslowreader.pc.cc:190
 horaslowreader.pc.cc:191
 horaslowreader.pc.cc:192
 horaslowreader.pc.cc:193
 horaslowreader.pc.cc:194
 horaslowreader.pc.cc:195
 horaslowreader.pc.cc:196
 horaslowreader.pc.cc:197
 horaslowreader.pc.cc:198
 horaslowreader.pc.cc:199
 horaslowreader.pc.cc:200
 horaslowreader.pc.cc:201
 horaslowreader.pc.cc:202
 horaslowreader.pc.cc:203
 horaslowreader.pc.cc:204
 horaslowreader.pc.cc:205
 horaslowreader.pc.cc:206
 horaslowreader.pc.cc:207
 horaslowreader.pc.cc:208
 horaslowreader.pc.cc:209
 horaslowreader.pc.cc:210
 horaslowreader.pc.cc:211
 horaslowreader.pc.cc:212
 horaslowreader.pc.cc:213
 horaslowreader.pc.cc:214
 horaslowreader.pc.cc:215
 horaslowreader.pc.cc:216
 horaslowreader.pc.cc:217
 horaslowreader.pc.cc:218
 horaslowreader.pc.cc:219
 horaslowreader.pc.cc:220
 horaslowreader.pc.cc:221
 horaslowreader.pc.cc:222
 horaslowreader.pc.cc:223
 horaslowreader.pc.cc:224
 horaslowreader.pc.cc:225
 horaslowreader.pc.cc:226
 horaslowreader.pc.cc:227
 horaslowreader.pc.cc:228
 horaslowreader.pc.cc:229
 horaslowreader.pc.cc:230
 horaslowreader.pc.cc:231
 horaslowreader.pc.cc:232
 horaslowreader.pc.cc:233
 horaslowreader.pc.cc:234
 horaslowreader.pc.cc:235
 horaslowreader.pc.cc:236
 horaslowreader.pc.cc:237
 horaslowreader.pc.cc:238
 horaslowreader.pc.cc:239
 horaslowreader.pc.cc:240
 horaslowreader.pc.cc:241
 horaslowreader.pc.cc:242
 horaslowreader.pc.cc:243
 horaslowreader.pc.cc:244
 horaslowreader.pc.cc:245
 horaslowreader.pc.cc:246
 horaslowreader.pc.cc:247
 horaslowreader.pc.cc:248
 horaslowreader.pc.cc:249
 horaslowreader.pc.cc:250
 horaslowreader.pc.cc:251
 horaslowreader.pc.cc:252
 horaslowreader.pc.cc:253
 horaslowreader.pc.cc:254
 horaslowreader.pc.cc:255
 horaslowreader.pc.cc:256
 horaslowreader.pc.cc:257
 horaslowreader.pc.cc:258
 horaslowreader.pc.cc:259
 horaslowreader.pc.cc:260
 horaslowreader.pc.cc:261
 horaslowreader.pc.cc:262
 horaslowreader.pc.cc:263
 horaslowreader.pc.cc:264
 horaslowreader.pc.cc:265
 horaslowreader.pc.cc:266
 horaslowreader.pc.cc:267
 horaslowreader.pc.cc:268
 horaslowreader.pc.cc:269
 horaslowreader.pc.cc:270
 horaslowreader.pc.cc:271
 horaslowreader.pc.cc:272
 horaslowreader.pc.cc:273
 horaslowreader.pc.cc:274
 horaslowreader.pc.cc:275
 horaslowreader.pc.cc:276
 horaslowreader.pc.cc:277
 horaslowreader.pc.cc:278
 horaslowreader.pc.cc:279
 horaslowreader.pc.cc:280
 horaslowreader.pc.cc:281
 horaslowreader.pc.cc:282
 horaslowreader.pc.cc:283
 horaslowreader.pc.cc:284
 horaslowreader.pc.cc:285
 horaslowreader.pc.cc:286
 horaslowreader.pc.cc:287
 horaslowreader.pc.cc:288
 horaslowreader.pc.cc:289
 horaslowreader.pc.cc:290
 horaslowreader.pc.cc:291
 horaslowreader.pc.cc:292
 horaslowreader.pc.cc:293
 horaslowreader.pc.cc:294
 horaslowreader.pc.cc:295
 horaslowreader.pc.cc:296
 horaslowreader.pc.cc:297
 horaslowreader.pc.cc:298
 horaslowreader.pc.cc:299
 horaslowreader.pc.cc:300
 horaslowreader.pc.cc:301
 horaslowreader.pc.cc:302
 horaslowreader.pc.cc:303
 horaslowreader.pc.cc:304
 horaslowreader.pc.cc:305
 horaslowreader.pc.cc:306
 horaslowreader.pc.cc:307
 horaslowreader.pc.cc:308
 horaslowreader.pc.cc:309
 horaslowreader.pc.cc:310
 horaslowreader.pc.cc:311
 horaslowreader.pc.cc:312
 horaslowreader.pc.cc:313
 horaslowreader.pc.cc:314
 horaslowreader.pc.cc:315
 horaslowreader.pc.cc:316
 horaslowreader.pc.cc:317
 horaslowreader.pc.cc:318
 horaslowreader.pc.cc:319
 horaslowreader.pc.cc:320
 horaslowreader.pc.cc:321
 horaslowreader.pc.cc:322
 horaslowreader.pc.cc:323
 horaslowreader.pc.cc:324
 horaslowreader.pc.cc:325
 horaslowreader.pc.cc:326
 horaslowreader.pc.cc:327
 horaslowreader.pc.cc:328
 horaslowreader.pc.cc:329
 horaslowreader.pc.cc:330
 horaslowreader.pc.cc:331
 horaslowreader.pc.cc:332
 horaslowreader.pc.cc:333
 horaslowreader.pc.cc:334
 horaslowreader.pc.cc:335
 horaslowreader.pc.cc:336
 horaslowreader.pc.cc:337
 horaslowreader.pc.cc:338
 horaslowreader.pc.cc:339
 horaslowreader.pc.cc:340
 horaslowreader.pc.cc:341
 horaslowreader.pc.cc:342
 horaslowreader.pc.cc:343
 horaslowreader.pc.cc:344
 horaslowreader.pc.cc:345
 horaslowreader.pc.cc:346
 horaslowreader.pc.cc:347
 horaslowreader.pc.cc:348
 horaslowreader.pc.cc:349
 horaslowreader.pc.cc:350
 horaslowreader.pc.cc:351
 horaslowreader.pc.cc:352
 horaslowreader.pc.cc:353
 horaslowreader.pc.cc:354
 horaslowreader.pc.cc:355
 horaslowreader.pc.cc:356
 horaslowreader.pc.cc:357
 horaslowreader.pc.cc:358
 horaslowreader.pc.cc:359
 horaslowreader.pc.cc:360
 horaslowreader.pc.cc:361
 horaslowreader.pc.cc:362
 horaslowreader.pc.cc:363
 horaslowreader.pc.cc:364
 horaslowreader.pc.cc:365
 horaslowreader.pc.cc:366
 horaslowreader.pc.cc:367
 horaslowreader.pc.cc:368
 horaslowreader.pc.cc:369
 horaslowreader.pc.cc:370
 horaslowreader.pc.cc:371
 horaslowreader.pc.cc:372
 horaslowreader.pc.cc:373
 horaslowreader.pc.cc:374
 horaslowreader.pc.cc:375
 horaslowreader.pc.cc:376
 horaslowreader.pc.cc:377
 horaslowreader.pc.cc:378
 horaslowreader.pc.cc:379
 horaslowreader.pc.cc:380
 horaslowreader.pc.cc:381
 horaslowreader.pc.cc:382
 horaslowreader.pc.cc:383
 horaslowreader.pc.cc:384
 horaslowreader.pc.cc:385
 horaslowreader.pc.cc:386
 horaslowreader.pc.cc:387
 horaslowreader.pc.cc:388
 horaslowreader.pc.cc:389
 horaslowreader.pc.cc:390
 horaslowreader.pc.cc:391
 horaslowreader.pc.cc:392
 horaslowreader.pc.cc:393
 horaslowreader.pc.cc:394
 horaslowreader.pc.cc:395
 horaslowreader.pc.cc:396
 horaslowreader.pc.cc:397
 horaslowreader.pc.cc:398
 horaslowreader.pc.cc:399
 horaslowreader.pc.cc:400
 horaslowreader.pc.cc:401
 horaslowreader.pc.cc:402
 horaslowreader.pc.cc:403
 horaslowreader.pc.cc:404
 horaslowreader.pc.cc:405
 horaslowreader.pc.cc:406
 horaslowreader.pc.cc:407
 horaslowreader.pc.cc:408
 horaslowreader.pc.cc:409
 horaslowreader.pc.cc:410
 horaslowreader.pc.cc:411
 horaslowreader.pc.cc:412
 horaslowreader.pc.cc:413
 horaslowreader.pc.cc:414
 horaslowreader.pc.cc:415
 horaslowreader.pc.cc:416
 horaslowreader.pc.cc:417
 horaslowreader.pc.cc:418
 horaslowreader.pc.cc:419
 horaslowreader.pc.cc:420
 horaslowreader.pc.cc:421
 horaslowreader.pc.cc:422
 horaslowreader.pc.cc:423
 horaslowreader.pc.cc:424
 horaslowreader.pc.cc:425
 horaslowreader.pc.cc:426
 horaslowreader.pc.cc:427
 horaslowreader.pc.cc:428
 horaslowreader.pc.cc:429
 horaslowreader.pc.cc:430
 horaslowreader.pc.cc:431
 horaslowreader.pc.cc:432
 horaslowreader.pc.cc:433
 horaslowreader.pc.cc:434
 horaslowreader.pc.cc:435
 horaslowreader.pc.cc:436
 horaslowreader.pc.cc:437
 horaslowreader.pc.cc:438
 horaslowreader.pc.cc:439
 horaslowreader.pc.cc:440
 horaslowreader.pc.cc:441
 horaslowreader.pc.cc:442
 horaslowreader.pc.cc:443
 horaslowreader.pc.cc:444
 horaslowreader.pc.cc:445
 horaslowreader.pc.cc:446
 horaslowreader.pc.cc:447
 horaslowreader.pc.cc:448
 horaslowreader.pc.cc:449
 horaslowreader.pc.cc:450
 horaslowreader.pc.cc:451
 horaslowreader.pc.cc:452
 horaslowreader.pc.cc:453
 horaslowreader.pc.cc:454
 horaslowreader.pc.cc:455
 horaslowreader.pc.cc:456
 horaslowreader.pc.cc:457
 horaslowreader.pc.cc:458
 horaslowreader.pc.cc:459
 horaslowreader.pc.cc:460
 horaslowreader.pc.cc:461
 horaslowreader.pc.cc:462
 horaslowreader.pc.cc:463
 horaslowreader.pc.cc:464
 horaslowreader.pc.cc:465
 horaslowreader.pc.cc:466
 horaslowreader.pc.cc:467
 horaslowreader.pc.cc:468
 horaslowreader.pc.cc:469
 horaslowreader.pc.cc:470
 horaslowreader.pc.cc:471
 horaslowreader.pc.cc:472
 horaslowreader.pc.cc:473
 horaslowreader.pc.cc:474
 horaslowreader.pc.cc:475
 horaslowreader.pc.cc:476
 horaslowreader.pc.cc:477
 horaslowreader.pc.cc:478
 horaslowreader.pc.cc:479
 horaslowreader.pc.cc:480
 horaslowreader.pc.cc:481
 horaslowreader.pc.cc:482
 horaslowreader.pc.cc:483
 horaslowreader.pc.cc:484
 horaslowreader.pc.cc:485
 horaslowreader.pc.cc:486
 horaslowreader.pc.cc:487
 horaslowreader.pc.cc:488
 horaslowreader.pc.cc:489
 horaslowreader.pc.cc:490
 horaslowreader.pc.cc:491
 horaslowreader.pc.cc:492
 horaslowreader.pc.cc:493
 horaslowreader.pc.cc:494
 horaslowreader.pc.cc:495
 horaslowreader.pc.cc:496
 horaslowreader.pc.cc:497
 horaslowreader.pc.cc:498
 horaslowreader.pc.cc:499
 horaslowreader.pc.cc:500
 horaslowreader.pc.cc:501
 horaslowreader.pc.cc:502
 horaslowreader.pc.cc:503
 horaslowreader.pc.cc:504
 horaslowreader.pc.cc:505
 horaslowreader.pc.cc:506
 horaslowreader.pc.cc:507
 horaslowreader.pc.cc:508
 horaslowreader.pc.cc:509
 horaslowreader.pc.cc:510
 horaslowreader.pc.cc:511
 horaslowreader.pc.cc:512
 horaslowreader.pc.cc:513
 horaslowreader.pc.cc:514
 horaslowreader.pc.cc:515
 horaslowreader.pc.cc:516
 horaslowreader.pc.cc:517
 horaslowreader.pc.cc:518
 horaslowreader.pc.cc:519
 horaslowreader.pc.cc:520
 horaslowreader.pc.cc:521
 horaslowreader.pc.cc:522
 horaslowreader.pc.cc:523
 horaslowreader.pc.cc:524
 horaslowreader.pc.cc:525
 horaslowreader.pc.cc:526
 horaslowreader.pc.cc:527
 horaslowreader.pc.cc:528
 horaslowreader.pc.cc:529
 horaslowreader.pc.cc:530
 horaslowreader.pc.cc:531
 horaslowreader.pc.cc:532
 horaslowreader.pc.cc:533
 horaslowreader.pc.cc:534
 horaslowreader.pc.cc:535
 horaslowreader.pc.cc:536
 horaslowreader.pc.cc:537
 horaslowreader.pc.cc:538
 horaslowreader.pc.cc:539
 horaslowreader.pc.cc:540
 horaslowreader.pc.cc:541
 horaslowreader.pc.cc:542
 horaslowreader.pc.cc:543
 horaslowreader.pc.cc:544
 horaslowreader.pc.cc:545
 horaslowreader.pc.cc:546
 horaslowreader.pc.cc:547
 horaslowreader.pc.cc:548
 horaslowreader.pc.cc:549
 horaslowreader.pc.cc:550
 horaslowreader.pc.cc:551
 horaslowreader.pc.cc:552
 horaslowreader.pc.cc:553
 horaslowreader.pc.cc:554
 horaslowreader.pc.cc:555
 horaslowreader.pc.cc:556
 horaslowreader.pc.cc:557
 horaslowreader.pc.cc:558
 horaslowreader.pc.cc:559
 horaslowreader.pc.cc:560
 horaslowreader.pc.cc:561
 horaslowreader.pc.cc:562
 horaslowreader.pc.cc:563
 horaslowreader.pc.cc:564
 horaslowreader.pc.cc:565
 horaslowreader.pc.cc:566
 horaslowreader.pc.cc:567
 horaslowreader.pc.cc:568
 horaslowreader.pc.cc:569
 horaslowreader.pc.cc:570
 horaslowreader.pc.cc:571
 horaslowreader.pc.cc:572
 horaslowreader.pc.cc:573
 horaslowreader.pc.cc:574
 horaslowreader.pc.cc:575
 horaslowreader.pc.cc:576
 horaslowreader.pc.cc:577
 horaslowreader.pc.cc:578
 horaslowreader.pc.cc:579
 horaslowreader.pc.cc:580
 horaslowreader.pc.cc:581
 horaslowreader.pc.cc:582
 horaslowreader.pc.cc:583
 horaslowreader.pc.cc:584
 horaslowreader.pc.cc:585
 horaslowreader.pc.cc:586
 horaslowreader.pc.cc:587
 horaslowreader.pc.cc:588
 horaslowreader.pc.cc:589
 horaslowreader.pc.cc:590
 horaslowreader.pc.cc:591
 horaslowreader.pc.cc:592
 horaslowreader.pc.cc:593
 horaslowreader.pc.cc:594
 horaslowreader.pc.cc:595
 horaslowreader.pc.cc:596
 horaslowreader.pc.cc:597
 horaslowreader.pc.cc:598
 horaslowreader.pc.cc:599
 horaslowreader.pc.cc:600
 horaslowreader.pc.cc:601
 horaslowreader.pc.cc:602
 horaslowreader.pc.cc:603
 horaslowreader.pc.cc:604
 horaslowreader.pc.cc:605
 horaslowreader.pc.cc:606
 horaslowreader.pc.cc:607
 horaslowreader.pc.cc:608
 horaslowreader.pc.cc:609
 horaslowreader.pc.cc:610
 horaslowreader.pc.cc:611
 horaslowreader.pc.cc:612
 horaslowreader.pc.cc:613
 horaslowreader.pc.cc:614
 horaslowreader.pc.cc:615
 horaslowreader.pc.cc:616
 horaslowreader.pc.cc:617
 horaslowreader.pc.cc:618
 horaslowreader.pc.cc:619
 horaslowreader.pc.cc:620
 horaslowreader.pc.cc:621
 horaslowreader.pc.cc:622
 horaslowreader.pc.cc:623
 horaslowreader.pc.cc:624
 horaslowreader.pc.cc:625
 horaslowreader.pc.cc:626
 horaslowreader.pc.cc:627
 horaslowreader.pc.cc:628
 horaslowreader.pc.cc:629
 horaslowreader.pc.cc:630
 horaslowreader.pc.cc:631
 horaslowreader.pc.cc:632
 horaslowreader.pc.cc:633
 horaslowreader.pc.cc:634
 horaslowreader.pc.cc:635
 horaslowreader.pc.cc:636
 horaslowreader.pc.cc:637
 horaslowreader.pc.cc:638
 horaslowreader.pc.cc:639
 horaslowreader.pc.cc:640
 horaslowreader.pc.cc:641
 horaslowreader.pc.cc:642
 horaslowreader.pc.cc:643
 horaslowreader.pc.cc:644
 horaslowreader.pc.cc:645
 horaslowreader.pc.cc:646
 horaslowreader.pc.cc:647
 horaslowreader.pc.cc:648
 horaslowreader.pc.cc:649
 horaslowreader.pc.cc:650
 horaslowreader.pc.cc:651
 horaslowreader.pc.cc:652
 horaslowreader.pc.cc:653
 horaslowreader.pc.cc:654
 horaslowreader.pc.cc:655
 horaslowreader.pc.cc:656
 horaslowreader.pc.cc:657
 horaslowreader.pc.cc:658
 horaslowreader.pc.cc:659
 horaslowreader.pc.cc:660
 horaslowreader.pc.cc:661
 horaslowreader.pc.cc:662
 horaslowreader.pc.cc:663
 horaslowreader.pc.cc:664
 horaslowreader.pc.cc:665
 horaslowreader.pc.cc:666
 horaslowreader.pc.cc:667
 horaslowreader.pc.cc:668
 horaslowreader.pc.cc:669
 horaslowreader.pc.cc:670
 horaslowreader.pc.cc:671
 horaslowreader.pc.cc:672
 horaslowreader.pc.cc:673
 horaslowreader.pc.cc:674
 horaslowreader.pc.cc:675
 horaslowreader.pc.cc:676
 horaslowreader.pc.cc:677
 horaslowreader.pc.cc:678
 horaslowreader.pc.cc:679
 horaslowreader.pc.cc:680
 horaslowreader.pc.cc:681