まずon系命令の注意事項をマニュアルで確認しろ。
次にそういう理由なんだからbutton gotoをサブルーチン等で使わないようにスクリプトを組めばいいんだよ。
ダイアログボックスの数だけサブルーチン作るもよし、
ひとつのウィンドウをいくつものダイアログに使うもよし。
初級レベルのスクリプトだよホレ。
screen 2, ginfo_dispx, ginfo_dispy, 2
gsel 0
button gosub "適当ダイアログ1", *dlg1
button gosub "適当ダイアログ2", *dlg2
repeat
redraw 0
color 255,255,255: boxf
color 0
pos 0, 240: mes "呼び出し側で何かが動いている"+cnt
redraw 1
wait 10
loop
*dlg1
gsel 2
cls
title "ダイアログ1"
width 300, 200, (ginfo_dispx-300)/2, (ginfo_dispy-200)/2
pos 300-64, 200-24
button gosub "OK", *dlg_ok
gsel 2, 2
okclick = 0
repeat
wait 1
if okclick = 1: break
loop
gsel 2, -1
gsel 0
return
*dlg2
gsel 2
cls
title "ダイアログ2"
width 200, 300, (ginfo_dispx-200)/2, (ginfo_dispy-300)/2
pos 200-64, 300-24
button gosub "OK", *dlg_ok
gsel 2, 2
okclick = 0
repeat
wait 1
if okclick = 1: break
loop
gsel 2, -1
gsel 0
return
*dlg_ok
okclick=1
return
難しいことやってないだろ。
ある方法ができなきゃ別の方法を考えればいいのに
わざわざ他人を巻き込んでまで一つの方法にこだわる理由がわかんね。