Sintaxe
IF <condição>
...
< instruções >
...
[ ELSE ]
...
< instruções >
...
ENDIF
Propósito
O comando IF ... ENDIF é um comando de programação estruturada que permite executar condicionalmente um bloco de instruções. É conhecido também como desvio condicional.
Argumentos
<condição>
É uma expressão lógica de controle que será avaliada como verdadeira (.T.) ou falsa (.F.). Se for verdadeira, o bloco de instruções entre o IF e o ELSE ou o ENDIF será executado
ELSE
Identifica o bloco de instruções que será executado caso a condição do IF seja falsa (.F.). Neste caso, serão executadas as instruções entre o ELSE e o ENDIF. Caso não exista o ELSE, o fluxo do processamento é desviado para a primeira instrução após o ENDIF.
Utilização
Este comando permite, por meio de uma condição, selecionar ou não um bloco de instruções a ser executado. Deve sempre ser finalizado com um ENDIF.
Qualquer outro comando de programação estruturada (WHILE, DO CASE e FOR ... NEXT) dentro de um IF ... ENDIF deve ser intercalado corretamente. Ou seja, o início e o fim devem estar entre o IF e o ENDIF. Intercalações de vários comandos IF também são permitidas, desde que cada IF possua o seu próprio ENDIF.
A cláusula ELSE inicia o bloco de comandos que será executado caso a condição do IF seja avaliada como falsa (.F.). Se existirem múltiplos comandos IF em uma estrutura de comandos, um ELSE sempre se referirá ao IF imediatamente anterior.
Exemplos
O exemplo abaixo verifica se há dados para o cálculo. Caso não exista, mostra uma mensagem para o usuário. Caso exista, invoca a função CalcGrao().
// Chamada da função de cálculo
FUNCTION Main(aEstoque)
LOCAL nReserva := 0
IF EMPTY(aEstoque)
MSGALERT(“Não existem dados para o cálculo”)
ELSE
nReserva := CalcGrao(1900, aEstoque)
ENDIF
RETURN NIL
Exemplo de estrutura para a intercalação de vários comandos IF:
IF <condição>
IF <condição>
...
<instruções>
...
ELSE
IF <condição>
...
<instruções>
...
ENDIF
ENDIF
ELSE
IF <condição>
...
<instruções>
...
ENDIF
ENDIF