FUNCTION (Comando)

Identifica el comienzo de una definición de función definida por el usuario.

FUNCTION FunctionName 
   [LPARAMETERS parameter1[,parameter2},...]
   Commands 
   [RETURN [eExpression]]
ENDFUNC

O bien:

FUNCTION FunctionName([parameter1[,parameter2},...])
   Commands 
   [RETURN [eExpression]]
ENDFUNC

Parámetros

  • FunctionName
    En Visual FoxPro, los nombres de función pueden tener una longitud máxima de 254 caracteres.

    Para distinguir un archivo de programa con más de 10 caracteres de una función que comienza por los mismos 10 caracteres en ambos productos, entrecomille el nombre del archivo o incluya una extensión después del nombre del archivo de programa.

Observaciones

En muchos programas, se repiten con frecuencia ciertas rutinas. Al definir las rutinas utilizadas comúnmente como funciones separadas se reduce el tamaño y la complejidad del programa y se facilita el mantenimiento del programa.

FUNCTION FunctionName es una instrucción dentro de un programa. Designa el comienzo de una función en un programa e identifica la función por su nombre.

FUNCTION FunctionName va seguido de una serie de comandos de Visual FoxPro que constituyen la función. Puede incluir RETURN en cualquier parte de la función para devolver el control al programa que llama o a otro programa, así como para definir un valor devuelto por la función definida por el usuario. Si no incluye un comando RETURN, se ejecutará un RETURN implícito cuando salga de la función. Si el comando RETURN no incluye el valor devuelto (o si se ejecuta un RETURN implícito), Visual FoxPro asigna .T. (Verdadero) como el valor devuelto.

La función termina con el comando ENDFUNC. Este comando es opcional; la función se termina cuando encuentra otro comando FUNCTION, un comando PROCEDURE o el final del archivo de programa.

Puede colocar comentarios en la misma línea después de FUNCTION y ENDFUNC. Estos comentarios se pasarán por alto durante la compilación y la ejecución del programa.

No puede tener código de programa ejecutable normal incluido en un archivo de programa después de funciones definidas por el usuario; sólo las funciones definidas por el usuario, los procedimientos y las definiciones de clase pueden ir a continuación del primer comando FUNCTION o PROCEDURE en el archivo.

Cuando se ejecute una función con DO, Visual FoxPro buscará la función en un orden específico:

  1. Visual FoxPro buscará en el archivo que contiene el comando DO.
  2. Si la función no se encuentra allí, Visual FoxPro buscará en los archivos de procedimientos abiertos. Los archivos de procedimientos se abren con SET PROCEDURE.
  3. Si la función no se encuentra en un archivo de procedimiento abierto, Visual FoxPro buscará los programas en la cadena de ejecución. Los archivos de programa se buscarán a partir del archivo ejecutado más recientemente hasta el primer programa que se ejecutó.
  4. Si sigue sin encontrarse la función, Visual FoxPro buscará un programa autónomo. Si se encuentra un nombre de archivo de programa que coincida, se ejecutará el programa. De lo contrario, Visual FoxPro generará un mensaje de error.

Incluya la cláusula IN en DO para ejecutar una función en un archivo específico.

Los parámetros se pasan a las funciones, de forma predeterminada, por valor. Para obtener información acerca de cómo pasar parámetros a funciones por referencia, vea SET UDFPARMS. Se puede pasar a una función un máximo de 27 parámetros. Los parámetros se pueden pasar a una función al incluir la instrucción PARAMETERS o LPARAMETERS en la función, o al colocar una lista de parámetros inmediatamente después de FUNCTION FunctionName. Ponga la lista de parámetros entre paréntesis y separe los parámetros con comas.

Para obtener información acerca del uso del comando FUNCTION en la creación de clases, vea DEFINE CLASS y Exigir información de tipo en código de clases, objetos y variables, en la Ayuda.

Ejemplo

En este ejemplo se crea una clase de objetos personalizada llamada Hello y se agrega un método de función llamado SayHello. El método SayHello devuelve la cadena de caracteres "Hello World" que muestra la función MESSAGEBOX. Nota: El código de la definición de clase se coloca después del código de programa que crea una instancia del objeto.

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

Vea también

LPARAMETERS | PARAMETERS | PARAMETERS( ) | PRIVATE | PROCEDURE | PUBLIC | RETURN | SET PROCEDURE | SET UDFPARMS