かなり丁寧に(というかきちんと)構文(字句)解析することにしたんですかね? そうじゃなければGOSUBはインデントの必要はないので検出しなくてもいけそうな気もするし…。
先人のプログラムがあると言うことでしたが、それは参考にされてる感じですか? 僕は見てないので、それがどんなプログラムかはわからないのですが…。
ページ戻りが出来るやつというのは、必ず前のページ(画面)に戻ってくる場合の処理って感じですかね?
戻るというのが明確であればGOSUBは戻ってくると言うのがわかりやすいところはありますが、ただページ(画面)のように完全に切り替わるようなものの場合、GOTOでも良いような気がすることはあります。後はそもそもとしてGOTOは使わない(DEFなどの命令や関数を使う)という方針もあります。まあDEFはイメージ的にはGOSUBに近いですが…。
どちらにするかは好みもありますね。僕の場合はGOTOをあまり使わないのでDEFになる事が多いですが…。
あとはGOSUB(やDEF)の場合の注意点としては、飛び先から戻ってきたときに、その飛び先にもメインループがある場合などでボタン入力処理などがあると、飛ぶ前と戻ってきたときでボタンの状態が変わっていたりする事があるので、その辺をきちんと対応していないと想定外のボタン処理が入っちゃったりすることですかね〜。これはDIALOG命令でも似たような事がある場合もありますが…。
(DIALOGのOK(Aボタン)が戻ってきた先のボタン処理(Aボタン)と同じでDIALOG閉じた後、押したつもりがないのに押したことになるなど)