On...GoSub, On...GoTo
Instruções
empregadas para criar um desvio de código para uma ou maus linhas, dependendo
do valor lógico da expressão testada, utilizando a seguinte sintaxes:
On expressão GoSub RótulosDeDestino
On expressão GoTo RótulosDeDestino
Onde,
- Expressão: argumento obrigatório, indicando qualquer
expressão numérica cujo valor seja avaliado para um número inteiro entre 0 e
255. Números reais serão arredondados para o mais próximo inteiro disponível. O
valor de expressão será utilizado para determinar quais os rótulos ou números
de linha existentes na lista será utilizado como desvio para o fluxo de código;
- RótulosDeDestino: argumento obrigatório, indicando uma
lista de números de linha ou rótulos de destino, separados por vírgulas.
As seguintes considerações são válidas para as instruções
On...GoSub e On...GoTo:
- Esta instrução existe apenas para compatibilidade para trás
com versões anteriores do Basic. Seu emprego torna o código extremamente
difícil de seguir e depurar, sendo mais aconselhado empregar uma instrução
Select Case que faça chamadas a outros procedimentos existentes no projeto;
- Se Expressão for igual zero ou for um número maior do que o
número de itens na lista, o controle será transferido para a primeira instrução
após a instrução On...GoSub ou On...GoTo;
- Se Expressão for um número negativo ou maior do que 255,
ocorrerá um erro em tempo de execução;
- É possível misturar números de linha e rótulos na mesma
lista, até um máximo de 255 possíveis pontos de desvio de código;
- Use uma instrução Return para fazer com que o código
retorne à linha que sucede a instrução On...GoTo ou On...GoSub correspondente,
sem que outras linhas de código sejam executadas.
Exemplo: O exemplo a seguir demonstra como empregar as
instruções On...GoSub e On...GoTo para alterar o fluxo de código do
procedimento, retornando o dia da semana correspondente ao número recebido como
argumento (você poderia empregar a função Wday() associada a função Format()
para obter o mesmo resultado, de forma muito mais elegante):
Public
Function DiaDaSemana(intDia as integer) as string
On intDia GoTo
Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado
Exit Function
Domingo:
DiaDaSemana =
“Domingo”: Return
Segunda:
DiaDaSemana =
“Segunda-feira”: Return
Terça:
DiaDaSemana =
“Terça-feira”: Return
Quarta:
DiaDaSemana =
“Quarta-feira”: Return
Quinta:
DiaDaSemana =
“Quinta-feira”: Return
Sexta:
DiaDaSemana =
“Sexta-feira”: Return
Sábado:
DiaDaSemana =
“Sábado”: Return
Exit Function
Até a Próxima!!