Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Esta filosofía esta apoyada básicamente por la programación de teclas (ON KEY LABEL) y
el uso de las cláusulas VALID y WHEN de algunos comandos como GET y BROW
básicamente con funciones de usuario.
Un programa es un conjunto de códigos que realiza una tarea especifica, la cual se puede
llamar con el comando DO <nombre>ya sea desde la ventana de comando o desde otro
programa. Es por eso que a los procedimientos también se les llama subprogramas.
Para solucionar este problema FoxPRO permite usar procedimientos, que son
subprogramas ubicados en el mismo archivo que el programa principal, de manera que son
cargados en memoria junto con el programa principal y FoxPRO los lee muy rápidamente
desde memoria.
Inicializamos una serie de variables y luego tenemos el cuidado de usar exactamente las
mismas en el procedimiento, para que al volver mantengan los valores calculados en el
procedimiento.
PRINCIPAL.PRG
xNUM=2 *****************
xPOT=3 PROC OPERA
RESP=0 *****************
DO OPERA RESP=xNUM^xPOT
? RESP RETURN
RETURN
Nota: Las variables creadas en un procedimiento padre, son publicas para los
procedimientos llamados desde el. Las variables creadas en un procedimiento hijo, NO
existirán al retornar al procedimiento padre.
2. Pasando parámetros:
Pasándole paramentos al procedimiento, para que opere los valores y devuelva el valor, sin
importar las variables que es cada lado se usen.
PRINCIPAL.PRG
xNUM=2 *****************
xPOT=3 PROC OPERA
RESP=0 *****************
DO OPERA WITH xNUM,xPOT,RESP PARA X,Y,Z
? RESP Z=X^Y
RETURN RETURN
FUNCIONES DE USUARIO
Una función se reconoce porque lleva () al final de su nombre y porque retorna un valor que
puede ser numérico, carácter, fecha o lógico.
Para ejecutar una función no se usa DO, simplemente se le llama por su nombre con el () al
final.
PRINCIPAL.PRG *****************
xNUM=2 FUNC OPERA
xPOT=3 *****************
? OPERA() RETURN xNUM^xPOT
RETURN
2. Pasando parámetros:
PRINCIPAL.PRG *****************
xNUM=2 FUNC OPERA
xPOT=3 *****************
? OPERA(xNUM,xPOT) PARA X,Y
RETURN RETURN X^Y
Quizás donde son mas interesantes de usar las funciones de usuario sea en la validación,
osea cláusulas VALID y WHEN de comandos como GET y BROW.
Realizar tareas repetitivas: Los formatos empleados para mostrar datos en pantalla con un
modelo determinado son un ejemplo del uso de procedimientos.
Validar datos o procesos: Dado que las funciones se llaman directamente por su nombre sin
requerir del comando DO.
Realizar cálculos: Las operaciones en general son mas cómodas de hacer con funciones.
PROCEDURE miprimerprocedimiento
ENDPROC
FUNCTION miprimerfuncion
ENDFUNC
Diferencias entre procedimientos de llamada y funciones de llamada.
Si una rutina no incluye una declaración RETURN para devolver un resultado, devolverá .T.
(verdadero) por defecto.
Incluso si su rutina se define como un PROCEDIMIENTO, aún puede llamarlo como una función,
y * es * una función. Si no incluyó una declaración RETURN, la función devolverá .T. (como se
ha mencionado más arriba). (Los métodos orientados a objetos siempre deben llamarse "como
funciones".)
La forma en que llama a una rutina de procedimiento también determina el manejo de los
parámetros.
1) Utilice "DO ... WITH" para llamar a una rutina y se considerará un "procedimiento".
Los parámetros se pasarán "por referencia" a menos que estén rodeados por paréntesis, y no
haya manera de "explícitamente" pasar parámetros por referencia ".
(Tenga en cuenta que Set UDFParms NO afecta las rutinas llamadas por "DO ... WITH")
Por ejemplo:
2) Omita "DO" y "WITH" y rodee todos los parámetros en un par de paréntesis, y su rutina se
considerará una "función".
Por ejemplo:
SET UDFPARMS TO VALUE