GETARCHVAL
Akcia GETARCHVAL
Funkcia
Čítanie hodnoty archívneho objektu v danom čase.
Deklarácia
GETARCHVAL valueIdent_Real, archIdent, timeExpression_TmA [STATUS [isDataIdent_Bool], [archFlagsIdent_Int], [archivInstance_Int]] [VALID | INVALID]Parametre
valueIdent_Real | out | Odkaz na jednu archívnu hodnotu, odkaz na objekt alebo odkaz na položku objektu typu Štruktúrovaná premenná (poznámka: hodnoty objektu alebo položky sa musia archivovať). |
archIdent | in | Odkaz na jednu archívnu hodnotu, odkaz na objekt alebo odkaz na položku objektu typu Štruktúrovaná premenná. |
timeExpression_TmA | in | Výraz typu Absolútny čas. |
isDataIdent_Bool | out | Identifikátor typu Bool - príznak úspešnosti čítania z archívu, nepovinný parameter. |
archFlagsIdent_Int | out | Identifikátor typu Int - archívne príznaky, nepovinný parameter. |
archivInstance_Int | in | Nepovinný identifikátor typu Int - identifikácia inštancie archívu. Ak nie je uvedený, nahradí sa hodnotou 0. |
Popis
Akcia prečíta hodnotu z archívu pre daný čas. Výsledok čítania (hodnotu) zapíše do premennej valueIdent_Real. Prečítaná hodnota zodpovedá čítaniu časového intervalu, ktorý má čas začiatku a konca rovnaký a časový krok je 0.
Ak parameter archIdent obsahuje odkaz na objekt typu Archivovaná hodnota, činnosť akcie je popísaná vyššie. Ak obsahuje odkaz na objekt, ktorý nie je archívny alebo položku štruktúrovanej premennej, ktorá nie je typu Objekt, systém sa snaží nájsť archívny objekt (objekt typu Archivovaná hodnota), ktorý danú hodnotu archivuje.
Ak je parameter archIdent odkaz na položku štruktúrovanej premennej typu Objekt, táto ukazuje na určitý objekt v systéme. Ak je tento objekt archívny, dáta budú načítané z neho. Ak nie je, systém sa snaží nájsť archívny objekt, ktorý danú hodnotu archivuje.
Výsledok čítania (value) sa priradí do premennej valueIdent_Real.
Ak je uvedený identifikátor isDataIdent_Bool, zapíše do neho hodnotu:
True - ak sú dáta prečítané,
False - ak dáta nie sú (alebo dáta v požadovanom čase majú príznak DELETED - sú užívateľsky vymazané).
Ak identifikátor isDataIdent_Bool nie je použitý a ak nie sú dáta, akcia nemodifikuje hodnotu identifikátora valueIdent_Real.
Ak sa čítajú periodické/štatistické archívy a timeExpression_TmA nie je zarovnaný na periódu a offset výpočtu, je vrátená najbližšia staršia hodnota.
Ak sa čítajú periodické/štatistické archívy a timeExpression_TmA je novší ako čas poslednej vypočítanej hodnoty, tak sa nevrátia žiadne dáta.
Ak je uvedený identifikátor archFlagsIdent_Int, sú do neho zapísané archívne príznaky pre prečítanú hodnotu (archívny príznak vzniká súčtom nasledujúcich konštánt):
1 (ArcStart) - hodnota zapísaná do archívnej databázy v okamihu štartu procesu D2000 Archiv.
2 (ArcStop) - hodnota zapísaná do archívnej databázy v okamihu zastavenia procesu D2000 Archiv
4 (ArcBlock) - hodnota zapísaná do archívnej databázy v okamihu blokovania archivácie (prostredníctvom podmienky prerušenia archivácie)
8 (ArcUnBlock) - hodnota zapísaná do archívnej databázy v okamihu odblokovania archivácie (prostredníctvom podmienky štartu archivácie)
16 (ArcDeleted) - užívateľom zrušená hodnota z archívnej databázy. Zmazanú hodnotu akcia štandardne ignoruje (ako keby v archíve nebola), chovanie je možné zmeniť parametrom archívu RTM.ARCHIV.GETARCHVAL.DELETED - po jeho aktivácii budú vyčítavané aj užívateľom zmazané hodnoty.
32 (ArcUsermodify) - užívateľom modifikovaná hodnota v archívnej databáze
64 (ArcOldVal) - stará hodnota vyčítaná z komunikačnej stanice
128 (ArcProcessModify) - hodnota modifikovaná procesom (nie užívateľom: skript ESL, D2000 VBApi, ...)
256 (ArcLoadData) - zastarané: hodnota bola získaná z OS/2 databázy SQL Gupta "On-line importom archívnej databázy"
512 (ArcMonoTime) - hodnota je uložená s monotónnym časom
1024 (ArcK) - hodnota periodického archívu vygenerovaná pri čítaní ako kópia predchádzajúcej
2048 (ArcL) - hodnota pochádza zo zapisovacej cache archívu (ešte nebola commitovaná do databázy)
4096 (ArcM) -hodnota pochádza z izochrónnej cache archívu (nebola čítaná z databázy)
32768 (ArcV1) - hodnota je uložená v archívnej databáze vo formáte V1 (iba veľmi staré archívy nemajú tento príznak)
Na testovanie archívnych príznakov slúži logický súčin (&), ktorý je možné aplikovať i na celočíselné operandy. Ak napríklad platí podmienka archFlagsIdent_Int & 4 = 4, potom hodnota prečítaná z archívnej databázy prostredníctvom akcie GETARCHVAL má príznak ArcBlock (blokovanie archivácie).
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.
Pre verzie novšie ako 21.0.70 je možné špecifikovať klauzulu VALID alebo INVALID. Pomocou tejto klauzuly je možné vyčítať poslednú platnú (VALID) alebo neplatnú (INVALID) hodnotu pre daný čas (ignorujúc všetky nasledujúce hodnoty, ktoré nie sú VALID alebo INVALID).
Poznámka
Ak nie je spustený príslušný proces archivácie, akcia generuje chybu _ERR_ARCHIV_NOT_RUNNING.
Ak je Archívny objekt archivovaný:
periodicky, čítanie hodnoty mimo periódy dopadne vždy neúspešne
na filter, hodnota pre žiadaný čas bude odvodená z poslednej zapísanej hodnoty v archíve.
Príklad
Čítanie archivovanej hodnoty:
REAL _value
TIME _bt
BOOL _bIsArchData
; vypočítanie začiatku aktuálnej minúty
_bt := SysTime
_bt := _bt - %ModTime(_bt, 60)
; prečítanie hodnoty a aktívnej inštancie archívu
GETARCHVAL _value, H.Sec, _bt STATUS _bIsArchData,,0
; bola hodnota prečítaná?
IF _bIsArchData THEN
; spracovanie prečítanej hodnoty
ENDIF Súvisiace stránky: