プレイ日記
SilverBlue Corei72630QM
EXEC→END→EXEC元に戻る→なぜかENDしたプログラムがENDできていない!? 詰んだ…?
6そうだね
プレイ済み
返信[1]
親投稿
SquidSky ugomemo_gorohati
!? 【PRG0:MAINPRG】 EXEC "PRG1:SUBPRG" PRINT "RETURN" 【PRG1:SUBPRG】 BEEP 9 END これみたいな感じで、PRG1のENDでプログラムがリターンせずにそのまま終了してしまう、ということ・・・?
0そうだね
プレイ済み
返信[2]
親投稿
SilverBlue Corei72630QM
いえ、ENDしたプログラムが動いたままの状態です。
0そうだね
プレイ済み
返信[3]
親投稿
MIKI ifconfig
exec はいわばスロット単位の gosub みたいな感じですよ。 exec 先の end は return 相当。 exec 先に end が無ければ、プログラム最後にある暗黙の end によって exec 元に戻る。 exec 先で終わるにはエラーで強制停止以外ないでしょう
0そうだね
プレイ済み
返信[4]
親投稿
SilverBlue Corei72630QM
ENDちゃんとつけているんですけどねぇ...。 いっそプログラム組み直します。
0そうだね
プレイ済み
返信[5]
親投稿
MIKI ifconfig
ん?? exec 先の end で停止したいという話ではなかったの????
0そうだね
プレイ済み
返信[6]
親投稿
SilverBlue Corei72630QM
ENDしてEXEC元に戻すのが目的何ですが、EXEC元に一度戻ったと思ったら、EXECする前のプログラムが動き始めるんです。 しかも、EXECを二重にしている訳でもなく、EXECする前のプログラムもEXEC元に戻る前の処理で動いているんです。 (内部でCONTが発生している?)
0そうだね
プレイ済み
返信[7]
親投稿
SilverBlue Corei72630QM
×EXECする前のプログラム○EXECしたプログラム
0そうだね
プレイ済み
返信[8]
親投稿
SilverBlue Corei72630QM
ああ、EXECがゲシュタルト崩壊している
0そうだね
プレイ済み
返信[9]
親投稿
MIKI ifconfig
ゲシュタルト崩壊ワロタ えーと伝わってくる気がしないので、再現可能な最小のコードペア出していただけますか?
0そうだね
プレイ済み
返信[10]
親投稿
SilverBlue Corei72630QM
今日はちょっと無理っぽいので、明日でいいなら出します。
0そうだね
プレイ済み
返信[11]
親投稿
SquidSky ugomemo_gorohati
内部のCONTがEXECの行よりも前の行を指して復帰しているということですか?
0そうだね
プレイ済み
返信[12]
親投稿
SilverBlue Corei72630QM
いえ、ENDした直前の処理を行います。
0そうだね
プレイ済み
返信[13]
親投稿
SilverBlue Corei72630QM
再現プログラムでも上手く動作しませんでした....。 しかし、EXEC後、メインループの最初に戻す処理を行うと、何故か上手く動きました。
0そうだね
プレイ済み
返信[14]
親投稿
MIKI ifconfig
最小じゃなくていいから、動作しないコード見せてください。
0そうだね
プレイ済み
返信[15]
親投稿
SilverBlue Corei72630QM
*に囲まれた部分です。 @DESKTOP_SETは、スプライトやBGをリセットして配置する処理をしていて、メインループよりも上にあります。
0そうだね
プレイ済み