Típusszerkezet
Rexx nyelvben az egyszerű változók típusa nem előre meghatározott, tárolhatnak string és numerikus értéket.
Egy változó típusa az rá alkalmazott művelettől függ, aritmetikai kifejezés operandusa azonban csak numerikus érték lehet.
a='Az érték'
b='111'
c='111'
d=a":" (b||c)*3
say d
"Az érték: 333333"
A fenti példában három változónak adtunk értéket, majd a d változó értékét kiírattuk a say paranccsal. A b||c a stringkonkatenáló
operátor b és c változókat string-ként konkatenálja, majd a kapott karakterláncot numerikus értékké konvertálva és a szorzást
elvégezve kapjuk 333333 eredményt. A változókat nem kell deklarálni, nem inicializált változó értéke a változó neve csupa nagybetűvel.
A signal on novalue parancs használatával (a signal parancs ismertetése a vezérlésátadás részben található) azonban ki lehet szűrni
a nem inicializált változók használatát.
elso="A változó"
masodik="értéke"
say elso masodik':' harmadik!
"A változó értéke: HARMADIK!"
Az ObjectREXX-ben ezen a téren jelentős változtatások történtek, ugyanis létrejöttek az objektum típusú változók, azaz minden változó
objektumokat tárol. Ez a változás viszont a visszafelé szükséges kompatibilitás miatt azt eredményezte, hogy az objektumok
alapértelmezett be és kimenete karakterlánc, vagyis "hagyományos" REXX változókként kezelhetőek.
Típuskonstrukciók
Tömb típus(ok)
A Rexx nyelv egyetlen összetett adattípusa a tömb.(ezt a nyelvben stem variable, vagy törzsváltozónak hívjuk).
A tömbelemekre való hivatkozást a pont karakter jelöli, és ez különböztet meg egy egyszerű változót egy tömbváltozótól is.
A változónév egy egyszerű változóra való hivatkozás, míg a változónév. egy tömbváltozóra hivatkozik.
A tömbváltozók indexelődhetnek numerikus értékekkel, vagy string értékekkel, az utóbbit hívjuk asszociatív tömbnek.
Lehetőségünk van többdimenziós tömböt is létrehozni, ekkor tetszőleges elemre való hivatkozás pontokkal elválasztva megadott
indexek segítségével történik, például: könyv.1.szerzö. A tömbváltozókat sem kell használat előtt deklarálni, de lehetőségünk
van az egész tömbnek értéket adni, ez azt jelenti, hogy a tömb összes eleméhez ugyanazt az értéket rendeljük.
könyv.1.szerző="Bjarne Stroustrup"
könyv.1.cím="The C++ Prorgramming Language"
könyv.2.szerző="Brian W. Kernighan"
könyv.2.cím="The Awk Programming Language"
könyv.3.szerző="Mark Harrison"
könyv.3.cím=" Effective Programming in Tcl/Tk"
do i=1 to 3 say
"Szerző: " könyv.i.szerző say
"Cím: " könyv.i.cím
end
A fenti példában egy könyv nevű kétdimenziós tömb elemeit inicializálunk. A do paranccsal ciklusban kiíratjuk a tömbelemek értékét.
Ha a negyedik tömbelemet is kiíratnánk melynek nem adtunk értéket akkor ez lenne az eredmény: Szerző: KÖNYV.4.SZERZŐ Cím:
KÖNYV.4.CÍM Az egész tömbnek így adhatunk értéket: Könnyv.="nincs" Ekkor a negyedik nem inicializált tömbelem értékei beállítódnak
a "nincs" értékre, vagyis a kiíratás értéke:
Szerző: nincs Cím: nincs
A tömb elemei csak skalár értékűek lehetnek. A tömb i-dik elemére {tömbnév}.i alakban lehet hivatkozni. Általában a 0-dik elem
a tömb elemeinek a számát tartalmazza, de mint a tömb többi elemét, ezt is lehet változtatni.
Figyelem !!! {tömbnév}.i-egy helyes változó név, és az interpreter nem ellenőrzi, hogy létezik-e {tömbnév} nevű tömb.
Mutató, rekord, unió, halmaz típusok nem léteznek. A tömb típus felépítéséből látható, hogy tömbök tömbje sem fodulhat elő
Típuskonverziók
A nyelvben a skalár típusú változók lényegében sztring típusúak. Azt, hogy egy sztring tekinthető-e decimális, bináris, vagy hex
számnak a datatype beépített függvénnyel lehet eldönteni.
Változók, konstansok
A nyelv nem típusos, a változókat nem kell deklarálni, a változó aktuális értéke határozza meg azt, hogy a változó mely műveletek
operandusa lehet. Új típust nem lehet definíállni. A különböző típusú adatokat reprezentáló sztringek más típusú adatokat reprezentáló
sztringekké alakíthatóak a megfelelő beépített függvények segítségével.
Kifejezések, operátorok
Aritmetikai kifejezések
A Rexx nyelv rendelkezik a megszokott aritmetikai operátorokkal és az aritmetikai
kifejezések kiértékelését igen nagy pontossággal el tudja végezni.
A Rexx aritmetikai operátorai:
- + összeadás
- - kivonás
- * szorzás
- / osztás
- ** hatványozás
- % egész rész
- // maradék
Logikai kifejezések és az összehasonlítások közötti különbség
A nyelv logikai kifejezései lehetnek egyszerű kifejezések, ill. logikai operátorok
használatával összetett logikai kifejezéseket is használhatunk.
A Rexx logikai operátorai:
- & logikai és
- | logikai vagy
- && logikai kizáró vagy
- ^ negáció
Az egyik gyakran használt logikai kifejezéstípus változók ill. kifejezések összehasonlítása.
A Rexx nyelvben különböző operátorokat tudunk használni numerikus kifejezések
ill. string kifejezések összehasonlítására.
A numerikus értékek összehasonítására használt logikai kifejezések:
- = egyenlő
- < kisebb
- > nagyobb
- <= kisebb egyenlő
- >= nagyobb egyenlő
- <> nem egyenlő
- \= nem egyenlő
- \> nem nagyobb
- \< nem kisebb
A string kifejezésekre használható összehasonlító operátorok
- == egyenlő
- << kisebb
- >> nagyobb
- <<= kisebb vagy egyenlő
- >>= nagyobb vagyegyenlő
- \== nem egyenlő
- \>> nem nagyobb
- \<< nem kisebb