Pesquisar este blog

domingo, 27 de outubro de 2013

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO - CALL

Call



    Instrução empregada para transferir o fluxo de execução de um procedimento para outro procedimento Sub. Function ou API em uma DLL, utilizando esta sintaxe:

[Call] Nome [Argumentos]

Onde, 
  • Call: argumento opcional que, quando especificado, exige que os argumentos do procedimento Sub ou Function referenciado sejam necessariamente envolvidos entre parênteses;
  • Nome: argumento obrigatório, indica o nome do procedimento cujo código deseja-se executar;
  • Argumentos: argumento opcional, indica a lista de variáveis delimitadas por vírgulas, que o procedimento espera receber.
As seguintes considerações são válidas para a instrução Call:
  • O uso da instrução Call não é obrigatório, constituindo-se apenas uma questão de estilo de programação ao se executar chamadas a um procedimento no interior de outro (Sub-rotinas);
  • Ao se empregar a instrução Call para chamar um procedimento que exige a passagem de argumentos, é obrigatório fornecê-los entre parênteses. Entretanto, quando se efetua uma chamada a um procedimento qualquer sem o emprego de Call, os parênteses deverão ser omitidos, separando-se o primeiro argumento do nome do procedimento por um espaço e os demais argumentos por vírgulas;
  • Para passar uma matriz como argumento de um procedimento, o nome da variável contendo a matriz deverá ser sucedido de parênteses vazios;
  • Quando Call for emprego para chamar um procedimento API em uma DLL, pode-se empregar as instruções ByVal e ByRef para especificar que os argumentos são passados por valor ou por referência, respectivamente;
  • Quando se emprega a instrução Call para se chamar um procedimento Function, o valor retornado por pelo procedimento é descartado.
Exemplo: O exemplo a seguir ilustra a função Call é empregada para transferir o controle do fluxo de execução do procedimento atual para um procedimento Sub, cujo único objetivo é fornecer uma mensagem padronizada de erro. O procedimento Dividir tenta dividir o numerador pelo denominador. Se o denominador for zero, ou ocorrer um erro de overflow (estouro de capacidade) a rotina padrão de exibição de erro MsgErro será chamada, exibindo o erro ocorrido:

Sub MsgErro(intErro as Integer, Optional Procedimento as String)

Dim strMsg as string 
Dim strTitle as string

StrTitle = “Erro “ & intErro
If Len(Procedimento) > 0 Then
    StrMsg = strMsg & “ em “& Procedimento
End If

StrMsg = Error(Err)
MsgBox strMsg, vbOK + vbCritical, strTitle

End Sub

Function Dividir(Numerador As Double, Denominador Y As Double)

On Error Resume Next
Dividir = Numerador/Denominador

Dividir_Fim:
    Exit Function
Dividir_Erro:
     Call MsgBoxErro(Err, “Função Dividir”)
Resume Dividir_Fim

End Function

Até a Próxima!!

Nenhum comentário:

Postar um comentário