Nasledujúca kapitola popisuje syntax použiteľnú vo výrazoch objektov typu Počítaný bod a výrazoch objektov typu Archivovaná hodnota.
Inicializačná časť začína kľúčovým slovom INIT. V tejto časti je možné používať:
Inicializačná časť je nepovinná. Ak nie je uvedená, platí pôvodná syntax.
Ak je uvedená, samotný
výraz, ktorý určuje hodnotu výrazu objektu, je uvedený za kľúčovým slovom FINALLY.
V systéme D2000 je obmedzený počet vykonávaných riadkov. V súčasnosti nie je možné tento počet nastaviť
alebo zmeniť.
Počet vykonávaných riadkov (ExecuteRows) závisí od typu procesu.
Pre proces
D2000 Calc:
Pre proces D2000 Archiv:
Ak sa do premennej daného typu priraďuje hodnota iného typu, pri vykonávaní výrazu nastane runtime error, ktorý zastaví vyhodnocovanie skriptu (ďalšie riadky ostanú nevyhodnotené) a ako výsledok vráti vždy hodnotu Invalid. Pre zobrazenie chyby je potrebné mať zapnuté "debug runtime errors".
Výnimkou sú povolené konverzie:
V uvedenom príklade sa počíta suma hodnôt zo stĺpca A2 štruktúrovanej premennej SV. Do sumy sa zarátavajú len hodnoty z riadkov, v ktorých hodnota v stĺpci A1 je väčšia alebo rovná 3.
INIT
INT _rows
INT _rowNr
REAL _suma
_rows := SV.A\DIM
_suma := 0.0
START:
_rowNr :=1
CYKLUS:
IF SV.A[_rowNr]^A1 < 3 GOTO SKIP:
_suma := _suma + SV.A[_rowNr]^A2
SKIP:
_rowNr := _rowNr + 1
IF _rowNr <= _rows
GOTO CYKLUS:
FINALLY
_suma
V príklade je zobrazované poradie tretiny bežiacej minúty - troma spôsobmi návratu hodnoty.
INIT
INT _tretina
IF Sec <=
20 THEN
RETURN 1
ELSIF Sec <=
40
THEN
_tretina := 2
RETURN _tretina
ELSE
_tretina := 3
EXIT
ENDIF
FINALLY
_tretina
V oboch príkladoch bude časová značka hodnoty výrazu nadobúdať hodnotu času, kedy bol výraz vyhodnotený. Ak má výraz nadobúdať inú hodnotu časovej značky, ako čas vyhodnotenia výrazu, je potrebné ju zadať vo výraze (za vymenovaným slovom FINALLY!) .
Napríklad:
FINALLY
%NtV(_suma, _time)
Pre definovanie užívateľských príznakov výslednej hodnote výrazu, je potrebné definíciu užívateľského príznaku definovať vo výraze.
Napríklad:
FINALLY
%SetFlags(_suma, @A, _boolean)