SYAMさま、extさまご回答ありがとうございます。
>gosubが行われた時点で、サブルーチンのネストレベルは加算されているため
???
returnする前にbreakしてるからネストがおかしなことになるってことですか?
私の書いたソースが仮に抜けれた場合、breeak後もネストレベルが1のままになってやばいって理解であってます?
なるほど!フラグ立てればいいだけの話ですよね…こんな簡単なことに気づかないとは迂闊でした。
…ただ、欲を言わせてもらうと
上のソースは簡潔に問題を表すため、ループを1つにしましたが、実際のソースは、
foreach A
gosub *sub_test
loop
foreach B
gosub *sub_test
loop
foreach C
gosub *sub_test
loop
…
と多数の配列に同じ処理を行うものでして…
やっぱり1個1個のループにフラグチェッカーつけないと駄目ですか?
(breakが必要ない!やっぱり要る!とかなったりとか、デバグのため一時コメントアウトしたいとなったりという事態を考えると、できれば一箇所で済ませたい
と思うのは無い物ねだりでしょうか?)