...
Dostupné typy lokálnych premenných:
- INT - celočíselná premenná v rozsahu -2147483647 9223372036854775808 .. 21474836489223372036854775807
- BOOL - logická premenná (boolean)
- REAL - reálna premenná v rozsahu -1.7E+308 .. 1.7E+308
- TIME - premenná typu Absolútny čas
- TEXT - premenná typu Text
- ALIAS - odkaz na objekt systému D2000.
- RECORD - štruktúrovaná hodnota
Poznámka
...
Deklarácia lokálnej premennej je na riadku uvedená jej typom (pri typoch RECORD a ALIAS typom štruktúry). Za ním nasledujú mená deklarovaných lokálnych premenných oddelené čiarkou, napr.
INT _a, _b, _c,
alebo
RECORD NOALIAS (SD.RecordDef) _rec1, _rec2.
TIME je aj kľúčové slovo v priradení.
Premenné typu INT, BOOL, REAL, TIME a TEXT predstavujú jednoduché hodnoty daného typu.
Premenné typu TEXT sú interne kódované v UTF-8.
| Kotva | ||||
|---|---|---|---|---|
|
Príklad:
ALIAS _obj
INT _i
_obj := 1 ; akcia generuje chybu ERR_NO_ASSIGNED_ALIAS
ALIAS _obj
INT _i
SET _obj AS U.Int
_obj := 1 ; priradenie hodnoty 1 do lokálnej premennej U.Int
WAIT ; čakanie na realizáciu priradenia
_i := _obj ; priradí hodnotu premennej U.Int do lokálnej premennej _i
Ak je k lokálnej premennej typu ALIAS asociovaný objekt typu Pole hodnôt, je možné používať indexy tak, ako pri objekte typu Pole hodnôt:
Príklad:
ALIAS _obj
INT _i
SET _obj AS X.Array
_i := _obj[2] ; priradí hodnotu druhej položky poľa X.array do lokálnej premennej _i
| Kotva | ||||
|---|---|---|---|---|
|
- netypový ALIAS. Ide o doteraz popisovaný ALIAS
- typový ALIAS. Odkaz na objekt typu Štruktúrovaná premenná určitého typu.
Pri deklarácii typového ALIASu je nutné uviesť typ (v našom prípade objekt typu Definícia štruktúry), ktorý obmedzuje množinu možných objektov (typu Štruktúrovaná premenná), s ktorými môže byť lokálna premenná (typový ALIAS) asociovaná. Pri takto deklarovanej lokálnej premennej je možné vo výrazoch (samozrejme po asociovaní akciou SET AS) používať indexovanie a prístup k položkám tak, ako pri objekte typu Štruktúrovaná premenná.
Príklad:
ALIAS (SD.RecordDef) _recAlias
INT _i
_i := 2
ALIAS _recAlias AS SV.Structure
_recAlias[_i]^Int := 1
| Kotva | ||||
|---|---|---|---|---|
|
Príklad:
RECORD (SD.RecordDef) _recLocal
Po štarte skriptu je rozmer poľa takto definovanej lokálnej premennej jedna (1) a všetky položky majú neplatnú hodnotu.
Príklad: Priradenie hodnoty
RECORD (SD.RecordDef) _recLocal
_recLocal[1]^Text := "text value"
_recLocal[1]^Int := 8
Zmena rozmeru poľa lokálnej premennej je možná pomocou akcie REDIM.
Príklad - Zmena rozmeru poľa na desať (10) prvkov
REDIM _recLocal [10]
Minimálny rozmer poľa je nula (0). Zmena rozmeru poľa nemá za následok stratu hodnôt v položkách, ktoré existovali v poli pred akciou. Prípadné novo vzniknuté položky sú inicializované na neplatnú hodnotu.
Položka lokálnej premennej typu Record (alebo objektu typu Štruktúrovaná premenná) môže byť typu Objekt (pozri kapitolu Definícia štruktúry). Takáto položka sa v skripte interpretuje ako netypový ALIAS. Dôsledok:
Priradenie
_recLocal[1]^Object := 1
môže vyvolať chybu _ERR_NO_ASSIGNED_ALIAS ak k položke nie je asociovaný objekt. Priradenie objektu položke je zhodné s priradením objektu pri premennej typu ALIAS:
SET _recLocal[1]^Object AS U.Int
Poznámka: Podobne ako pri netypovom ALIASe, prístup na položku lokálnej premennej, ktorá nie je asociovaná má za následok generovanie chyby _ERR_NO_ASSIGNED_ALIAS.
Táto vlastnosť sa dá potlačiť pri deklarácii lokálnej premennej kľúčovým slovom NOALIAS.
...
Pri takto deklarovanej lokálnej premennej sú všetky položky typu Objekt interpretované ako normálne hodnoty ľubovoľného typu (INT, BOOL, REAL, TEXT, TIME). Je teda korektný nasledovný zápis:
_recLocal[1]^Object := 1
_recLocal[1]^Object := "TEXT"
Položka Objekt s jednotlivými priradeniami mení svoj typ.
Pri priradení hodnoty do položky typu Objekt objektu typu Štruktúrovaná premenná bude priradenie automaticky presmerované do asociovaného objektu (podobne je to pri netypovom ALIASe). Ak položka nemá asociovaný objekt, chyba sa prejaví len pri následnej akcii WAIT.
Poznámka
- Ďalej v texte pojem Štruktúra predstavuje hodnotu lokálnej premennej typu Record alebo hodnotu objektu typu Štruktúrovaná premenná.
ESL umožňuje priraďovať celý jeden riadok štruktúry alebo celú štruktúrou naraz. Toto priradenie je realizované akciou SET WITH.
Syntax akcie:
SET identDst_Rec WITH identSrc_Rec
...
Oba identifikátory musia predstavovať riadok štruktúry alebo celú štruktúru. Typy štruktúr musia byť rovnaké (Chyba: Nekompatibilné typy). Ak sa jedná o celú štruktúru, musia mať zhodný počet riadkov (Chyba: _ERR_RANGE_ERROR). Akcia priradí postupne všetky hodnoty zo zdroja (identSrc_Rec) do cieľa (identDst_Rec).
...
Akcia SET AS umožňuje priraďovať a meniť pripojené objekty (v položkách typu Objekt) v celom riadku štruktúry, alebo v celej štruktúre naraz.
Syntax akcie:
SET identDst_Rec AS identSrc
Pre identSrc a identDst platia tie isté obmedzenie ako pri akcii SET WITH, avšak nesmú to byť lokálne premenné typu Record deklarovaná ako NOALIAS.
Prípustné kombinácie parametrov identSrc a identDst pre akcie SET WITH a SET AS.
Akcia SET BIND asociuje riadok lokálnej premennej typu Record s riadkom objektu typu Štruktúrovaná premenná.
Syntax akcie:
SET _recLocal_Row BIND struct_Row
...
- _recLocal_Row - predstavuje odkaz na riadok lokálnej premennej typu Record
- struct_Row - predstavuje riadok objektu typu Štruktúrovaná premenná
Príklad:
SET _recLocal[2] BIND SV.Structure[1]
Po vykonaní akcie budú hodnoty všetkých položiek riadku 2 lokálnej premennej (_recLocal[2]) zhodné s hodnotami položiek riadku 1 objektu SV.Struktura. Napríklad odkaz na hodnotu _recLocal[2]^Int vráti tú istú hodnotu ako odkaz SV.Struktura[1]^Int.
Vlastnosť asociovania riadku je realizovaná do dôsledku.
Príklad: Priradenie hodnoty
_recLocal[2]^Int := 1
má za následok priradenie hodnoty 1 do položky SV.Struktura[1]^Int. Keďže hodnota položky _recLocal[2]^Int kopíruje hodnotu položky SV.Struktura[1]^Int, zmena v lokálnej premennej sa prejaví až po zmene v objekte SV... (možné použiť akciu WAIT). Riadky lokálnej premennej typu Record, ktoré nie sú spojené (SET BIND) s iným riadkom majú chovanie nezmenené (popísané v predchádzajúcich odstavcoch).
...