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]]

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ť).

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.

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.

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ú.

Ak identifikátor isDataIdent_Bool nie je použitý a ak nie sú dáta, akcia nemodifikuje hodnotu identifikátora valueIdent_Real.

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 ignoruje (ako keby v archíve nebola)
  • 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
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 aflags & 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.


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:

Napíšte komentár