Vykonanie alebo zrušenie predpočtu vypočítaného vektora. Paralelne s predpisom vypočítaného vektora sa vytvorí tabuľka pre uloženie hodnôt výpočtu. Pri ďalšom dotaze na vektor sa už nebude interpretovať výpočet, ale načítajú sa už len vypočítané dáta. Funkcia voliteľne umožňuje zápis logovacej informácie o zmene a výber verzie, v ktorej sa má predpočet vykonať. Pre verziované vektory je v prípade vynútenia časovej pečiatky možné predpočítať dáta len pre čas väčší alebo rovný ako bol posledný čas predpočtu.
Funkcionálne vektory nie je možné predpočítať.
Deklarácia
%EDA_PredPrepocitajRec( INT/TEXT in _vector, BOOL in _precalculate, TIME in _bt, TIME in _et, REC in _params, INT out _errorCode );
Parametre
| Parameter | Dátový typ | Typ | Popis | |
|---|---|---|---|---|
| 1 | vector | INT/TEXT | IN | ID / kód vektora. |
| 2 | precalculate | BOOL | IN | Príznak, či sa má predpočet vykonať alebo zrušiť. |
| 3 | bt | TIME | IN | Začiatok obdobia pre vykonanie predpočtu. |
| 4 | et | TIME | IN | Koniec obdobia pre vykonanie predpočtu. |
| 5 | params | RECORD | IN | Štruktúra voliteľných parametrov. |
| 6 | errorCode | INT | OUT | Chybový (návratový) kód. |
Obsah štruktúry voliteľných parametrov verzie 1:
| Parameter | Dátový typ | Prednastavená hodnota | Popis | |
|---|---|---|---|---|
| 1 | structVersion | INT | Verzia štruktúry - 1. | |
| 2 | userName | TEXT | "" (nezapisuje logovaciu informáciu) | Login užívateľa, ktorý vykonal zmenu. |
| 3 | version | INT/TEXT | invalid (nenastavené) | Identifikátor (id/kód) verzie, v ktorej sa má vykonať predpočet a uložiť predpočítané dáta. |
| 4 | forceVersionTime | BOOL | @FALSE | Pre zapisované dáta vynúti použitie časovej pečiatky z parametra version. |
| 5 | cacheId | INT | 0 | Identifikátor cache. |
| 6 | envName | TEXT | "" | Názov EDA prostredia, ktoré sa použije pre výpočet. |
| 7 | batchId | INT | Identifikátor dávky, do ktorej sa má príkaz vložiť. | |
| 8 | userLog | TEXT | Užívateľský popis akcie. |
Príklad použitia
BEGIN
TEXT _vectorName = "vector.test"
INT _vectorId = 1000000
INT _errorCode
TEXT _funcBody
TIME _precalcBt, _precalcEt, _readBt, _readEt
RECORD NOALIAS (SD.EDA_Arr_Obj) _data
RECORD NOALIAS (SD.EDA_CreateVector_Params_V1) _createParams
RECORD NOALIAS (SD.EDA_SetFunction_Params_V1) _funcParams
RECORD NOALIAS (SD.EDA_PredPrepocitaj_Params_V1) _precalcParams
RECORD NOALIAS (SD.EDA_ReadValuesFromVektor_Params_V1) _readParams
; vytvori vektor
_createParams[1]^structVersion := 1
_createParams[1]^periodBeginTime := %TimeFromItems(2015, 1, 1, 0, 0, 0, 0)
_createParams[1]^periodStepBase := 1
_createParams[1]^periodStepCount := 3600
_funcParams[1]^structVersion := 1
CALL %EDA_CreateVectorRec(_vectorName, _vectorId, _vectorName, 13, _createParams, _errorCode)
IF _errorCode != 0 THEN
RETURN
ENDIF
; nastavi mu predpis
_funcBody := "VEKTOR _v;" + %Chr(10)
_funcBody := _funcBody + "INT _i;" + %Chr(10)
_funcBody := _funcBody + "%CreateVektor(_v, _BT, _ET, _STEP);" + %Chr(10)
_funcBody := _funcBody + "FOR _i = 1 TO %ValuesNr(_v) LOOP" + %Chr(10)
_funcBody := _funcBody + " _v[_i] := _i;" + %Chr(10)
_funcBody := _funcBody + "END LOOP;" + %Chr(10)
_funcBody := _funcBody + "RETURN _v;"
CALL %EDA_SetFunctionRec(_vectorId, 1, _funcBody, _funcParams, _errorCode)
IF _errorCode != 0 THEN
RETURN
ENDIF
; predpocita vektor
_precalcParams[1]^structVersion := 1
_precalcBt := %TimeFromItems(2015, 7, 11, 0, 0, 0, 0)
_precalcEt := %TimeFromItems(2015, 7, 12, 0, 0, 0, 0) - 1
CALL %EDA_PredPrepocitajRec(_vectorName, @TRUE, _precalcBt, _precalcEt, _precalcParams, _errorCode)
IF _errorCode != 0 THEN
RETURN
ENDIF
; nacita vektor - predpocitanu a nepredpocitanu cast
_readParams[1]^structVersion := 1
_readBt := %TimeFromItems(2015, 7, 10, 0, 0, 0, 0)
_readEt := %TimeFromItems(2015, 7, 13, 0, 0, 0, 0) - 1
CALL %EDA_ReadValuesFromVektorRec(_vectorName, _readBt, readEt, 0, _readParams, _data, 1, _errorCode)
IF _errorCode != 0 THEN
RETURN
ENDIF
END
|
0 komentárov