Creates a user-defined function in a program file. There are two versions of the syntax.
FUNCTION FunctionName [ LPARAMETERS parameter1 [ ,parameter2 ] , ... ] Commands [ RETURN [ eExpression ] ] [ENDFUNC]
FUNCTION FunctionName( [ parameter1 [ AS para1type ][ ,parameter2 [ AS para2type ] ],...] ) [ AS returntype ] Commands [ RETURN [ eExpression ] ] [ENDFUNC]
- FUNCTION FunctionName
Designates the beginning of a user-defined function and specifies the name of the function. FunctionName can contain up to 254 characters.
- [ LPARAMETERS parameter1 [, parameter2] , ... ]
Assigns data from the calling program to local variables or arrays. You can also use the PARAMETERS keyword instead of LPARAMETERS to accept privately scoped parameters. You can pass a maximum of 26 parameters to a function.
For more information, seeand .
- ( [ parameter1[ AS para1type][ , parameter2[ AS para2type] ],...] )
Assigns data from the calling program to local variables or arrays. You can use the AS para1type clause to specify the data type of the variable.
Including the parameters inside parentheses (()) immediately following the function name indicates that the parameters are locally scoped to the function.
- [ AS returntype]
Specifies the data type of the return value.
You can use the AS clause to implement strong typing. For more information, see.
Specifies the Visual FoxPro commands to execute when executing the function.
- [ RETURN [ eExpression] ]
Returns control to the calling program or to another program. eExpression can specify a return value.
You can include the RETURN command anywhere in the function to return control to the calling program or to another program and to define a value returned by the function. If you do not include the RETURN command, Visual FoxPro executes an implicit RETURN automatically when the function quits. If the RETURN command does not include a return value or if an implicit RETURN is executed, Visual FoxPro assigns True (.T.) as the return value. For more information, see.
- [ ENDFUNC ]
Indicates the end of the FUNCTION structure.
The ENDFUNC keyword is optional because the function quits when it encounters another FUNCTION command, a PROCEDURE command, or the end of the program file. You cannot include normal executable program code following user-defined functions in a program file. Only other user-defined functions, procedures, and class definitions can follow the first FUNCTION or PROCEDURE command in the file.
By default, parameters are passed to functions by value. For information about passing parameters to functions by reference, see.
When you issue the DO command with a function name, Visual FoxPro searches for the function in the following order:
The file containing the DO command.
Procedure files opened with SET PROCEDURE.
For more information, see.
Program files in the execution chain.
Visual FoxPro searches program files in order from the most recently executed program to the first program executed.
A standalone program file.
If a matching program file is found, Visual FoxPro executes the program. Otherwise, Visual FoxPro generates an error message.
To execute a function in a specific file, include the IN clause in the DO command.
For information about using the FUNCTION command when creating classes, see.
This example creates a custom object class called Hello and adds a function method called SayHello. The SayHello method returns the character string "Hello World", which is displayed by the MESSAGEBOX function. Note: The class definition code is placed after the program code that instantiates the object.
Local oHello oHello=CREATEOBJECT("Hello") =MESSAGEBOX(oHello.SayHello(),48) RELEASE oHello * Class definition code DEFINE CLASS Hello AS CUSTOM FUNCTION SayHello RETURN "Hello World" ENDFUNC ENDDEFINE