Definition von Anwenderprozeduren
In OWBasic ist es möglich, Anwenderprozeduren zu definieren. Definitionen von Anwenderprozeduren und -Funktionen müssen immer am Anfang des Programmes stehen. Das Hauptprogrammes beginnt danach.
Eine Prozedur-Definition beginnt mit dem Prozedurkopf und endet mit dem Schlüsselwort ENDP.
PROC test A, B#, VAR C
<Anweisungen>
ENDP |
Der Prozedurkopf beginnt mit dem Schlüsselwort PROC, gefolgt vom Namen der Prozedur und der Parameterliste.
Die Parameterliste beschreibt die beim Aufruf zu übergebenden Parameter und gibt ihnen einen formalen Namen. Dieser Name wird innerhalb der Prozedur für den Parameter verwendet.
Innerhalb der Prozedur verwendete Variablen sind lokal, das heißt, außerhalb der Prozedur sind sie nicht vorhanden.
Für die Parameter können auch Default-Werte angegeben werden; wenn die Prozedur dann ohne diesen Parameter aufgerufen wird, wird automatisch vom Compiler der Default-Wert eingesetzt. Als Default-Werte sind für Variablenparameter auch Zeiger erlaubt.
Beispiel:
PROC clearscreen mode%=1
CLS mode
ENDP
PROC my_messagebox text$, caption$="", time#=0.0
msgbox text, caption, time
ENDP
PROC memory_size var size%=#NULL
IF &size THEN
FLASHSIZE size, dummy
ENDIF
ENDP |
Wird für einen Parameter ein Default-Wert angegeben, so darf nach diesem kein Parameter ohne Default-Wert folgen.
Der Aufruf von Anwenderprozeduren erfolgt wie bei normalen Prozeduren über den Namen. Es wird die vorhandene Anwenderprozedur gerufen, auch wenn eine gleichnamige interne Prozedur existiert.
Beispiel 1: Werteparameter
PROC printxy x,y: ! Prozedur zur Ausgabe von Koordinaten
PRINT "("; x; ","; y; ")"; : ! Formatierte Ausgabe
ENDP
x=5: y=7: ! Diese Variablen haben nichts mit den Parametern der Prozedur zu tun
printxy x-4,y+6: ! Beispiel-Aufruf |
Beispiel 2: Variablen-Parameter
PROC myinc VAR n: ! Prozedur analog zum eingebauten INC
n=n+1
ENDP
i=4
myinc i : ! Beispiel-Aufruf
PRINT i : ! es wird 5 ausgegeben |
Besonderer Beachtung bedürfen Felder als Prozedur-Parameter
|