CALL

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » C » CALL

Syntax: CALL Prozedurname ([Parameterliste])
Typ: Anweisung
Kategorie: Programmablauf

CALL ruft eine Prozedur (SUB oder FUNCTION) auf. Bei einer FUNCTION wird der Rückgabewert ignoriert.

Achtung: CALL existiert nur noch aus Gründen der Rückwärtskompatibilität. Der Befehl kann nur in den Dialektformen -lang fblite, -lang deprecated und -lang qb verwendet werden. Es ist besser, CALL wegzulassen und die Prozedur direkt aufzurufen.

Die folgenden Beispiele funktionieren nicht in der Dialektform -lang fb

Beispiel 1:

#lang "fblite"

Declare Sub foobar(ByVal x As Integer, ByVal y As Integer)
Declare Function wert As Integer
Call foobar(35, 42)
Call wert   ' Funktion aufrufen, aber Rückgabewert ignorieren
Sleep

Sub foobar(ByVal x As Integer, ByVal y As Integer)
  Print x; y
End Sub

Function wert As Integer
  wert = 42
End Function

Beide Male hätte CALL weggelassen werden können; die 5. und 6. Zeile des Programms lauteten dann:

foobar(35, 42)
wert

Damit wäre das Programm auch mit -lang fb compilierbar.

Beispiel 2: Prozeduraufruf vor der Deklaration

#lang "qb"

Call mysub(15, 16)  ' "mysub" ist im Code zuvor noch nicht aufgetreten

Sub mysub(ByRef a As Integer, ByRef b As Integer)
  Print a, b
End Sub

Hinweis: Dieser Code funktioniert nur in -lang qb. Solange die Prozedur nicht deklariert wurde, findet außerdem keine Typ-Überprüfung der übergebenen Parameter statt. Der Programmierer muss selbst sicherstellen, dass es sich um die korrekten Typen handelt.

Unterschiede zu QB:
CALL erstellt in QB eine Kopie aller Parameter. Wenn die Parameter innerhalb der aufgerufenen Prozedur verändert werden, hat dies keine Auswirkung auf den Wert der Parameter außerhalb der Prozedur.

Unterschiede unter den FB-Dialektformen:

Siehe auch:
DECLARE, SUB, FUNCTION, Prozeduren