#include "complex.h" extern word_s CP_TM(word_s,word_s,word_s,word_s,word_s,word_s,word_s,word_s,word_s,word_s); extern void READ_ARH(); word_s FIN_POI(word_s); /* ---------- ДЛЯ ПОИСКА В АРХИВЕ ВРЕМЕНИ НАЧАЛА ---------- */ /* ---------- И КОНЦА ПРОТОКОЛИРОВАНИЯ ---------- */ /*------------------------------------------------------------------------*/ /* */ /* |<-------- ОБЛ1 -------->|<----- ОБЛ2 ----->| */ /* | | | */ /* начало нулевая конец */ /* архива запись архива */ /* --------------------------------------------------- */ /* $$$$$ 00000 $$$$$ */ /* --------------------------------------------------- */ /* номера | | | */ /* записей: 1 N_NULL_Z arch_end */ /* */ /*------------------------------------------------------------------------*/ /*---- ИЗМЕНЕНО ДЛЯ СЕТЕЙ ----- extern FILE *pf; у-тель на файлы архивов -----------------------------*/ /* B PROT.C */extern struct tm *ta;/* указатель на структуру с временем из обрабатываемой записи архива */ /* B PROT.C */extern struct tm *tpoi;/* указатель на структуру с временем, которое ищется в архиве */ /* B PROT.C */extern struct tm *t; /* текущее время */ /* B PROT.C */extern struct tm *tn;/* время начала протоколирования */ /* B PROT.C */extern struct tm *tk;/* время конца протоколирования */ #define ay ta->tm_year /* время из обрабатываемой записи архива */ #define amon ta->tm_mon #define ad ta->tm_mday #define ah ta->tm_hour #define ami ta->tm_min #define as ta->tm_sec #define tpy tpoi->tm_year /* искомое в архиве время */ #define tpmon tpoi->tm_mon #define tpd tpoi->tm_mday #define tph tpoi->tm_hour #define tpmi tpoi->tm_min #define ty t->tm_year /* текущее */ #define tmon t->tm_mon #define td t->tm_mday #define th t->tm_hour #define tmi t->tm_min #define ts t->tm_sec #define ny tn->tm_year /* время начала протоколирования */ #define nmon tn->tm_mon #define nd tn->tm_mday #define nh tn->tm_hour #define nmi tn->tm_min #define ky tk->tm_year /* время конца протоколирования */ #define kmon tk->tm_mon #define kd tk->tm_mday #define kh tk->tm_hour #define kmi tk->tm_min #define TA ay,amon,ad,ah,ami /* время из записи архива */ #define TPOI tpy,tpmon,tpd,tph,tpmi /* искомое время */ #define TN ny,nmon,nd,nh,nmi /* время начала протоколирования */ #define TK ky,kmon,kd,kh,kmi /* время конца протоколирования */ #define TT ty,tmon,td,th,tmi /* время текущее */ /* B PROT.C */extern word_s N_NULL_Z; /* номер обнуленной записи архива */ /* B PROT.C */extern word_s nz; /* номер обрабатываемой записи архива */ /* B PROT.C */extern word_s nz1,nz2;/* ном.зап.начала и конца области поиска */ /* B PROT.C */extern word_s arch_end; /* номер последней записи ф-ла архива */ /* B PROT.C */extern word_s pr; /* для поиска TN pr=0 */ /* pr=1 - для поиска TK */ /* B PROT.C */extern word_s razmer_zap_arch; /* размер записи архива */ /* B PROT.C */extern long int *adr_tm; /* адрес времени в стр-рах архивов */ /* B PROT.C */extern word_s prt_set,prt_end; /* записи архива соотв-е началу и концу протокола */ #define CONSTPOI1 7 /* ************************** ДЛЯ ОТЛАДКИ */ #define CONSTPOI2 5 /* ************************** ДЛЯ ОТЛАДКИ */ /* B PROT.C */extern word_s pr_obl2, pr_obl1; /* признаки отсутствия областей поиска */ /* --------------------------------------------------------------- */ /* POI() - ф-ция для поиска времени начала прот-я TPOI=TN (pr=0) */ /* и времени конца прот-я TPOI=TK (pr=1) */ /* в архивном файле ; */ /* tpoi - указатель на искомое время ; */ /* Возвращает номер записи архива с искомым временем */ /* Передаваемые параметры - номера записей : */ /* - конца ОБЛ1 */ /* - начала ОБЛ2 */ /* - конца ОБЛ2 */ word_s POI( nz2_obl1, nz1_obl2, nz2_obl2 ) word_s nz2_obl1, nz1_obl2, nz2_obl2; { if (pr_obl2) { nz1=1; nz2=nz2_obl1; /* printf("\n nz2_obl1=%d",nz2_obl1); */ nz=FIN_POI(CONSTPOI1); /* printf("\n POI,после FIN_POInz=%d",nz); */ return(nz); } if (pr_obl1) { nz1=nz1_obl2; nz2=nz2_obl2; nz=FIN_POI(CONSTPOI1);return(nz);} nz=1; READ_ARH(); /* ta = localtime(adr_tm);*/ t_loct(adr_tm,ta); if (CP_TM(TA,TPOI)==1) /* TA>TPOI */ /* ПОИСК В ОБЛ2 */ {nz1=nz1_obl2; nz2=nz2_obl2; FIN_POI(CONSTPOI1); return(nz);} else if (CP_TM(TA,TPOI)==-1) /* TAconstpoi) { nz=(nz2+nz1)/2; /* номер средней записи области */ READ_ARH(); /* ta = localtime(adr_tm);*/ t_loct(adr_tm,ta); if (CP_TM(TA,TPOI)==1) /* TA>TPOI */ /* идем влево */ nz2=--nz; else if (CP_TM(TA,TPOI)==-1) /* TATPOI */ return -1; else return(nz); } else{ /* ищем TK */ nz=nz1; READ_ARH(); /* ta = localtime(adr_tm);*/ t_loct(adr_tm,ta); if (N_NULL_Z==1) ii=nz2+1; else ii=N_NULL_Z; while ((CP_TM(TA,TPOI)!=1)&&(nz