IBM Lotus Symphony
|
Denne delen beskriver grunnleggende bruk av prosedyrer og funksjoner i Lotus Symphony Basic.
![]() |
Når du oppretter en ny modul, setter Lotus Symphony Basic automatisk inn en sub (subrutine) som har navnet "Main". Dette standardnavnet har ingenting å gjøre med rekkefølgen eller startpunktet til et Lotus Symphony Basic-prosjekt. Du kan også trygt endre navnet på denne subrutinen. |
Prosedyrer (SUBS) og funksjoner (FUNCTIONS) hjelper deg å opprettholde en strukturert oversikt ved å dele inn et program i logiske deler.
En fordel med prosedyrer og funksjoner er at når du først har utviklet en programkode som inneholder oppgavekomponenter, kan du bruke denne koden i andre prosjekter.
Variabler kan sendes både til prosedyrer og funksjoner. En SUB eller FUNCTION må deklareres for å forvente parametere:
SUB SubNavn( Parameter1 As Type, Parameter2 As Type,... )
Programkode
END SUB
En SUB blir kalt ved hjelp av følgende syntaks:
SubNavn(Verdi1, Verdi2,...)
Parameterne som sendes til en SUB, må stemme overens med de som er spesifisert i SUB-deklarasjonen.
Den samme prosessen gjelder for funksjoner (FUNCTION). I tillegg returnerer funksjoner alltid et funksjonsresultat. Resultatet av en funksjon defineres ved å tildele returverdien til funksjonsnavnet:
FUNCTION FunksjonsNavn(Parameter1 As Type, Parameter2 As Type,...) As Type
Programkode
FunksjonsNavn=Resultat
End Function
Funksjonen blir anropt ved hjelp av følgende syntaks:
Variabel=FunksjonsNavn(Parameter1, Parameter2,...)
![]() |
Du kan også bruke et fullstendig navn til å kalle opp en prosedyre eller funksjon: Library.Module.Macro() Hvis du for eksempel skal kalle opp Autotext-makroen fra Gimmicks-biblioteket, bruker du følgende kommando: Gimmicks.AutoText.Main() |
Parametere kan sendes til en SUB eller en FUNCTION enten ved referanse eller ved verdi. Med mindre noe annet er spesifisert, blir en parameter alltid sendt ved referanse. Det betyr at en SUB eller en FUNCTION mottar parameteren og kan lese og endre verdien for den.
Hvis du vil sende en parameter ved verdi, setter du inn nøkkelordet "ByVal" foran parameteren når du kaller opp en SUB eller FUNCTION, for eksempel:
Resultat = Funksjon(ByVal Parameter)
I dette tilfellet vil ikke originalinnholdet i parameteren bli endret av funksjonen siden den bare får verdien og ikke selve parameteren.
En variabel som er definert innenfor en SUB eller FUNCTION, er bare gyldig inntil prosedyren er avsluttet. Dette kalles en "lokal" variabel. Ofte har du bruk for at en variabel er gyldig i alle prosedyrer, i alle moduler i alle Biblioteker, eller etter at en SUB eller FUNCTION er avsluttet.
GLOBAL VarName As TYPENAME
Variabelen er gyldig så lenge Lotus Symphonysesjonen varer.
PUBLIC VarName As TYPENAME
Variabelen er gyldig i alle moduler.
PRIVATE VarName As TYPENAME
Variabelen er bare gyldig i denne modulen.
DIM VarName As TYPENAME
Variabelen er bare gyldig i denne modulen.
Definer private variabler som private for alle moduler ved å angi CompatibilityMode(true).
REM ***** Modul1 *****
Private myText As String
Sub initMyText
myText = "Hallo"
print "in module1 : ", myText
End Sub
REM ***** Modul2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Returnerer nå tom streng
' (eller det oppstår feil for Option Explicit)
print "Nå i modul2 : ", myText
End Sub
STATIC VarName As TYPENAME
Variabelen beholder sin verdi inntil neste gang funksjonen eller subrutinen blir angitt. Deklarasjonen må finnes innenfor en SUB eller en FUNKSJON.
På samme måte som med variabler kan du inkludere et typedeklarasjonstegn etter funksjonsnavnet, eller typen angitt med "As" og det tilsvarende nøkkelordet til slutt i parameterlisten, for å definere typen til funksjonens returverdi, for eksempel:
Function WordCount(WordText as String) as Integer