PROCEDURE (Comando)

Identifica el principio de un procedimiento en un archivo de programa.

PROCEDURE ProcedureName 
   [LPARAMETERS parameter1[,parameter2},...]
   Commands 
   [RETURN [eExpression]]
ENDFUNC

o

PROCEDURE ProcedureName([parameter1[,parameter2},...])
   Commands 
   [RETURN [eExpression]]
ENDFUNC

Parámetros

  • ProcedureName
    Especifica el nombre del procedimiento que se va a crear.

Observaciones

PROCEDURE es una instrucción dentro de un archivo de programa. Especifica el principio de cada procedimiento en un archivo de programa y define el nombre del procedimiento. Debe comenzar por una letra o un subrayado, y puede contener cualquier combinación de letras, números y subrayados.

En Visual FoxPro, los nombres de procedimiento pueden tener una longitud máxima de 254 caracteres.

Los comentarios se pueden colocar en la misma línea después de PROCEDURE y ENDPROC. Estos comentarios se pasarán por alto durante la compilación y la ejecución del programa.

La línea de comando PROCEDURE va seguida de un conjunto de comandos que componen el procedimiento. Puede incluir opcionalmente RETURN en cualquier parte del procedimiento para devolver el control al programa al que se llama o a otro programa, y para definir un valor devuelto por el procedimiento. 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.

El procedimiento termina con el comando ENDPROC. Este comando es opcional; el procedimiento termina cuando se encuentra otro comando PROCEDURE, un comando FUNCTION o el final del archivo de programa.

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

Cuando ejecuta un procedimiento con DO ProcedureName, Visual FoxPro buscará el procedimiento en un orden específico. Visual FoxPro busca:

  1. El archivo que contiene DO ProcedureName.
  2. La base de datos actual.
  3. Los archivos de procedimientos abiertos con SET PROCEDURE.
  4. Los programas en la cadena de ejecución. Los archivos de programa se buscan a partir del programa ejecutado más recientemente y hacia atrás, hasta el primer programa ejecutado.
  5. Un archivo de programa independiente. Si se encuentra un archivo de programa con el mismo nombre que el nombre de archivo especificado con DO, se ejecutará. Si no se encuentra ningún nombre de archivo de programa coincidente, se mostrará un mensaje de error.

Incluya la cláusula IN en DO para ejecutar un procedimiento en un archivo específico.

De forma predeterminada, los parámetros se pasan a procedimientos por valor. Para obtener información sobre cómo puede pasar parámetros a procedimientos por referencia, vea SET UDFPARMS. A un procedimiento se puede pasar un máximo de 27 parámetros. Los parámetros se pueden pasar a un procedimiento al incluir una instrucción PARAMETERS o LPARAMETERS en el procedimiento o al colocar una lista de parámetros inmediatamente después de PROCEDURE ProcedureName. Ponga la lista de parámetros entre paréntesis y separe los parámetros con comas.

Para obtener más información acerca del uso del comando PROCEDURE para crear clases, vea DEFINE CLASS y Uso estricto de tipos en código de clases, objetos y variables en la Ayuda.

Ejemplo

El siguiente ejemplo ilustra cómo se puede llamar a un procedimiento para realizar una tarea discreta como, por ejemplo, realizar una entrada en un archivo de registro. El procedimiento abre el archivo de registro (que se presupone que existe en el ejemplo), construye una entrada basada en información pasada en parámetros, escribe la entrada y cierra el archivo. El procedimiento se llama con un comando DO similar al de la parte superior del programa.

DO MakeLogEntry WITH "Logged in", "jsmith"

PROCEDURE MakeLogEntry
 PARAMETERS message, username
 pnHandle = FOPEN("LOG2.TXT",2)     && Assume the file exists
 pnSize = FSEEK(pnHandle,0,2)           && Move to end of file
 logEntry = dtoc(date())+","+time()+","+username+","+message
 =FPUTS(pnHandle, logEntry)
 =FCLOSE(pnHandle)  && Close file
ENDPROC

En el siguiente ejemplo se muestra cómo se puede llamar un procedimiento para devolver un valor.

SET CENTURY ON
? longdate(({^1998-02-16}))  && Displays Monday, February 16, 1998

PROCEDURE longdate
 PARAMETER mdate
 RETURN CDOW(mdate) + ", " + MDY(mdate)
ENDPROC

Vea también

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