EDA okrem štandardne definovaných krokov pre prácu s dátami, umožňuje definovať aj vlastné periódy, ktoré je možné použiť všade tam, kde je možné zadať parameter krok, resp. perióda. Užívateľsky definované periódy sú identifikované ich kódom a definujú sa globálne pre celú EDA databázu funkciou EDA_SetPeriods. Zoznam všetkých užívateľsky definovaných periód je možné získať funkciou EDA_GetPeriods.
Príklad použitia:
BEGIN
INT _errorCode, _i
TEXT _funcBody
TIME _bt, _et
RECORD NOALIAS (SD.EDA_Period) _periods
RECORD NOALIAS (SD.EDA_CalcFunction_Params_V1) _calcParams
RECORD NOALIAS (SD.EDA_Arr_Obj) _data
; vytvori polhodinovu periodu
_periods[1]^code := "Min30"
_periods[1]^title := _periods[1]^code
_periods[1]^beginTime := %TimeFromItems(2015, 1, 1, 0, 0, 0, 0, 3600)
_periods[1]^timeZone := 0
_periods[1]^stepBase := 1 ; zakladny krok - sekunda
_periods[1]^stepCount := 1800 ; pocet krokov - 1800
_periods[1]^create := @TRUE
CALL %EDA_SetPeriods(_periods, _errorCode)
IF _errorCode != 0 THEN
RETURN
ENDIF
; nacita funkciu s polhodinovou periodou za jeden den
; vysledne _data budu obsahovat 48 hodnot
_funcBody := "VEKTOR _v; INT _i;" + %Chr(10)
_funcBody := _funcBody + "%CreateVektor(_v, 1);" + %Chr(10)
_funcBody := _funcBody + "_v[1] := 1;" + %Chr(10)
_funcBody := _funcBody + "RETURN _v;"
_bt := %TimeFromItems(2015, 1, 1, 0, 0, 0, 0, 3600)
_et := %TimeFromItems(2015, 1, 2, 0, 0, 0, 0, 3600) - 1
_calcParams[1]^structVersion := 1
CALL %EDA_CalcFunctionRec(10, _funcBody, _bt, _et, _periods[1]^code, _calcParams, _data, 1, _errorCode)
IF _errorCode != 0 THEN
RETURN
ENDIF
END
|
Pridať komentár