TeraTermマクロはラベルを付けることによってサブルーチンを定義できます。
サブルーチンを定義するためには、たとえば次のように書きます。
call sub1 end :sub1 messagebox "sub1" "sub1がcallされました"
先頭にコロン(:)を付けた文字列はラベルとして認識されます。このラベルを付けたサブルーチンをcallで呼び出します。サブルーチンはreturnで明示的に呼び出し元へ戻る必要があります。たとえば次のようにするとどうなるでしょうか?
call sub1 messagebox "サブルーチン終了" "サブルーチンから抜けました" end :sub1 messagebox "sub1" "sub1がcallされました" :sub2 messagebox "sub2" "sub2がcallされました" :sub3 messagebox "sub3" "sub3がcallされました"
このマクロを実行すると、2行目の「サブルーチンから抜けました」というメッセージは表示されません。「sub1がcallされました」「sub2がcallされました」「sub3がcallされました」と順次表示されて終了します。
sub1から呼び出し元へ戻るためには次のようにします。
call sub1 messagebox "サブルーチン終了" "サブルーチンから抜けました" end :sub1 messagebox "sub1" "sub1がcallされました" return :sub2 messagebox "sub2" "sub2がcallされました" :sub3 messagebox "sub3" "sub3がcallされました"
7行目でreturnを追加しています。これによりsub1を実行後、呼び出し元へ戻り「サブルーチンから抜けました」というメッセージが表示さます。そして、3行目のendにより処理が終了します。
引数と戻り値
サブルーチンは引数をとることができません。ですので、サブルーチンを呼び出す前に変数に値を設定し、callします。変数はすべてグローバル変数ですので、変数名の重複に注意してください。
また値を戻すこともできないので、必要であればあらかじめフラグ用の変数を用意します。