A LotusScript programozási nyelv

Adattípusok

Skalár adattípusok

Boolean: 2 bájtos, csak False vagy True értéket vehet fel. Ezek rendre a 0 és a -1 értéket tartalmazó nevesített konstansok.

Byte: 1 bájtos előjel nélküli egész szám. Értékkészlete 0-tól 255-ig terjed.

Integer: 2 bájtos előjes egész szám. Értékkészlete -32768-tól 32767-ig terjed.

Long: 4 bájtos előjes egész szám.

Single: Egyszeres pontosságú előjeles lebegőpontos szám 4 bájton ábrázolva.

Double: Kétszeres pontosságú előjeles lebegőpontos szám 8 bájton ábrázolva.

Currency: Rögzített tizedespontú szám, melyet leggyakrabban a pénzügyi számításokban használnak. Tizenöt számjegyű lehet az egészrész, a törtrész 4 számjegyű. 8 bájton tárolódik.

String: Unicode kódolású karakterek sorozata. Minden egyes karakter ábrázolásához 2 bájt szükséges. Alapértelmezésként változó hosszúságú, de deklarálhatunk fix hosszúságú stringet is. Ezt a következő képpen tesszük meg:

Dim fix_string As String*25
A deklarációs utasítás hatására a string által tárolt karakterek maximális száma 25. Ha hosszabb karaktersorozatot tárolnánk benne, akkor egyszerűen elhagyja annak végét. A rövidebb karaktersorozatot pedig space karakterekkel tölti fel.

Összetett adattípusok

Array: A tömb azonos típusú elemek halmaza, ahol minden egyes elem egész számok egy sorozatán (indexek) keresztül érhető el. A LotusScriptben a tömbök maximálisan 8 dimenziósak lehetnek, és az elemek -32,768-től 32,767-ig indexelhetőek.

A LotusScriptben lehetőségünk van egy vagy több dimenziós, fix vagy változó méretű tömb használatára. Először kezdjük a legegyszerűbb esettel, nézzük meg, hogyan deklarálhatunk fix méretű tömböket:

Dim tomb(n) As Integer ' egy n+1 elemű egy dimenziós tömb deklarálása, indexek: 0..n
Dim tomb(n To m) As Integer ' egy m-n+1 elemű egy dimenziós tömb deklarálása, indexek: n..m
Látható, hogy meg lehet adni a deklarálásnál az indexek felső határát, és ekkor az alsó határ alapértelmezetten 0 lesz, illetve meg lehet adni az alsó és felső határt is. Az alapértelmezett alsó határ az Option Base utasítással a modul deklarációs részében megváltoztatható.

Mivel már ismerjük az indexek megadási módját ezért a több dimenziós tömb létrehozása már igen egyszerű. Csupán az egyes indexek megadását vesszővel kell elválasztani egymástól, az alábbi módon:

Dim tomb(n, m) As Integer ' egy (n+1) * (m+1) elemű két dimenziós tömb deklarálása, indexek: 0..n, 0..m
Dim tomb(n To m, f To g) As Integer ' egy (m-n+1) * (g-f+1) elemű két dimenziós tömb deklarálása, indexek: n..m, f..g
Dim tomb(n, f To g) As Integer ' egy (n+1) * (g-f+1) elemű két dimenziós tömb deklarálása, indexek: 0..m, f..g
Mint azt már említettük, egy tömb maximálisan 8 dimenziós lehet a LotusScriptben.

A fix méretű tömbök után nézzük meg azokat a tömböket, melyeknek futási időben változtatható a méretük.Deklarálásuk hasonló a fix méretű tömbökéhez, de a dimenziós listát üresen kell hagyni (pl. Dim tomb() ).A későbbiekben a Redim utasítással adhatjuk meg a dimenziókat illetve az elemek számát. A Redim utasítással változtathatjuk a meglévő dimenziók határait, de adatvesztés nélkül csak a felsőt. Alapértelmezésben a dimenziók számának változtatása adatvesztéssel jár, de a Preserve kulcsszó használatával elérhetjük, hogy megmaradjanak az adataink. Ekkor azonban csak az utolsó dimenzió felső határa módosítható, a többinél hibát kapunk.

A tömbök indexhatárának lekérdezésére a nyelv az Ubound és LBound függvényeket bocsátja a programozók rendelkezésére. Ezek használatával a tömb adott indexének alsó és felső határa kérdezhető le.

Az Erase utasítással lehetőségünkben áll a dinamikus tömb által lefoglalt tárterületet felszabadítani. Amennyiben egy nem dinamikus tömbre alkalmazzuk az utasítást, abban az esetben a tömb elemi kinullázódnak, vagyis nulla, üres string, EMPTY vagy NOTHING értéket vesznek fel, az elem típusától függően.

List: A lista azonos típusú elemek egy dimenziós gyűjteménye, ahol minden egyes elem az egyedi nevén keresztül érhető el. A lista mérete dinamikusan változik a futási idő alatt. Automatikusan növekszik mérete ha új elem kerül bele, és automatikusan csökken mérete ha egy elemet törlünk belőlle.

Nézzünk egy példát a listák használatára:

' String típusú elemeket tartalmazó lista deklarálása
Dim myList List As String
' Elemek elhelyezése a listában
myList("A1234") = "Andrea"
myList("A2345") = "Vera"
myList("A3456") = "Isabel"
' "Vera" kiírása a kimenetre
Print myList("A2345")

Az elemeket azonosító egyedi karaktersorozat kis és nagybetű érzékenysége tetszés szerint állítható a modul részben az Option Compare { Case | NoCase | Binary } utasítással. Amennyiben Case vagy Binary értéket használunk, akkor például a myList("elsoElem") és a myList("ElsoElem") két különböző elemet azonosít, míg a NoCase használatával ezek ugyanazt az elemet hivatkozzák.

Az elemek törlése az Erase utasítással történik. Amennyiben Erase listaNev(listaElemNev) formában használjuk, akkor a listaElemNev nevű elemet törli a listából. Az Erase listaNev hatására a lista összes eleme törlődik. Természetesen mindkét esetben a törölt elemek által foglalt tárterület felszabadul.

Variant: A Variant egy speciális adattípus. Az ilyen típusú változók a következő típusú értékek mindegyikét fel tudják venni értékül: skalár (Boolean, Byte, Integer, Long, Single, Double, Currency, String), dátum/idő, tömb vagy lista, objektum referencia, NULL érték, EMPTY érték.

A Variant típusú változók, deklaráláskor egy speciális EMPTY értéket vesznek fel. Ez az érték jelzi, hogy a változó értéke nem definiált, nincs megadva. Azt, hogy vajon EMPTY értéke van-e a változónak az IsEmpty függvénnyel tudjuk megállapítani.

Ennek a típusnak köszönhetően ha egy tömböt vagy listát Variant típusú elemekkel deklarálunk, akkor a tömb vagy lista elemei, gyakorlatilag eltérő típusúak is lehetnek.

Felhasználó által definiált adattípus: Azonos vagy különböző típusú elemek halmaza. Hasonló a Pascal beli record-hoz vagy a C beli struct-hoz. Maximális mérete 64 Kbájt lehet.

Felhasználó által definiált osztály: Mivel a LotusScript egy alapvetően objektumorientált nyelv, természetesen lehetőségünk van saját osztályok létrehozására.

Objektum referencia: Egy referencia OLE objektumra, beépített vagy saját osztály egy példányára, vagy egy Java objektumra.