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

  Parameter Dátový typ Typ Popis
1 vector INT/TEXT IN ID / kód vektora.
2 funcType INT IN Typ výpočtu (podporený len 1 - na požiadanie).
3 funcBody TEXT IN Predpis funkcie v EDA-L.
4 params REC IN Štruktúra voliteľných parametrov.
5 errorCode INT OUT Návratová hodnota.

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

  Parameter Dátový typ Default Popis
1 structVersion INT   Verzia štruktúry - 1.
2 period INT   Nepodporené
3 offset INT   Nepodporené
4 desc TEXT bez popisu Popis k funkcii.
5 pod TIME   Nepodporené
6 pdo TIME   Nepodporené
7 userName TEXT "" (nezapisuje logovaciu informáciu) Login užívateľa, ktorý vykonal zmenu (voliteľný).
8 deletePrecalculated BOOL TRUE Prí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.
11 precalcRq BOOL @FALSE Príznak vynucujúci predpočítanosť vektora pri jeho načítaní.
12 cacheId INT 0 (default read cache) Identifikátor cache.
13 checkFunction BOOL @FALSE Prí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.
14 batchId INT   Identifikátor dávky, do ktorej sa má príkaz vložiť.
15 userLog TEXT   Užívateľský popis akcie.

Príklad použitia

 BEGIN
  INT _vectorId = 1000000
  TEXT _vectorName = "vector.test"
  INT _errorCode
  TEXT _funcBody
  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;" + %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;"
  _funcParams[1]^structVersion := 1
  CALL %EDA_SetFunctionRec(_vectorId, 1, _funcBody, _funcParams, _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ť .