◇ CALL したマクロが、一回余分に実行されてしまう

Q:次のようなマクロを実行すると、最後の「%0 の内容は 3 です」が、なぜか2回表示されてしまい、その後でエラーになります。

set %0 1
call :sub
set %0 2
call :sub
set %0 3
call :sub

:sub ; 以下、「%0 の内容を表示する」サブルーチン
message "" (& "%0 の内容は " %0 " です")
return

A:CALL は「サブルーチンを呼ぶ」というコマンド(昔の Basic でいう Gosub)ですが、サブルーチンの部分にきたからといって、特別扱い(マクロが自動的に終わるなど)がされるわけではありません。ですから、

set %0 3
call :sub

の後は、(マクロは終わらずに)次の行の「message 〜」を実行し、さらに「return」しようとして、(リターンする場所がないので)エラーになってしまいます。
 ですから、この後ろに

end

を書いて、明示的にマクロを終了させてください。