Referenz - 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:
- In der Dialektform -lang fb (Standard) existiert CALL nicht.
- Der Aufruf noch nicht deklarierter SUBs ist nur in der Dialektform -lang qb möglich.
Siehe auch:
DECLARE, SUB, FUNCTION, Prozeduren
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|
|