exist_goto / exist_gosub / exist_return
引数に指定したラベルが存在したら、そのラベルに飛ぶ何かを作ってみる。
解説
三つの命令を作る。
- exist_goto
- exist_gosub
- exist_return
基本的な機能は同じ。引数にラベルを指定する。(正確には、ラベルと判断される文字列と文字列変数の集合)
そのラベルが存在するならば、そのラベルにgotoする/gosubする/returnする。
命令 | ラベルが存在した場合 | ラベルが存在しない場合 |
---|---|---|
exist_goto | そっちに飛んで返ってこない | 何もせず次の行へ |
exist_gosub | そっちの処理を済ませてから次の行へ | 何もせず次の行へ |
exist_return | そっちにreturnする。スタックに注意 | 何もせず次の行へ |
前二者はそれなりに使い道は考えつくけれど、exist_returnは難しいかなあ。
define節game以上
numalais labelexist,(適当な数値) defsub exist_goto defsub exist_gosub defsub exist_return
game以下*start以上
*exist_goto getparam $labelexist labelexist %labelexist,$labelexist if %labelexist=1 return $labelexist return *exist_gosub getparam $labelexist labelexist %labelexist,$labelexist if %labelexist=1 goto $labelexist return *exist_return getparam $labelexist labelexist %labelexist,$labelexist if %labelexist=1 return *exist_return_main return *exist_return_main return $labelexist