A REXX programozási nyelv

Típusok, típuskonstrukciók



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:

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:
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:
A string kifejezésekre használható összehasonlító operátorok