サブルーチンというものを使ったプログラムを見てみます。
gosub *sub //ラベル*subにジャンプ
stop
*sub
mes "*subです"
return //gosubした位置に戻る
サブルーチンは、ラベルの一種と考えればいいです。
サブルーチンは「*ラベル名 〜 処理 〜 return」
というように定義し、使うときは「gosub *ラベル名」というようにサブルーチンを呼び出します。
gosub *sub //ラベル*subにジャンプ
gosub *sub //ラベル*subにジャンプ
gosub *sub //ラベル*subにジャンプ
stop
*sub
mes "*subです"
return //gosubした位置に戻る
サブルーチンをgosubで呼び出すと、サブルーチンの部分に処理が移ります。
そして、return命令を使うと呼び出したところへ処理が戻るのです。つまり、
gosubで呼び出すとブーメランのように処理が実行されるのです!
サブルーチンを使用すると、エラーが発生しやすいです。
だが、きちんと使用法を守って使えば何ら問題はありません。
以下はエラーの例です。
mes "こんにちは"
*sub
mes "*subです"
return //gosubした位置に戻る
gosubで呼び出す以外の方法でサブルーチンを呼び出してはいけません。
つまり、通常のラベルのように「突っ込む」ことができないのです。
ラベルをサブルーチンとして使う場合、必ず最後にはreturn命令を使います。
gosub *sub
stop
*sub
mes "*subです"
stop
5行目のstopをreturnにすると正しく動作します。