11:AT ENDは正しく動いているのでは? tahrayan 07/22 00:23 HIGH-VALUEを8888・・に直してうまく動くようになったのでしたら、良いとは思いますが・・・ もともとのご質問は 「最終レコードが削除されたら、レコードがなくなるので、AT END になると思うのですが、 なぜAT END GOTO ABC-090が無視されてしまうのでしょうか?」 だったと思います。 「最後のレコードがDELETE されたあと、 再度READ命令を実行した際、 READ XXXX NEXT AT END の直後に DISPLAY したところ ”10” が表示されました。」 ということならば、 AT ENDの直後のDISPLAY文が実行されたということですので、 「最終レコードが削除されたら、レコードがなくなるので、AT ENDになっている」 のではないでしょうか。 プログラムの一部分しか見えないので、はっきりとはわかりませんが、 実はGOTO文の前にHIGH-VALUEをMOVEする処理もあるようですし、 例えば、MOVEとGOTOの間の別の命令があって不正十進エラーになっているとか、 XXXX-KEY2が英数字項目で定義されていて、HIGH-VALUEを入れた後に どこかでXXXX-KEY2を使って計算して(例えばCOMPUTE A=XXXX-KEY/2のように) 不正十進エラーになっているとか AT ENDとGOTOの間が空いているのなら、GOTOでジャンプしない経路があり予想外の場所を実行しているとか どこかにロジックに誤りがあるのではないか、という気もします。 |