Árvore de páginas

Una función puede definirse en cualquier parte de un programa que forme parte de una aplicación. Sin embargo, las definiciones de 2 o más funciones no pueden intercalarse. La estructura básica para la definición de una función es:

 

[ STATIC ] FUNCTION < nombre identificador > [ ( < lista de parámetros > ) ]

[ < declaración de variables > ]

.

.

.

< instrucciones >

.

.

.

RETURN < expresión de resultado >

 

Al inicio, obligatoriamente debe definirse el nombre de la función por medio del comando FUNCTION y opcionalmente su clase, por medio de la cláusula STATIC. Entre paréntesis puede definirse una lista opcional de parámetros, separados por comas, que se utilizarán como argumentos para el procesamiento y la obtención del resultado de la función.

 

En las primeras líneas de la función deben declararse las variables que se utilizarás por la función. Éstas se declararan por medio de los comandos LOCAL, STATIC o PRIVATE, como veremos en la secuencia de esta documentación.

 

A continuación, debe incluirse el cuerpo de la función, que corresponde a una serie de instrucciones y estructuras de control del flujo de programación. El cuerpo de la función contendrá la lógica de programación responsable por obtener los resultados.

 

Para finalizar una función, debe existir por lo menos un comando RETURN, que suministrará el resultado de la función para la rutina que la ejecutó. Puede existir más de un comando RETURN dentro de la misma función. Un comando RETURN puede incluirse en cualquier línea de una función, permitiendo que ésta se finalice en cualquier punto de su ejecución, de acuerdo con el objetivo o el resultado.

 

El comando RETURN ofrece solamente un único valor como resultado de la función. Si una función necesita devolver varios valores como resultado, debe utilizar un array (matriz o vector) como retorno de la función.

 

Una función puede retornar cualquier tipo de dato, incluyendo arrays (matriz o vector), objetos, bloques de código, valores lógicos (True / .T. o False/ .F.) y el valor NIL, que representa ausencia de dato (nulo). El valor de retorno de una función puede ser una constante o una expresión, que se evaluará y suministrará el resultado. Si el valor devuelto por una función no se utiliza por la rutina que la ejecutó, se descartará automáticamente. De esta manera, una función puede utilizarse como función principal. Es decir, directamente en una línea de instrucción del programa o en el menú de la aplicación.

 

La siguiente función ejemplifica los conceptos expuestos. A partir de una fecha recibida como parámetro, ésta ejecuta un procesamiento y retorna el nombre del respectivo día de la semana.

// Declaración del nombre de la función y de sus parámetros
FUNCTION DiaToSem(nDia)

// Declaración de las variables
LOCAL cSemana

// Cuerpo de la Función
	IF DOW(nDia) == 1
		cSemana := "Domingo"
	ELSEIF DOW(nDia) == 2
		cSemana := "Lunes"
	ELSEIF DOW(nDia) == 3
		cSemana := "Martes"
	ELSEIF DOW(nDia) == 4
		cSemana := "Miércoles"
	ELSEIF DOW(nDia) == 5
		cSemana := "Jueves"
	ELSEIF DOW(nDia) == 6
		cSemana := "Viernes"
	ELSEIF DOW(nDia) == 7
		cSemana := "Sábado"
	ELSE
		cSemana := "Indefinido"
	ENDIF

// Retorna el resultado de la función y la finaliza
RETURN cSemana

 

Si la cláusula STATIC se utilizase para definir la función, ésta sería visible, es decir, podría ejecutarse, solamente por las otras funciones contenidas en el mismo programa (archivo .PRW) en la cual ésta se definió.

  • Sem rótulos