goto 行け
gosub 行って戻って来い
似ているようで違う命令
ボタンの例でも記載したように
button gosub " shori1 ",*shori1
button命令の場合gosubを記載しなければgotoが基本
button " shori1 ",*shori1
botton命令の場合gosubにあまり意味はないように感じる
というのはbuttonの待ちの仕組みと戻り場所が特殊な感があるからだ
普通gosub命令はその処理(=サブルーチン)を行いreturn命令の後に、gosubを発行した
次の行に戻る
例
gosub *shori1
mes "本処理1"
stop
*shori1
mes "サブ処理1"
return
この一行目を
button gosub "ボタン" , *shori1
すると、先ほどとは逆の表示になる
しかし、ボタンを押した後では"本処理1"の表示はされない
何故か?それはボタンの待つ処理がstop命令又はプログラムの最後だからだ
つまりサブルーチンを終えて帰る場所がstopになる
次のように変更してみるとそれがよくわかる
button gosub "ボタン" , *shori1
mes "本処理1"
goto *shori9
stop
*shori1
mes "サブ処理1"
return
*shori9
mes "本処理9"
またこのコードではサブルーチン「shori1」が本プログラム中にある
3行目のgotoで、サブルーチンを飛び越えている
通常はgosubでのサブルーチンは本プログラム処理の最後にまとめて
記載するのがわかりやすいプログラムになる
とはいえこのbutton命令でのgosubは所謂イベントドリブンな処理が
組めるので非常に重宝することは間違いないでしょう
PR