GoSub...Return Statement

Syntax

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 and 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:
    Dim x As Integer
    For x = 1 To 10
        iSomething = iSomething + 1
    Next x
    Return
AnOlderGosub:
    Dim y As Integer
    For y = 1 To 10
        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
        strOther = strOther & "="
    Next y
    GetOther = strOther
End Function

See Also

Goto Statement
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset