AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます

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でジャンプしない経路があり予想外の場所を実行しているとか
どこかにロジックに誤りがあるのではないか、という気もします。




1-

BluesBB ©Sting_Band