Uloží predpis pre vypočítaný vektor.

V prípade zápisu do verziovaných vektorov sú zmeneným dátam automaticky pridelené časové značky s aktuálnym časom. V prípade potreby je možné časovú značku zadať explicitne - nastavením parametra forceVersionTime na @TRUE a nastavením atribútu parametra version (version\TIM) na požadovaný čas. Existujúce dáta s rovnakou časovou značkou ako nové dáta budú prepísané.

Funkciou je možné vynútiť predpočítanie vektora parametrom precalcRq. Potom, v prípade, že pri čítaní vektora je potrebné načítať aj nepredpočítaný interval, je do logu generované upozornenie. Aplikačne je možné zobraziť upozornenie užívateľovi (akcia ON "EDA_WARNING").

Deklarácia

%EDA_SetFunctionRec(
   INT/TEXT  in _vector,
   INT  in _funcType,
   TEXT in _funcBody,
   REC  in _params,
   INT  out _errorCode
  );

Parametre


ParameterDátový typTypPopis
1vectorINT/TEXTINID / kód vektora.
2funcTypeINTINTyp výpočtu (podporený len 1 - na požiadanie).
3funcBodyTEXTINPredpis funkcie v EDA-L.
4paramsRECINŠtruktúra voliteľných parametrov.
5errorCodeINTOUTNávratová hodnota.


Obsah štruktúry voliteľných parametrov verzie 1:


ParameterDátový typDefaultPopis
1structVersionINT
Verzia štruktúry - 1.
2periodINT
Nepodporené
3offsetINT
Nepodporené
4descTEXTbez popisuPopis k funkcii.
5podTIME
Nepodporené
6pdoTIME
Nepodporené
7userNameTEXT"" (nezapisuje logovaciu informáciu)Login užívateľa, ktorý vykonal zmenu (voliteľný).
8deletePrecalculatedBOOLTRUEPríznak, či sa majú predpočítané dáta zmazať alebo ponechať.
9
version
INT/TEXT"" (nenastavené)Identifikátor (id/kód) verzie, do ktorej sa má vykonať zápis.
10
forceVersionTime
BOOL@FALSE (časová pečiatka sa generuje - aktuálny čas)Pre zapisované dáta vynúti použitie časovej pečiatky z parametra version.
11precalcRqBOOL@FALSEPríznak vynucujúci predpočítanosť vektora pri jeho načítaní.
12cacheIdINT0 (default read cache)Identifikátor cache.
13checkFunctionBOOL@FALSEPríznak, či sa pred uložením funkcie, má vykonať aj jej syntaktická kontrola. Systém v tomto prípade neumožní uložiť predpis s chybami.
14batchIdINT
Identifikátor dávky, do ktorej sa má príkaz vložiť.
15userLogTEXT
Užívateľský popis akcie.


Príklad použitia

 BEGIN
  INT _vectorId = 1000000
  TEXT _vectorName = "vector.test"
  INT _errorCode
  TEXT _funcBody
  TEXT _CRLF = %Chr(13) + %Chr(10)
  RECORD NOALIAS (SD.EDA_CreateVector_Params_V1) _createParams
  RECORD NOALIAS (SD.EDA_SetFunction_Params_V1) _funcParams
 
  ; vytvori vypocitany vektor
  _createParams[1]^structVersion := 1
  _createParams[1]^periodBeginTime := %TimeFromItems(2015, 1, 1, 0, 0, 0, 0)
  _createParams[1]^periodStepBase := 1
  _createParams[1]^periodStepCount := 3600
  CALL %EDA_CreateVectorRec(_vectorName, _vectorId, _vectorName, 13, _createParams, _errorCode)
  IF _errorCode != 0 THEN
   RETURN
  ENDIF
 
  ; nastavi vektoru predpis
  _funcBody := "VEKTOR _v;" +  _CRLF 
  _funcBody := _funcBody + "INT _i;" + _CRLF
  _funcBody := _funcBody + "%CreateVektor(_v, _BT, _ET, _STEP);" + _CRLF
  _funcBody := _funcBody + "FOR _i = 1 TO %ValuesNr(_v) LOOP" + _CRLF
  _funcBody := _funcBody + " _v[_i] := _i;" + _CRLF
  _funcBody := _funcBody + "END LOOP;" + _CRLF
  _funcBody := _funcBody + "RETURN _v;"
  _funcParams[1]^structVersion := 1
  CALL %EDA_SetFunctionRec(_vectorId, 1, _funcBody, _funcParams, _errorCode)
  IF _errorCode != 0 THEN
   RETURN
  ENDIF
 END 
Napíšte komentár