Referenz - SUBs
SUBs sind die einfachere Version einer Prozedur. Sie bestehen aus dem Prozedurheader, dem Programmcode und der abschließenden Zeile END SUB. Der Prozedurheader enthält die Liste der übergebenen Parameter (siehe Parameterübergabe). Die im Header übergebenen Variablen werden wie bereits dimensionierte Variablen behandelt; sie können innerhalb der SUB nicht redimensioniert werden. Eine Ausnahme bilden dynamische Arrays. Sie können zwar redimensioniert werden, ihr Datentyp (INTEGER, STRING, ...) bleibt aber gleich. Siehe SUB für weitere Details zum Prozedurheader.
Der Programmcode folgt denselben Regeln wie im Hauptmodul. Er darf fast alle Anweisungen enthalten und kann auch andere Prozeduren oder sogar sich selbst aufrufen (rekursiver Aufruf). Nicht verwendet werden dürfen die sogenannten 'nicht ausführbaren Anweisungen' wie DECLARE, COMMON usw. Auch Präprozessoren sind auf Prozedurebene erlaubt. Variablen, die auf Modulebene deklariert wurden, stehen in der Regel innerhalb der Prozedur nicht zur Verfügung; eine Ausnahme bilden die über SHARED, COMMON SHARED oder EXTERN deklarierten Variablen. Beachten Sie dazu den Gültigkeitsbereich von Variablen.
Die Zeile END SUB markiert das Ende der Prozedur. Code, der hinter der Zeile END SUB steht, wird wie Modulebenen-Code behandelt.
Bevor eine Prozedur verwendet werden kann, muss sie im Programm bekannt sein. Soll eine Prozedur verwendet werden, bevor sie im Quellcode definiert wurde, dann muss sie dem Programm vor der Verwendung mit DECLARE bekannt gemacht werden. CONSTRUCTOR- und DESTRUCTOR-SUBs die tatsächlich nur zu Beginn des Programms bzw. bei dessen Beendigung automatisch aufgerufen werden sollen, müssen nicht deklariert werden.
Eine SUB wird direkt über ihren Bezeichner aufgerufen. Die Parameterliste kann beim Aufruf in Klammern stehen oder ohne Klammern angegeben werden.
Beispiel:
DECLARE SUB colortext (txt AS STRING, clr AS INTEGER)
colortext "blue", 1 ' oder mit Klammern: colortext("blue", 1)
'-----------------'
SUB colortext (txt AS STRING, clr AS INTEGER)
#define a 10
COLOR clr
PRINT txt
END SUB
'-----------------'
FOR i AS INTEGER = 2 TO 15
colortext "COLOR " & STR(i), i
NEXT
PRINT a ' Fehler: a ist auf Modulebene nicht definiert
SLEEP
Siehe auch: FUNCTIONs
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|