GoSub Return Statement


GoSub label label: Return label

Use: Required

Subroutine name. Description

Passes execution to and returns from a subroutine within a procedure. Rules at a Glance

• GoSub and its counterpart, Return, must reside within the same procedure. This means you can't use GoSub to "call" a subroutine from within another procedure.

• A subroutine can contain any number of Return statements.

• Return causes execution to continue with the code immediately following the last executed GoSub.

Programming Tips & Gotchas

The only reason I've included this relic of the past here is to help if you have the misfortune of maintaining or updating legacy code (and by legacy, I mean VB1 or 2!). A program written in VB3 onward shouldn't contain a single GoSub. If you come across a GoSub, split the code into its own Sub procedures, or, better still, create a new function procedure containing the code within the GoSub. Even if you aren't going to use a return value now, cast the return value of the function as a Boolean; this is good programming practice and allows early error trapping within your code.

Old code

Private Sub Command1_Click() Dim iSomething As Integer Dim strOther As String GoSub AnOldGosub GoSub AnOlderGosub GoSub AnotherGosub Exit Sub AnOldGosub:

GoSub...Return Statement 363

iSomething = iSomething + 1 Next x Return AnOlderGosub:

strOther = strOther & "=" Next y Return AnotherGosub:

Printer.Print strOther Printer.Print iSomething Printer.EndDoc Return End Sub

New code

Private Sub Command2_Click() Printer.Print GetOther() Printer.Print GetSomething() Printer.EndDoc End Sub

Private Function GetSomething() As Integer Dim x As Integer For x = 1 To 10

iSomething = iSomething + 1 Next x

GetSomething = iSomething End Function

Private Function GetOther() As String Dim y As Integer For y = 1 To 10

GetOther = strOther End Function

See Also

Goto Statement

+1 0

Post a comment