CALCARCHEXPR

CALCARCHEXPR

Akcia CALCARCHEXPR
 


Funkcia

Vykonanie výpočtu daného archívneho výrazu nad zaarchivovanými hodnotami, ktoré sú vyjadrené prostredníctvom mien archívnych objektov vo výraze.

Deklarácia

CALCARCHEXPR archExprIdent_Txt, btIdent_TimA, etIdent_TimA, stepIdent_Int, _ignoreInvalid_Bool, _locVarColValueIdent_Rec, statusIdent_Int[, archivInstance_Int]

Parametre

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.

Popis

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ámka

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.

Príklad

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.

Súvisiace stránky:

Akcie v skriptoch