Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - SUB

Referenz-Navigation

 

Syntax:

[{PRIVATE | PUBLIC }] SUB Subname [Aufrufkonvention] [ALIAS "AliasName"] _
  [OVERLOAD] ([Parameterliste]) [{CONSTRUCTOR | DESTRUCTOR}] [STATIC] [EXPORT]
   ' Anweisungen
END SUB

Typ: Prozedur
Kategorie: Programmablauf

Anmerkung zur Syntax: Unterstriche (_) am Zeilenende werden von FreeBASIC so interpretiert, als wäre die Zeile nicht unterbrochen; dies dient nur der besseren Übersichtlichkeit und hat letztendlich keine Auswirkungen auf die Programmausführung.

SUB definiert ein BefehlsreferenzeintragUnterprogramm. Ein Unterprogramm besteht aus normalen Anweisungen und folgt denselben Regeln wie der Code auf Modulebene (dem Code außerhalb eines Unterprogramms).

Um ein Unterprogramm aufzurufen, bevor es im Quellcode definiert wurde, muss es zuvor deklariert werden:

DECLARE SUB Subname [Aufrufkonvention] [OVERLOAD] [[LIB "DLLName"] _
      ALIAS "AliasName"] [ ( Parameterliste ) ] [{CONSTRUCTOR | DESTRUCTOR}]

Siehe dazu den Referenzeintrag BefehlsreferenzeintragDECLARE

Der SUB-Code kann aus jeder Programmsituation heraus aufgerufen werden, d. h. beim Aufruf der SUB wird ihr Code ausgeführt. Dadurch ist es möglich, ein Programm übersichtlich zu gestalten, da immer wiederkehrende Aufgaben in eine SUB 'ausgelagert' und mittels nur einer einzigen Programmzeile ausgeführt werden können.

Parameterübergabe
Der vom Unterprogramm ausgeführte Code kann von übergebenen Parametern abhängig sein. Die Parameterliste besitzt die Form

[ {BYVAL | BYREF } ] [Parameter1] AS [CONST] Typ [= Wert]   [, _
   [ {BYVAL | BYREF } ] [Parameter2] AS [CONST] Typ [= Wert] ] [, ...]

Der Datentyp muss bei den Parametern immer angegeben werden.
Siehe auch BefehlsreferenzeintragParameterübergabe.

Aufgerufen wird ein Unterprogramm über seinen Bezeichner. Fügen Sie in Ihrem Code einfach eine Zeile mit dem Bezeichner der SUB ein, so als wäre dieser Bezeichner eine Anweisung. Ein solcher Aufruf darf an jeder Stelle im Programm erfolgen, auch wenn sich das Programm bereits auf Prozedurebene (also innerhalb einer SUB, BefehlsreferenzeintragFUNCTION, BefehlsreferenzeintragPROPERTY oder einem BefehlsreferenzeintragOPERATOR) befindet.

Hinweis: Früher wurde der Befehl BefehlsreferenzeintragCALL verwendet, um eine SUB aufzurufen. Dieser Befehl ist aber in der Dialektform Befehlsreferenzeintrag-lang fb (Standard) nicht mehr zulässig.

Die im Hauptprogramm verwendeten Variablen sind in Prozeduren nicht verfügbar. Um auf sie dennoch zuzugreifen, müssen sie zuerst in der Parameterliste übergeben werden. Bei einer SUB (oder Prozeduren allgemein) handelt es sich um BefehlsreferenzeintragSCOPE-Blöcke. Das bedeutet, dass Variablen, die auf SUB-Ebene dimensioniert werden, auf Modulebene nicht verfügbar sind. Siehe auch BefehlsreferenzeintragGültigkeitsbereich von Variablen.

Beispiel: farbigen Text mittels einer SUB ausgeben:

DECLARE SUB colortext (txt AS STRING, clr AS INTEGER)
DIM i AS INTEGER

colortext "blue" , 1
colortext "green", 2
colortext "red"  , 4
PRINT

FOR i = 1 TO 15
  colortext "COLOR " & i, i
NEXT
SLEEP

'--------------------------------------------------'

SUB colortext (txt AS STRING, clr AS INTEGER)
  COLOR clr
  PRINT txt
END SUB

Unterschiede zu QB:

Unterschiede zu früheren Versionen von FreeBASIC:

Unterschiede unter den FB-Dialektformen:

Siehe auch:
BefehlsreferenzeintragFUNCTION, BefehlsreferenzeintragPROPERTY, BefehlsreferenzeintragDECLARE, BefehlsreferenzeintragOVERLOAD, BefehlsreferenzeintragSTATIC (Klausel), BefehlsreferenzeintragEXIT, BefehlsreferenzeintragEND, BefehlsreferenzeintragBYVAL, BefehlsreferenzeintragBYREF, BefehlsreferenzeintragSHARED, BefehlsreferenzeintragPRIVATE (Klausel), BefehlsreferenzeintragPUBLIC (Klausel), BefehlsreferenzeintragOPTION, BefehlsreferenzeintragCONSTRUCTOR, BefehlsreferenzeintragDESTRUCTOR (Module), BefehlsreferenzeintragProzeduren, BefehlsreferenzeintragParameterübergabe


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 05.08.2007 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 27.12.2012 von Redakteurnemored gespeichert.
  Versionen Versionen