Akcia CALCSTATFUNC


Funkcia
Výpočet archívnej štatistickej funkcie na požiadanie.


Deklarácia
CALCSTATFUNC archIdent, timeFromIdent_TmA, timeToIdent_TmA, statFuncIdent_Int, validPercIdent_Int, paramIdent, retValueIdent, statusIdent_Int  [,archivInstance_Int]
Parametre
archIdentinOdkaz na jednu archívnu hodnotu alebo odkaz na ľubovoľný objekt, ktorého hodnoty sa archivujú.

Upozornenie: Ak sa parameter odkazuje na objekt, ktorý je viacnásobne archivovaný, nie je určené, hodnoty ktorého archívneho objektu sa použijú pre akciu.
timeFromItemIdent_TmAinIdentifikátor typu AbsTime - začiatok intervalu.
timeToItemIdent_TmAinIdentifikátor typu AbsTime - koniec intervalu.
statFunctIdentinIdentifikátor typu Int - typ štatistickej funkcie.
validPercIdentinIdentifikátor typu Int - validačné kritérium.
paramIdentinIdentifikátor typu Int alebo Real - parameter pre niektoré typy funkcií.
retValueIdentoutIdentifikátor pre výsledok výpočtu.
statusIdentoutÚspešnosť výpočtu.
archivInstance_IntinNepovinný identifikátor typu Int - identifikácia inštancie archívu. Ak nie je uvedený, nahradí sa hodnotou 0.
Popis
Akcia vykoná výpočet štatistickej funkcie danej parametrom statFuncIdent_Int na archívnych dátach reprezentovaných archívnym objektom archIdent pre časový interval daný parametrami timeFromIdent_TmA a timeToIdent_TmA. Po úspešnom vykonaní akcie, parameter retValueIdent obsahuje výslednú hodnotu výpočtu. Návratový kód statusIdent_Int môže nadobúdať jednu z nasledujúcich hodnôt:
  • _ERR_TRANS_ABORT
  • _ERR_TRANS_ERROR
  • _ERR_TRANS_IGNORED
  • _ERR_NO_ERROR

Množina implementovaných funkcií je zhodná z funkciami, ktoré je možné konfigurovať pre štatistický archív (okrem funkcií FILTER a ECOAVG). Pre jednotlivé funkcie sú v ESL preddefinované lokálne konštanty.

Parameter validPerctIdent_Int predstavuje Validačné kritérium použité pri vyhodnocovaní štatistickej funkcie. Môže nadobúdať hodnoty 0 .. 100 (chyba pri nedodržaní podmienky ERR_RANGE_ERROR).

Pre niektoré štatistické funkcie je potrebné zadať parameter paramIdent podľa nasledujúcej tabuľky:

Štatistická funkciaPopis parametra
_STAT_F_INTEGRAL

Časový rozmer vstupu. Pre jednotlivé typy sú taktiež zavedené preddefinované lokálne konštanty podľa tabuľky:

KonštantaPopis
_INTEGRAL_HOURUNITHodinový integrál
_INTEGRAL_MINUNITMinútový integrál
_INTEGRAL_SECUNITSekundový integrál
_STAT_F_GE_TIME
_STAT_F_GT_TIME
_STAT_F_LE_TIME
_STAT_F_LT_TIME
_STAT_F_ADDITION_PARAM
_STAT_F_INCREMENT_PARAM
_STAT_F_DELTA_PARAM
Referenčná hodnota

Pre ostatné štatistické funkcie sa parameter paramIdent nevyhodnocuje.

Hodnota parametra archivInstance_Int udáva inštanciu archívu, ktorá realizuje požiadavku. Ak nie je uvedený (alebo má hodnotu 0), požiadavku realizuje aktívna inštancia archívu.

Poznámka: Pri výpočte akcie CALCSTATFUNC  sa neuplatňuje obmedzenie času, ktoré je aktívne pri výpočtoch štatistických archívov a ktoré nedovolí výpočet pre časy v budúcnosti. Pomocou akcie CALCSTATFUNC je teda možné napríklad vypočítať štatistiku nad skriptom plneným archívom, ktorý má dáta aj v budúcnosti.

Príklad
 TIME _bt
 TIME _et
 REAL _retValue
 INT  _retCode

 _bt := %StrToTime("8:01:00 16-10-2003")
 _et := %StrToTime("8:02:00 16-10-2003")

 CALCSTATFUNC H.ArchObj, _bt, _et, _STAT_F_SUM, 100, 0, _retValue, _retCode
 IF _retCode = _ERR_NO_ERROR THEN
   ; výpočet prebehol
 ELSE
   ; nastala nejaká chyba
 ENDIF 
Poznámka 1

Použitie akcie CALCSTATFUN neumožňuje počítať štatistické funkcie FILTER a ECOAVG.

Poznámka 2

Pokiaľ je potrebné počítať štatistiky nad periodickým archívom (napr. H.Period), treba si uvedomiť, že periodický archív má hodnoty iba v násobkoch periódy. Ak by bolo napríklad potrebné počítať integrál z periodického archívu a začiatok intervalu by nebol násobky periódy, tak od začiatku intervalu po prvý násobok periódy by sa naintegrovala 0.

Táto vlastnosť sa dá obísť vytvorením zmenového počítaného archívneho objektu (napr. H.PeriodOnRead), ktorý je počítaný pri čítaní, a ktorý kopíruje H.Period. Integrál počítaný z archívu H.PeriodOnRead sa už správa podľa očakávania.


Súvisiace stránky:

Napíšte komentár