GoSub...Return

GoSubは、プログラム制御をサブルーチンに移行します。サブルーチンの実行が終わると、制御はGoSub命令の次の行に戻ります。

書式
GoSub {ラベル}​

{ラベル:}​ ステートメント
Return

パラメーター

ラベル
移行先をラベルで指定します。そのラベルがある行にプログラム実行は移行します。ラベル名は、32文字以内で指定してください。ただし、最初の文字には数字は使えません。必ずアルファベット文字を用いてください。

解説
GoSub命令は、指定のラベルにプログラム制御を移します。プログラムは移行先のステートメントを実行し、Return命令まで、そのまま移行先の行を実行していきます。GoSub命令は、サブルーチンの実行を行ってからReturnによって、GoSub命令の次の行に戻ります。サブルーチンは必ずReturnで終わらせてください。

起こりやすいエラー

  • 存在しないステートメントへの移行

    GoSub命令が存在しないラベルを移行先に指定すると、エラー3108が発生します。

  • GoSubがないのにReturnが使われているとき

    Return命令は、GoSub命令を実行したもとのプログラムへの復帰を行います。もし、GoSubがないのにReturnが使われているとエラー2383が発生します。GoSubなしでReturnが使われても、どこに復帰してよいかわからないので意味を持ちません。

参照
GoTo, OnErr, Return

GoSub使用例
下記は、GoSub命令を使って指定ラベルに移り、I/O命令をいくつか実行して復帰するという簡単な例です。

Function main
    Integer var1, var2

    GoSub checkio  'ラベルを使用してGoSubを実行
    On 1
    On 2
    Exit Function

checkio:           'サブルーチンの開始位置
    var1 = In(0)
    var2 = In(1)
    If var1 = 1 And var2 = 1 Then
        On 1
    Else
        Off 1
    EndIf
    Return         'サブルーチンの終了位置
Fend