Rozšírená syntax pre výrazy počítaných bodov a vypočítaných archívnych objektov

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ť


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.

Obmedzenia


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:


Príklad 1

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



Príklad 2

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)

Archivované hodnoty
Počítané body