OWBasic

Gruppe CONTROL Start INTRO Alphabetischer Index

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

Gruppe CONTROL Start INTRO Alphabetischer Index