2022年07月23日
川俣晶の縁側ヴィンテージ・パソコン total 1071 count

N-BASICのRESUME文の研究・"No RESUME"エラーが出るタイミングはいつか

Written By: 川俣 晶連絡先

課題 §

N-BASICでNo RESUMEのエラーが出る条件が気になったので少し調べました。

少なくとも、エラーハンドラーの最後にENDと書いてあるとエラーは出ませんが、ENDなしで終了するとエラーになります。

検証プログラム §

10 ON ERROR GOTO 100

20 ERROR 1

30 END

100 PRINT "error handler"

110 (様々なコードを書き込んでみる。あるいはこの行を除去する)

結果 §

110行目が……

  • そもそもない時→No RESUMEエラー
  • ENDの時→エラーにならず正常終了
  • STOPの時→普通にブレークする
  • IF 0 THEN RESUME NEXT→No RESUMEエラー
  • ON ERROR GOTO 0→ERROR 1に対応するNEXT without FORのエラーが発生する

結論 §

No RESUMEエラーは、ON ERROR GOTOで指定されたコードが単純にプログラム末に達した時にのみ発生するようである。

RESUMEステートメントの有無は関係なく、あっても実行されなければNo RESUMEエラーとなる。

逆に、プログラムを終了、中断、エラーハンドラーの動作を終えて当該エラーを発生させるケースでは、RESUMEステートメントが無いにも関わらずエラーにならない。

ただし、STOPで止めたあと、CONT文で継続するとNo RESUMEエラーは出る。

つまり、No RESUMEエラーは名称があまり動作を説明していない。

感想 §

ON ERROR GOTOで飛ばしたあとはRESUMEかON ERROR GOTO 0を書くと思っていたのでイレギュラーな状況での動作は調べたことがなかったが興味深い。