HSPルーム

3-3.サブルーチン

HSP3.0

サブルーチン

サブルーチンというものを使ったプログラムを見てみます。

サブルーチン?
	gosub *sub //ラベル*subにジャンプ
	stop
*sub
	mes "*subです"
	return //gosubした位置に戻る

サブルーチンは、ラベルの一種と考えればいいです。
サブルーチンは「*ラベル名 〜 処理 〜 return
というように定義し、使うときは「gosub *ラベル名」というようにサブルーチンを呼び出します。

何回でも呼び出す

サブルーチン - 2
	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命令を使うこと!

ラベルをサブルーチンとして使う場合、必ず最後にはreturn命令を使います

returnを使っていない
	gosub *sub
	stop
*sub
	mes "*subです"
	stop

5行目のstopをreturnにすると正しく動作します。