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_TxtinIdentifikátor hodnoty typu text, ktorý obsahuje výraz.
btIdent_TimAinIdentifikátor typu AbsTime - začiatok intervalu.
etIdent_TimAinIdentifikátor typu AbsTime - koniec intervalu.
stepIdent_IntinIdentifikátor typu Int - časový krok [s].
_ignoreInvalid_BoolinIdentifikátor typu Bool - Neplatné hodnoty vo výraze budú nahradené 0.
_locVarColValueIdent_Recoutodkaz na stĺpec lokálnej premennej typu RECORD - výsledné hodnoty.
statusIdent_Intout

Identifikátor typu Int - ú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 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