- Vytvoril/a D2000 Dev Team, naposledy zmenené jan 12, 2022
Akcia GETARCHROW
Funkcia
Hromadné čítanie hodnôt z archívu.
Deklarácia
GETARCHROW archIdent, locRecDstIdent, timeFromIdent_TmA, timeToIdent_TmA, stepIdent_Int, maxValsIdent_Int, statusIdent_Int [,archivInstance_Int]
Parametre
archIdent | in | Odkaz na riadok:
|
locRecDstIDent | out | Lokálna premenná typu Record - výsledok čítania. |
timeFromIdent_TmA | in | Identifikátor typu Absolútny čas - začiatok intervalu. |
timeToIdent_TmA | in | Identifikátor typu Absolútny čas - koniec intervalu. |
stepIdent_Int | in | Identifikátor typu Int - časový krok pre prevzorkovanie hodnôt v archíve. Detaily prevzorkovania - viď Poznámka o prevzorkovaní. |
maxValsIdent_Int | in | Maximálny počet hodnôt. Ak v je v danom intervale väčší počet hodnôt, budú orezané a akcia vráti upozornenie ERR_MORE_DATA v identifikátore statusIdent_Int. |
statusIdent_Int | out | Úspešnosť čítania. |
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 archívne hodnoty z viacerých archívnych objektov. Tieto sú určené riadkom, ktorý predstavuje parameter archIdent. Akcia pre každé políčko v danom riadku interne generuje požiadavku na čítanie dát z archívu a taktiež čaká na príchod načítaných dát. Tým že sú generované všetky požiadavky na čítanie naraz (ďalšia požiadavka nečaká na ukončenie čítania predchádzajúcej požiadavky) akcia dosahuje 50% až 200% rýchlejšie načítanie rovnakého počtu hodnôt ako ich postupné čítanie prostredníctvom akcie GETARCHARR. Toto zrýchlenie závisí od zaťaženia systému a počtu stĺpcov v riadku. Všeobecne platí, že zrýchlenie je vyššie pri viac zaťaženom systéme a väčšom množstve políčok.
Požiadavka na čítanie dát z archívu obsahuje odkaz na dáta prostredníctvom:
Parametre timeFromIdent_TmA a timeToIdent_TmA určujú časový interval, z ktorého sú čítané hodnoty.
Parameter stepIdent_Int určuje prevzorkovanie (v sekundách) čítaných hodnôt. Ak je jeho hodnota 0, čítanie sa neprevzorkováva. Preto ak je hodnota rôzna od 0, vo výslednej štruktúre budú mať všetky hodnoty v jednom riadku rovnaký čas vzniku a každý stĺpec bude obsahovať načítané hodnoty až po posledný riadok. Ak je hodnota 0, rozmer výslednej štruktúry je daný maximálnym počtom prečítaných hodnôt na jednu požiadavku. Preto nie všetky stĺpce budú obsahovať prečítané hodnoty z archívu až po posledný riadok.
Ak je parameter timeToIdent_TmA väčší ako aktuálny čas a zároveň parameter stepIdent_Int je rôzny od nuly, prevzorkované hodnoty s časom v budúcnosti budú neplatné.
Požiadavka na čítanie dát z archívu obsahuje odkaz na dáta prostredníctvom:
- Priamo archívneho objektu (alebo položky štruktúrovaného archívneho objektu) - v tomto prípade je jednoznačne určený archívny objekt z ktorého prebehne čítanie.
- Iného objektu v systéme (meraný bod, užívateľská premenná, ...) alebo položky lokálnej premennej typu Record - v tomto prípade systém automaticky vyhľadá archívny objekt, ktorý archivuje objekt špecifikovaný v požiadavke (napríklad: Ak požiadavka obsahuje odkaz na meraný bod, ktorý je archivovaný, systém automaticky túto požiadavku konvertuje na požiadavku čítania z daného archívneho objektu). Ak takýto neexistuje, akcia je ukončená s chybou _ERR_ARCHIV_NOT_RUNNING.
- Riadok lokálnej premennej typu „typový ALIAS“
Príklad:
ALIAS (definícia štruktúry) _lAT
SET _lAT AS SV.Struct
GETARCHROW _lAT[4] , ...
Jednotlivé požiadavky na čítanie budú VŽDY adresované na položky štruktúry SV.Struct v danom riadku (aj v prípade, že niektorá položka je typu Objekt). - Riadok objektu typu Štruktúrovaná premenná
Príklad:
GETARCHROW SV.Struct[4] , ...
Adresovanie požiadavky prebieha podľa tých istých pravidiel ako v bode 1. - Riadok lokálnej premennej typu Record
Príklad:
RECORD (definícia štruktúry) _lRec
REDIM _lRec[10]
SET _lRec[4]^Item1 AS Sec
SET _lRec[4]^Item2 AS SysTime
SET _lRec[4]^Item3 AS M.MeranyBod
.....
GETARCHROW _lRec[4], ...
Akcia vyžaduje, aby všetky stĺpce v použitej definícii štruktúry boli typu Objekt. Jednotlivé požiadavky na čítanie budú adresované na objekty, na ktoré smerujú položky v danom riadku.
Ak niektoré políčko nebude smerované na objekt, akcia končí s chybou ERR_NO_ASSIGNED_ALIAS. - Riadok štruktúrovaného archívneho objektu
Príklad:
GETARCHROW H.Struct[4], ...
Jednotlivé požiadavky na čítanie budú adresované postupne na všetky položky v danom riadku. H.Struct nemôže byť jedno-stĺpcový archívny objekt.
Parametre timeFromIdent_TmA a timeToIdent_TmA určujú časový interval, z ktorého sú čítané hodnoty.
Parameter stepIdent_Int určuje prevzorkovanie (v sekundách) čítaných hodnôt. Ak je jeho hodnota 0, čítanie sa neprevzorkováva. Preto ak je hodnota rôzna od 0, vo výslednej štruktúre budú mať všetky hodnoty v jednom riadku rovnaký čas vzniku a každý stĺpec bude obsahovať načítané hodnoty až po posledný riadok. Ak je hodnota 0, rozmer výslednej štruktúry je daný maximálnym počtom prečítaných hodnôt na jednu požiadavku. Preto nie všetky stĺpce budú obsahovať prečítané hodnoty z archívu až po posledný riadok.
Ak je parameter timeToIdent_TmA väčší ako aktuálny čas a zároveň parameter stepIdent_Int je rôzny od nuly, prevzorkované hodnoty s časom v budúcnosti budú neplatné.
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.
Úspešnosť čítania akcie obsahuje premenná statusIdent_Int. Ak premenná statusIdent_Int nadobudne hodnotu _ERR_NO_DATA(22), znamená, že všetky archívy, ktoré sa použili pri čítaní, neobsahujú dáta. Ak aspoň jeden obsahuje dáta, akcia vráti _ERR_NO_ERR(0).
Príklad
Súvisiace stránky:
0 komentárov