Priradenie

Priradenie


Funkcia

Zmena jednej hodnoty je implementovaná formou priradenia.

Deklarácia

dstIdent := expression [TIME timeExpression]

 

Parametre

dstIdent

in

Cieľ hodnôt (identifikátor riadku, alebo celej štruktúry).

expression

in

Výraz definujúci hodnotu.

TIME timeExpression

in

Výraz typu Absolútny čas - čas vzniku hodnoty (nepovinný parameter).

 

Popis

Hodnota vzniknutá priradením má čas vzniku hodnoty aktuálny čas. Ak je uvedený nepovinný parameter TIME, vyhodnotí sa výraz timeExpression a jeho výsledok sa použije ako čas vzniku hodnoty.

Parameter dstIdent je identifikátor jednej hodnoty:

  • objektu alebo lokálnej premennej typu Int, Bool, Real, Time, Text
    Výraz expression musí byť daného typu. Ak nie je, skript sa pokúsi hodnotu konvertovať na správny typ. Ak sa to nepodarí, výsledná hodnota je neplatná (Invalid).



  • lokálnej premennej typu RECORD alebo objektu typu Štruktúrovaná premenná
    priradenie je možné len do jednej položky konkrétneho riadku štruktúry. Ostatné pravidlá priradenia sú zhodné s jednoduchým typom.

    RECORD (SD.RecordDef) _lArr REDIM _lArr[10] _lArr[2]^Int := 1


  • lokálnej premennej typu ALIAS (netypový)
    Ak nie je asociovaná s objektom systému, vzniká chyba _ERR_NO_ASSIGNED_ALIAS. Ináč je výraz vyhodnotený a výsledná hodnota priradená objektu, ktorý je asociovaný s lokálnou premennou.


  • ALIAS _a SET _a AS U.Int _a := 1 WAIT

  • lokálnej premennej typu ALIAS (typový)
    Priradenie je možné len do jednej položky konkrétneho riadku štruktúry. Ak nie je asociovaná s objektom systému, vzniká chyba _ERR_NO_ASSIGNED_ALIAS. Ináč je výraz vyhodnotený a výsledná hodnota priradená objektu políčka.

    ALIAS (SD.RecordDef) _aArr SET _aArr AS SV.Struktura _aArr[2]^Int := 1 WAIT

 

Poznámka:

Ak priradením meníme hodnotu objektu v systéme, má priradenie charakter "žiadosti" o zmenu hodnoty. Skript po priradení pokračuje vykonávaním ďalších akcií a nie je zaručené, že objekt svoju hodnotu zmenil (je to dané aktuálnymi časovými pomermi - zaťažením systému).

Príklad

INT _prevValue _prevValue := U.Int ; odložím si predchádzajúcu hodnotu objektu U.Int := U.Int + 1 ; zvýšim hodnotu objektu o 1 IF U.Int = _prevValue THEN ; skontrolujem hodnotu ; priradenie ešte neprebehlo ELSE ; priradenie je realizované ENDIF

 

 

Prípad, že priradenie ešte neprebehlo, je pravdepodobnejší. Čakanie na realizáciu priradenia (na jeho dokončenie) umožňuje akcia WAIT.


Súvisiace stránky:

Akcie v skriptoch