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.

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

Nie ste prihlásený. Akékoľvek zmeny, ktoré vykonáte, sa označia ako anonymné. Ak už máte svoj účet, pravdepodobne sa budete chcieť prihlásiť .