EDA_PredPrepocitajRec

EDA_PredPrepocitajRec

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