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


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.

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

1. Výraz musí obsahovať meno aspoň jednej archivovanej hodnoty.
2. Ak je vo výraze viacero archivovaných hodnôt, všetky musia mať rovnakého rodiča v zmysle DODM.


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:

Napíšte komentár