8.10. Unterprogramme

8.10.1. Aufruf

Abbildung 8.50. Unterprogramm aufrufen
images/callsubcmd.png

Dieses Modul ruft ein zuvor deklariertes Unterprogramm mit Übergabeparametern auf. Wählen Sie im Dropdown-Menü das entsprechende Unterprogramm aus. Tragen Sie in der Zeile Variable / Wert die Parameter ein, die beim Aufruf übergeben werden sollen.

8.10.2. Exit Procedure

Verlässt das aktuelle Unterprogramm und springt zurück zu der Befehlszeile, von der der Aufruf kam. Dieser Befehl benötigt kein GUI-Modul.

8.10.3. Neu deklarieren

images/proc-define.png

Prozeduren dienen der Organisation der Messprogramme. Sie fassen Programmteile unter einem Namen zusammen. Neben dem Namen der Prozedur wird hier auch Anzahl und Typ der Übergabeparameter festgelegt. Prozeduren können nicht in den Units Main, Initialization, Finalization und Globale Projektvariablen deklariert werden. Verwenden Sie ggf. eine andere Unit oder erzeugen Sie eine neue Unit (Menü Datei/neue Unit). Beim Schließen des Dialogs mit OK werden die Skriptzeilen procedure name(); und end procedure; erzeugt. Fügen Sie beliebige Befehlszeilen dazwischen ein; diese werden dann als beim Aufruf der Prozedur ausgeführt.

Anmerkung

Es darf kein Code ausserhalb von Prozeduren eingefügt werden. Selbst der in den Units Main, Init und Finalisierung eingefügte Code wird intern in Prozeduren verpackt. Ausserdem können Prozeduren nicht geschachtelt werden, d.h. es kann keine Prozedur in einer anderen Prozedur definiert werden.

Einer Prozedur können beliebig viele Parameter übergeben werden. Parameter werden innerhalb der Klammern hinter dem Prozedurnamen angegeben. Eine Parameterdefinition ist immer der Form Name : Typ. Mehrere Parameter werden voneinander durch Semikolons getrennt. Die Parameter sind nur in der Prozedur definiert und können innerhalb dieser wie Variablen angesprochen werden.

// eine Prozedur mit einem Parameter namens 'Bar' vom Typ 'String'
procedure Foo(Bar : String)
end procedure;

// eine Prozedur mit zwei Parametern (durch Semikolon getrennt)
procedure Foo(Bar : String; Baz : Number);
end procedure;

Anmerkung

Parameternamen verdecken gleichnamige globale Variablen. Definieren Sie beispielsweise einen Parameter messwert so haben Sie innerhalb der Prozedur keinen Zugriff auf die globale Variable messwert (und damit auch nicht auf die Messergebnisse der ADX-Karte).

Neben Parametern können in einer Prozedur auch lokale Variablen definiert werden. Diese werden — wie Parameter — wie Variablen verwendet. Auch sie verdecken gleichnamige globale Variablen. Der Unterschied zu Parametern ist jedoch, dass lokale Variablen nicht vom Benutzer übergeben werden. Ihr Wert ist bei Aufruf der Prozedur undefiniert, das heisst, ihnen muss am Anfang der Prozedur ein Wert zugewiesen werden.

Lokale Variablen können momentan nur über den Einstellungsdialog einer Prozedurdefinition editiert werden.