IBM Lotus Symphony


Verwenden von Prozeduren und Funktionen

Im Folgenden finden Sie eine kurze Einführung in die Verwendung von Prozeduren und Funktionen in Lotus® Symphony™ Basic.

Symbol für Hinweis 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.

Variablen an Prozeduren (SUB) und Funktionen (FUNCTION) übergeben

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,...)

Symbol für Tipp 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()

Variablen als Wert oder Referenz übergeben

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.

Gültigkeitsbereich von Variablen

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.

Deklarieren von Variablen außerhalb einer SUB oder FUNCTION

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.

Beispiel für private Variablen

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

Speichern von Variableninhalten nach dem Verlassen einer SUB oder FUNCTION

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.

Rückgabewert-Typ einer FUNCTION festlegen

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


Produktfeedback | Zusätzliche Dokumentation | Marken