2-5.ラベル(目印)

プログラムの流れを変えてみようと。


というわけで全く新しい項目です。今回はラベルについて記述します。

ラベルとは、いわゆる目印、旗などに例えられます。ラベルを用いることでプログラムの流れをちょっとだけ変えることが出来ます。


*labelA
    mes "ここはlabelAです。"
    goto *labelB
    mes "でもって――"

*labelB
    mes "ここはlabelBです。"

上のサンプルを実行してみてください。3つのmes命令がありながら、表示されているのは2行分しかありませんね? そして、表示されていないのはでもって――のはずです。これは、mes "ここはlabelAです。"の後、*labelBジャンプしたため、mes "でもって――"はすっ飛ばされ、*labelBmes "ここはlabelBです。"が実行されるわけです。矢印をちょこっと加えて説明するとこんな感じ。
ラベル・実行の流れ

このように、まさにラベルは目印の様な働きをしています。

さて、とあるラベルに移動することをジャンプ、または日本語で飛ぶと言います。この例では*labelAから*labelBにジャンプして(飛んで)いるわけです。このジャンプを行う命令は、goto命令です。

    goto *label

*label : 飛び先のラベル

気付いているとは思いますが、ラベルの名前は"*"(アスタリスク)に続けて指定します。変数と同じように、アルファベット59文字以下です。また、ラベルは必ず行頭に書く必要があります。つまり、ラベルの所はインデントしてはいけません。(今のスクリプトエディタは自動で行頭に移動してくれます)

ちなみに、今実行中のラベルと同じラベルを飛び先に指定すると無限ループを作ることが出来ます。実験してみても良いですが、その時はwait命令で待ち時間を作ってください。動作に支障を来します。


*infinite
    mes "ラベルで無限ループー"
    wait 10
    goto *infinite

終わらないので適当なところで終了させてください。

さて、ラベルの使用用途は、単純なジャンプ、サブルーチンジャンプ(今は説明しません)、button命令の飛び先などがあります。button命令は比較的よく使う命令ですが、説明はもう少し後になります。


Last Modified: 2008-08-15