- Vytvoril/a D2000 Dev Team, naposledy zmenené aug 07, 2024
Akcia GETARCHVAL
GETARCHVAL valueIdent_Real, archIdent, timeExpression_TmA [STATUS [isDataIdent_Bool], [archFlagsIdent_Int], [archivInstance_Int]] [VALID | INVALID]
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ť). Upozornenie: Ak sa parameter odkazuje na objekt, ktorý je viacnásobne archivovaný, nie je určené, hodnoty ktorého archívneho objektu sa použijú pre akciu. |
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. |
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)
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).
- 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.
Čí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:
0 komentárov