- Vytvoril/a D2000 Dev Team, naposledy zmenené nov 14, 2017
Akcia GETARCHARR
Funkcia
Čítanie archívnych hodnôt z časového intervalu.
Deklarácia
GETARCHARR archIdent, locVarColValueIdent_Rec, [locVarColFlagsIdent_Rec], timeFromIdent_TmA, timeToIdent_TmA, stepIdent_Int, maxValsIdent_Int, statusIdent_Int[, archivInstance_Int]
Parametre
archIdent | in | 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. |
locVarColValueIdent_Rec | out | Odkaz na stĺpec lokálnej premennej typu RECORD pre výsledné hodnoty. |
locVarColFlagsIdent_Rec | out | Nepovinný parameter. Odkaz na stĺpec lokálnej premennej typu RECORD pre archívne flagy (celočíselného typu). |
timeFromItemIdent_TmA | in | Identifikátor typu AbsTime - začiatok intervalu. |
timeToItemIdent_TmA | in | Identifikátor typu AbsTime - koniec intervalu. |
stepIdent | in | Identifikátor typu Int - časový krok pre prevzorkovanie hodnôt v archíve. |
maxValsIdent_Int | in | Maximálny počet hodnôt. Ak je v žiadanom intervale väčší počet hodnôt, budú orezané a akcia vráti v identifikátore statusIdent_Int upozornenie _ERR_MORE_DATA. |
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 pre archívny objekt archIdent z časového intervalu od timeFromIdent_TmA do timeToIdent_TmA s krokom stepIdent_Int (v sekundách). Maximálny počet hodnôt je daný hodnotou identifikátora maxValsIdent_Int. Pozri čítanie zaarchivovaných hodnôt.
Parameter stepIdent_Int určuje prevzorkovanie (v sekundách) čítaných hodnôt. Ak je jeho hodnota 0, čítanie sa neprevzorkováva.
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.
Návratový kód
Parameter locVarColValueIdent_Rec obsahuje odkaz na políčko v lokálnej premennej typu RECORD. Akcia po úspešnom načítaní hodnôt zmení veľkosť (interne akcia REDIM) poľa na potrebný počet riadkov a postupne (od 1...) naplní dané políčko v každom riadku hodnotou z archívu.
Takisto parameter locVarColFlagsIdent_Rec je odkaz na políčko v lokálnej premennej typu RECORD. Políčko musí byť typu Int. Podobne ako pri predchádzajúcom parametri, akcia zmení veľkosť poľa (veľkosti budú zhodné) a naplní dané políčko v každom riadku archívnymi príznakmi (pozri akciu GETARCHVAL). Parameter nie je povinný a môže sa vynechať. Položka pre dáta z archívu a položka pre archívne príznaky môžu byť z tej istej lokálnej premennej.
Parameter stepIdent_Int určuje prevzorkovanie (v sekundách) čítaných hodnôt. Ak je jeho hodnota 0, čítanie sa neprevzorkováva.
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.
Návratový kód
statusIdent_Int
môže nadobúdať jednu z nasledujúcich hodnôt:- _ERR_TRANS_ABORT
- _ERR_TRANS_ERROR
- _ERR_TRANS_IGNORED
- _ERR_NO_ERROR
- _ERR_NO_DATA - v danom intervale nie sú žiadne dáta
- _ERR_MORE_DATA - v danom intervale je viac hodnôt ako maxValsIdent_Int
- _ERR_OBJECT_IS_NOT_IN_ARCHIVE
Parameter locVarColValueIdent_Rec obsahuje odkaz na políčko v lokálnej premennej typu RECORD. Akcia po úspešnom načítaní hodnôt zmení veľkosť (interne akcia REDIM) poľa na potrebný počet riadkov a postupne (od 1...) naplní dané políčko v každom riadku hodnotou z archívu.
Takisto parameter locVarColFlagsIdent_Rec je odkaz na políčko v lokálnej premennej typu RECORD. Políčko musí byť typu Int. Podobne ako pri predchádzajúcom parametri, akcia zmení veľkosť poľa (veľkosti budú zhodné) a naplní dané políčko v každom riadku archívnymi príznakmi (pozri akciu GETARCHVAL). Parameter nie je povinný a môže sa vynechať. Položka pre dáta z archívu a položka pre archívne príznaky môžu byť z tej istej lokálnej premennej.
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.
Príklad
V príklade predpokladá existenciu objektu SD.ArchDemo typu Definícia štruktúry, ktorý obsahuje nasledovné položky:
Načítanie hodnôt z archívu. Hodnoty a archívne príznaky sú v dvoch rôznych poliach.
Meno položky | Typ položky |
Text | Text |
Value | Reálne číslo |
Flags | Celočíselný |
Načítanie hodnôt z archívu. Hodnoty a archívne príznaky sú v dvoch rôznych poliach.
TIME _timeFrom TIME _timeTo INT _maxVals INT _step INT _status RECORD (SD.ArchDemo) _locAValArr RECORD (SD.ArchDemo) _locAFlagsArr _timeTo := %StrToTime("10:00:00 31-12-1999") _timeFrom := %StrToTime("09:00:00 31-12-1999") _maxVals := 100 _step := 0 GETARCHARR H.ArchObj, _locAValArr^Value, _locAFlagsArr^Flags, _timeFrom, _timeTo, _step, _maxVals, _status IF (_status = _ERR_NO_ERROR) | (_status = _ERR_MORE_DATA) THEN ; dáta sú načítané ELSE ; nastala nejaká chyba ENDIF
Keďže počet hodnôt a archívnych príznakov je vždy zhodný, predchádzajúci príklad je možné implementovať s čítaním hodnôt aj príznakov do jedného poľa.
TIME _timeFrom TIME _timeTo INT _maxVals INT _step INT _status RECORD (SD.ArchDemo) _locAValArr _timeTo := %StrToTime("10:00:00 31-12-1999") _timeFrom := %StrToTime("09:00:00 31-12-1999") _maxVals := 100 _step := 0
GETARCHARR H.ArchObj, _locAValArr^Value, _locAValArr^Flags, _timeFrom, _timeTo, _step, _maxVals, _status IF (_status = _ERR_NO_ERROR) | (_status = _ERR_MORE_DATA) THEN ; dáta sú načítané ELSE ; nastala nejaká chyba ENDIF
Čítanie dát zo štruktúrovaného archívneho objektu.
TIME _timeFrom TIME _timeTo INT _maxVals INT _step INT _status INT _row RECORD (SD.ArchDemo) _locAValArr _timeTo := %StrToTime("10:00:00 31-12-1999") _timeFrom := %StrToTime("09:00:00 31-12-1999") _maxVals := 100 _step := 0 _row := 4 ; 4-tý riadok GETARCHARR (H.StructArchObj\HBJ, _row, 5) _locAValArr^Value, _locAValArr^Value, _timeFrom, _timeTo, _step, _maxVals, _status IF (_status = _ERR_NO_ERROR) | (_status = _ERR_MORE_DATA) THEN ; dáta sú načítané ELSE ; nastala nejaká chyba ENDIF
Súvisiace stránky:
2 komentárov
Anonymný
Aká maximálna hodnota maxValsIdent_Int môže byť použitá?
D2000 Dev Team
Veľkosť lokálnych štruktúr nie je obmedzená. Resp. je obmedzená množstvom pamäte a výkonom CPU. Teoreticky je maximálny rozmer max 2^31.