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

4:Re: 久々COBOL85を見ました。(AT END が無視されて、再度、DELETE処理を行い、 不正十進数エラーで アボートしてしまいます)
江須扇 07/16 11:02
私も久々に見るので、記憶違いかもしれませんが、

プログラム内でFILE STATUSを一か所も使ってない場合は
AT END で再読み込みを実行すると命令実行順序エラーで
エラー表示するのではと記憶しております。

しかしながらFILE STATUSを使っている場合は
その命令でOSからのエラーは表示されず。
次の行で必ずSTATUSをIF命令で確かめる必要が
あると思います。

また、DELETE命令で不正十進数はエラー出ないと記憶しております。

説明上省略してあるのでしょうがREADの後、何らかの処理でエラーが出ていると考えます。

対応方法は

1.全てのFILE STATUSをコメントにして
 OSのエラー機能のみで実行する
2.全ての入出力命令(OPEN、CLOSE、READ、DELETE等)の直後でSTATUSを確認して全て自己管理にする

のどちらかにする必要があります。
中途半端(すいません言葉がきついかも)にSTATUSを確認すると正しい判定ができません。
まずはそこをご確認ください。

PS:
それにしても旧100からCOBOLがあったのでそれを引き継いだプログラムが多いので
GO TO ありありのプログラムはやむを得ないかもしれませんが
新規であればCOBOL85はEND−XXXとPERFORM
を使った構造化プログラムが作成が可能になります。
データベースのSELECTと命令と組み合わせると
かなりすっきりしたプログラムになります。
いまさらですが参考の為に蛇足を書きました。


1-

BluesBB ©Sting_Band