CALCARCHEXPR archExprIdent_Txt, btIdent_TimA, etIdent_TimA, stepIdent_Int, _ignoreInvalid_Bool, _locVarColValueIdent_Rec, statusIdent_Int[, archivInstance_Int] |
archExprIdent_Txt | in | Identifikátor hodnoty typu text, ktorý obsahuje výraz. |
btIdent_TimA | in | Identifikátor typu AbsTime - začiatok intervalu. |
etIdent_TimA | in | Identifikátor typu AbsTime - koniec intervalu. |
stepIdent_Int | in | Identifikátor typu Int - časový krok [s]. |
_ignoreInvalid_Bool | in | Identifikátor typu Bool - Neplatné hodnoty vo výraze budú nahradené 0. |
_locVarColValueIdent_Rec | out | odkaz na stĺpec lokálnej premennej typu RECORD - výsledné hodnoty. |
statusIdent_Int | out | Identifikátor typu Int - úspešnosť výpočtu. |
archivInstance_Int | in | Nepovinný identifikátor typu Int - identifikácia inštancie archívu. Ak nie je uvedený, nahradí sa hodnotou 0. |
Akcia vykoná výpočet daného archívneho výrazu nad zaarchivovanými hodnotami, ktoré sú vyjadrené prostredníctvom mien archívnych objektov vo výraze.
Výpočet sa riadi rovnakými pravidlami ako výpočet, ktorý je popísaný pri definícii vypočítaného archívneho objektu.
V prípade použitia štruktúrovaného archívu vo výraze nesmie byť použité nulové [0] číslo riadku.
Výpočet prebieha nad zadaným časovým intervalom <btIdent_TimA, etIdent_TimA>.
Ak parameter stepIdent_Int je
- rovný 0 - ide o výpočet na zmenu => každá zmena niektorého zo zdrojových (zaarchivovaných) údajov spôsobí prepočet zadaného výrazu a tým aj prítomnosť príslušnej hodnoty vo výsledku.
- rôzny od 0 - ide o periodický výpočet => zadaný výraz sa vyhodnocuje v časových okamihoch btIdent_TimA, btIdent_TimA+1*stepIdent_Int, btIdent_TimA+2*stepIdent_Int ....
Výsledné pole hodnôt bude zapísané do zadaného stĺpca lokálnej štruktúrovanej premennej _locVarColValueIdent_Rec (táto bude v prípade potreby redimenzovaná).
Pozn 1: Výraz musí obsahovať meno aspoň jednej archivovanej hodnoty.
Pozn 2: Ak je vo výraze viacero archivovaných hodnôt, všetky musia mať rovnakého rodiča (proces ARC) v zmysle DODM.
Pozn 3: Pri výpočte akcie CALCARCHEXPR sa neuplatňuje obmedzenie času, ktoré je aktívne pri výpočtoch vypočítaných archívov a ktoré nedovolí výpočet pre časy v budúcnosti. Pomocou akcie CALCARCHEXPR je teda možné napríklad vypočítať výraz nad skriptom plneným archívom, ktorý má dáta aj v budúcnosti.
TIME _bt, _et INT _step INT _retCode TEXT _expr TEXT _err BOOL _bIgnoreInvalid RECORD NOALIAS (SD.Data) _data _bt := %StrToTime("00:00:00 01-01-2008") _et := %StrToTime("00:00:00 02-01-2008") _step := 1 _bIgnoreInvalid := @TRUE _expr := "H.a + H.GetArchRowCol_Ref[2]^I2 + H.GetArchRowCol_Ref_Col_I1[2]" CALCARCHEXPR _expr, _bt, _et, _step, _bIgnoreInvalid, _data^Value, _retCode IF _retCode = _ERR_NO_ERROR THEN ; spracovanie vysledku ELSE _err := _ERR_MSG ; rozsireny popis chyby ENDIF |
Vzhľadom na to, že parsovanie výrazu prebieha počas behu systému (nie počas konfigurácie), ak dôjde k chybe, je možné získať jej rozšírený popis ako hodnotu preddefinovanej lokálnej premennej typu Text _ERR_MSG.