Dim Statement

Määritellään muuttuja tai taulukko.

Jos muuttujat on erotettu pilkuilla (esimerkiksi, DIM sPar1, sPar2, sPar3 AS STRING), vain variant-muuttujia voidaan määritellä. Kullekin muuttujalle käytetään omaa määrittelyriviä.


Dim sPar1 As String
Dim sPar2 As String
Dim sPar3 As String

Dim määrittelee eli esittelee paikalliset muuttujat aliohjelmissa. Globaalit muuttujat määritellään PUBLIC- tai PRIVATE-lauseella.

Syntaksi:


[ReDim]Dim muuttujanimi_1 [(alku1 To loppu1)] [As tyyppi_1][, muuttujanimi_2 [(alku2 To loppu2)] [As tyyppi_2][,...]]

Parametrit:

Muuttujanimi_n: mikä tahansa muuttujan tai taulukon nimi.

Alku, loppu: numeerisia arvoja tai vakioita, jotka määrittelevät alkioiden määrän (alkioiden lukumäärä=(loppu-alku)+1) ja indeksivälin.

Alku ja loppu voivat olla numeerisia lausekkeita, jos ReDim on käytössä proseduuritasolla.

Tyyppi_n: avainsana, joka määrittää muuttujan tietotyypin.

Avainsana: oletusmuuttujatyyppi

Bool: Boolen muuttuja (True, False)

Currency: valuuttamuuttuja (valuutta 4 desimaalilla)

Date: päivämäärämuuttuja

Double: kaksoistarkkuuden liukulukumuuttuja (itseisarvot 1,79769313486232 x 10E308 ... 4,94065645841247 x 10E-324)

Integer: kokonaislukumuuttuja (-32768 ... 32767)

Long: pitkä kokonaislukumuuttuja (-2 147 483 648 ... 2 147 483 647)

Object: objektimuuttuja (Tämä muuttaja voidaan vasta tämän esittelyn jälkeen määritellä Set-lauseella!)

Single: perustarkkuuden liukulukumuuttuja (itseisarvot 3,402823 x 10E38 ... 1,401298 x 10E-45).

String: Merkkijonomuuttuja, jossa on enintään 64,000 ASCII-merkkiä.

[Variant]: variant-yleismuuttujatyyppi (pitää sisällään kaikki tyypit, määritelmällisesti). Jos avainsanaa ei ole määritelty, muuttujat määritellään oletuksellisesti variant-tyyppisiksi, ellei lauseita DefBool ... DefVar ole käytetty.

LibreOffice Basicissa muuttujille ei ole pakko tehdä nimenomaista esittelyä. Taulukot on kuitenkin määriteltävä. Muuttuja voidaan määritellä Dim-lauseella. Muuttujat erotellaan pilkuin, jos niitä on useita samassa lauseessa. Tyypin määrittelemiseksi kirjoitetaan nimen perään tyypinmäärittävä kirjain tai käytetään vastaavaa avainsanaa.

LibreOffice Basic tukee yksi- ja moniulotteisia taulukkoja, jotka määritellään tietyn tyyppisiksi. Taulukkomuuttujat ovat käytännöllisiä, mikäli ohjelmassa on luetteloita tai aineistotaulukoita, joita pitää muokata. Taulukon etuna on se, että yksittäiseen alkioon voidaan viitata indeksillä, joka voidaan tuottaa numeerisesta lausekkeesta tai muuttujasta.

Taulukot määritellään Dim-lauseella. Taulukon indeksivälin määrittämiseen on kaksi tapaa:

DIM text(20) as String REM 21 alkiota, jotka on numeroitu 0 ... 20

DIM text(5 to 25) as String REM 21 alkiota, jotka on numeroitu 5 ... 25

DIM text(-15 to 5) as String REM 21 alkiota (indekseissä on mukana 0)

REM numeroitu -15 ... 5

Kaksiulotteinen taulukko

DIM text(20,2) as String REM 63 alkiota; 1. tasolla 0 ... 20, 2. tasolla 0 ... 20 ja 3. tasolla 0 ... 20.

Taulukko voidaan määritellä dynaamisesti, jos ReDim-lause määrittelee ulottuvuuksien määrän aliohjelmassa tai funktiossa, joka sisältää taulukon. Yleensä taulukon ulottuvuudet voi määritellä vain kerran eikä niitä voi muuttaa. Aliohjelmassa taulukko voidaan määritellä ReDim-lauseella. Ulottuvuudet voidaan määritellä vain numeerisin lausekkein. Tämä varmistaa, ettei taulukot ole tarpeettoman suuret.

Esimerkki:


Sub ExampleDim1
Dim sVar As String
Dim iVar As Integer
    sVar = "Office"
End Sub
 
Sub ExampleDim2
Kaksiulotteinen taulukko
Dim stext(20,2) As String
Const sDim as String = " Dimension:"
For i = 0 To 20
    For ii = 0 To 2
        stext(i,ii) = str(i) & sDim & str(ii)
    Next ii
Next i
For i = 0 To 20
    For ii = 0 To 2
        MsgBox stext(i,ii)
    Next ii
Next i
End Sub