IBM Lotus Symphony
|
Im Folgenden finden Sie eine kurze Einführung in die Verwendung von Prozeduren und Funktionen in Lotus® Symphony™ Basic.
![]() |
Wenn Sie ein neues Modul erstellen, fügt Lotus Symphony Basic automatisch eine SUB namens "Main" ein. Dieser Standardname hat nichts mit der Reihenfolge oder dem Ausgangspunkt eines Lotus Symphony Basic-Projekts zu tun. Sie können diese SUB auch problemlos umbenennen. |
Prozeduren (SUB-Blöcke) und Funktionen (FUNCTION-Blöcke) helfen Ihnen dabei, einen strukturierten Überblick über Ihr Programm zu behalten, indem Sie das Programm in logische Abschnitte aufteilen.
Ein Nutzen von Prozeduren und Funktionen ist beispielsweise die Möglichkeit, einmal entwickelten Programmcode für bestimmte Aufgabenkomponenten in anderen Projekten wieder zu verwenden.
Sie können sowohl an Prozeduren als auch an Funktionen Variablen übergeben. Die SUB- oder FUNCTION-Einheit muss jedoch so deklariert werden, dass sie Parameter erwartet:
SUB SubName( Parameter1 As Type, Parameter2 As Type,...)
Programmcode
END SUB
Die SUB wird mit folgender Syntax aufgerufen:
SubName(Wert1, Wert2,...)
Die an eine SUB übergebenen Parameter müssen zu den in der SUB-Deklaration definierten Parametern passen.
Das Gleiche gilt für die Verwendung von FUNCTION, nur mit dem Unterschied, dass Funktionen ein Funktionsergebnis zurückliefern. Sie bestimmen das Funktionsergebnis, indem Sie den Wert, den die Funktion zurückliefern soll, dem Funktionsnamen zuweisen:
FUNCTION FunctionName(Parameter1 as Type, Parameter2 as Type,...) as Type
Programmcode
FunctionName=Result
End Function
Die FUNCTION wird mit folgender Syntax aufgerufen:
Variable=FunctionName(Parameter1, Parameter2,...)
![]() |
Sie können auch den vollständig qualifizierten Namen zum Aufrufen einer Prozedur oder Funktion verwenden: Library.Module.Macro(). Wenn Sie z. B. das Makro "Autotext" aus der Bibliothek "Gimmicks" aufrufen möchten, verwenden Sie den folgenden Befehl: Gimmicks.AutoText.Main() |
Sie können Parameter entweder als Referenz oder als Wert an eine SUB oder FUNCTION übergeben. Falls nicht anders festgelegt, werden Parameter standardmäßig immer als Referenz übergeben. Dies bedeutet, dass die SUB bzw. FUNCTION den Parameter erhält und seinen Wert lesen und ändern kann.
Wenn Sie einen Parameter als Wert übergeben möchten, fügen Sie beim Deklarieren der SUB oder FUNCTION das Schlüsselwort "ByVal" vor dem Parameter ein, z. B.:
Result = Function( ByVal Parameter)
In diesem Fall kann die Funktion den ursprünglichen Inhalt des Parameters nicht ändern, da sie nur den Wert erhält, nicht jedoch den Parameter selbst.
Wird eine Variable innerhalb einer SUB oder einer FUNCTION definiert, bleibt sie dort nur so lange gültig, bis die Prozedur beendet wird. Man sagt, die Variable wurde "lokal" definiert. In vielen Fällen ist es aber notwendig, Variablen zu definieren, sodass sie in allen Prozeduren gültig sind. Teilweise ist es sogar nötig, dass Variablen in allen Modulen aller Bibliotheken gültig sind. Oder aber es wird gewünscht, dass Variablen erhalten bleiben, selbst wenn eine SUB oder FUNCTION beendet wurde.
GLOBAL VarName As TYPENAME
Diese Variable bleibt während der gesamten Lotus Symphony-Sitzung gültig.
PUBLIC VarName As TYPENAME
Die Variable hat in allen Modulen Gültigkeit.
PRIVATE VarName As TYPENAME
Die Variable ist nur in diesem Modul gültig.
DIM VarName as TYPENAME
Die Variable ist nur in diesem Modul gültig.
Erzwingen Sie für private Variablen, dass diese modulübergreifend privat sind, indem Sie Folgendes festlegen: CompatibilityMode(true).
REM ***** Module1 *****
Private myText As String
Sub initMyText
myText = "Hallo"
print "in module1 : ", myText
End Sub
REM ***** Module2 *****
'Option Explicit
Sub demoBug
CompatibilityMode( true )
initMyText
' Gibt jetzt leere Zeichenfolge zurück
' (oder meldet Fehler für Option Explicit)
print "Now in module2 : ", myText
End Sub
STATIC VarName As TYPENAME
Die Variable behält ihren Wert bis zum nächsten Einstieg in die FUNCTION oder SUB. Die Deklaration muss innerhalb einer SUB oder FUNCTION stehen.
Um den Typ der Rückgabevariablen einer Funktion zu definieren, hängen Sie wie bei einer Variablen ein Typendeklarationszeichen an den Funktionsnamen an oder geben den Typ am Ende der Parameterliste durch "As" und das entsprechende Schlüsselwort an. Beispiel:
Function WordCount(WordText as String) as Integer