
Definir ou declarar a utilização de uma função.
[STATIC] FUNC[TION] [<nome> [(<tipo>)]]
|
STATIC |
declara uma função que só será invocada por rotinas descritas no mesmo fonte. |
|
<nome> |
representa o nome da função definida. |
|
[(tipo)] |
representa o nome e o tipo da função declarada. |
Quando é o primeiro comando após as opções $, define uma função de usuário e que será gerado um arquivo objeto após sua compilação. Este arquivo objeto terá o nome definido por <nome> mais a extensão ".o" (".obj" no WINDOWS) ou o nome do arquivo fonte com a extensão ".o" no lugar de ".f", quando <nome> não for definido. Se especificado $LIBRARY=<biblio>, este objeto será gravado na biblioteca <biblio> O tipo pode ser omitido se a função for do tipo cadeia.
Quando não é o primeiro comando após as opções $, declara uma função que será chamada no programa. A função deve estar gravada na biblioteca especificada em $LIBRARY=<biblio>. O tipo pode ser omitido se a função for do tipo cadeia.
Utilizam-se funções estáticas para limitar a visibilidade do nome da função, restringindo o acesso a esta e permitindo que um sistema seja composto de subsistemas específicos, sem a necessidade de batizar cada função com o nome diferente da outra.
Para se declarar que um programa utilizará uma função, basta utilizar o comando FUNCTION seguido do nome e o tipo da função. O tipo pode ser omitido se a função for do tipo caractere.
O exemplo a seguir define uma função de usuário para ser guardada em uma biblioteca de objetos. Note pelo valor retornado, que se trata de uma função lógica.
$LIBRARY=bibfun.a && Biblioteca que conterá o objeto da função
FUNC confirma && Definição que o fonte e de uma função
** Inicio dos comandos da função
DO WHILE .T.
WAIT "confirma s/n ? " TO resp
IF resp $ "Nn"
RETURN (.F.) && Retorna falso.
ELSEIF resp $ "Ss"
RETURN (.T.) && Retorna verdadeiro.
ENDIF
ENDDO
O exemplo a seguir mostra a declaração e o uso da função confirma.
$LIBRARY=bibfun.a
PROG
FUNC confirma(l) && Declara utilização da função confirma de tipo lógico
IF confirma() && Executa a função confirma.
? "confirmou "
ELSE
? "não confirmou"
ENDIF
DO, PARAMETERS, PROCEDURE, PROGRAM, &SC, &SD, &SF, &SL e &SN.
