〜 スクリプト 〜
現在の処理位置より上、又は下にある直近の処理に制御を移したい

処理を指定位置に移したい場合はラベルを利用します。
ただ、様々な処理で直近のラベル位置に移したい場合に、
ラベル名を考えるのが面倒とか付けるまでもないとか、その他いろいろな理由がある場合は、
ローカルラベルと呼ばれるものちょっとだけ特殊なラベルを利用しましょう。

「*@」というものが、ローカルラベルになるのですが、
通常のラベルと異なり、同名でありながら複数配置することができます。
複数配置可能という性質上、「goto *@」と書いても、どのローカルラベルを指すのか解釈できません。
現在の処理位置に一番近い(上または下は選択可能)ローカルラベルにしか制御を移せないのです。
配置し過ぎると、デバッグの際に見難くなってしまいますが、
度が過ぎなければ、比較的有効に利用することが出来るかもしれません。

現在より上側に書いたローカルラベルに制御を移す時は、「goto *@before」「gosub *@before」、
下側のローカルラベルに移したい時は、「goto *@forward」「gosub *@forward」と記述しましょう。
簡単に書きたい場合は、「before」や「forward」の先頭から一部だけでも動作します。
つまり「goto *@bef」や「gosub *@forwa」、最低だと「goto *@b」や「gosub *@f」でも良いのです。
	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
	ID = 1

*@
	mes "変数ID(=" + ID + ")は奇数です。"
	ID++
	goto *judge // 直下なのであってもなくてもどちらでも良い

*judge
	on (ID / 10) + (ID \ 2) goto *@b, *@f, *finish

*@
	mes "変数ID(=" + ID + ")は偶数です。"
	ID++
	goto *judge

*finish
	mes "終了。"
	stop