Procédures Function

Une procédure Function est une série d'instructions BSL encadrées par les instructions Function et End Function. Elle est semblable à une procédure Sub mais peut également renvoyer une valeur. Une procédure Function peut accepter des arguments (constantes, variables ou expressions qui lui sont transmises par une procédure d'appel). Si une procédure Function n'a pas d'argument, son instruction Function doit inclure un ensemble de parenthèses vides. Une fonction renvoie une valeur en affectant une valeur à son nom dans une ou plusieurs instructions de la procédure. Le type de valeur renvoyé est toujours une variante.

Dans l'exemple suivant, la fonction Celsius calcule les degrés Celsius à partir des degrés Fahrenheit. Lorsque la fonction est appelée à partir de la procédure Sub ConvertTemp, une variable contenant la valeur de l'argument est transmise à la fonction. Le résultat du calcul est renvoyé à la procédure d'appel et affiché dans une zone de message.

Les exemples suivants illustrent l'utilisation des procédures Function :

Exemple 1 :

Function Celsius(fDegrees)
           Celsius = (fDegrees - 32) * 5 / 9
        End Function
        valCelcius = Celsius(90)

Exemple 2 :

Function AddNumbers(a, b)
        AddNumbers = a + b   ' The function returns the sum of a and b.
End Function

Sub ShowAddition()
        Dim result
        result = AddNumbers(5, 10)   ' Calls the function and stores the result.
        'Here result is 15
End Sub
Call ShowAddition()

Exemple 3 :

Function CalculateRectangleArea(length, width)
        If length <= 0 Or width <= 0 Then
                CalculateRectangleArea = "Invalid dimensions"   ' Returns an error message for invalid dimensions.
        Else
                        CalculateRectangleArea = length * width   ' Returns the area of the rectangle.
        End If
End Function

Sub ShowRectangleArea()
        Dim length, width, area
        length = 4
        width = 3
        area = CalculateRectangleArea(length, width)   ' Calls the function and stores the result.
        'The area of the rectangle is 12
End Sub
Call ShowRectangleArea()