On...Gosub
 
Вызов метки на основе выражения

Синтаксис

On expression GoSub label1[, ...]

Описание

Ветвление на разные метки в зависимости от значения expression. Значение expression 1 будет переходить на первую метку, значение 2 на вторую, и т.д.. Если значение expression является нулем (0) или больше числа элементов в списке, выполнение продолжается на следующий операторе после On...Gosub.

Это заявление ведет себя так же, как GoSub и выполнение может возвращаться в заявлении On...Gosub используя Return.

Рекомендуется структурированный условный оператор Select Case вместо On...Gosub.

Пример

'' Компилировать с опцией -lang qb

'$lang: "qb"

choice = 3
On choice GoSub labela, labelb, labelc
Print "Good bye."
End

labela:
Print "choice a"
Return

labelb:
Print "choice b"
Return

labelc:
Print "choice c"
Return


Различия диалектов

  • Доступно только в диалектах -lang qb и -lang fblite.
  • Поддержка On Gosub отключена по умолчанию в -lang fblite если не используется оператор Option Gosub.

Отличия от QB

  • FreeBASIC не генерирует ошибку времени выполнения, если expression является отрицательным или больше 255.

См. также