READの前に RESTORE @P とすればいいはずです。 RESTOREは、読み込むデータの位置を指定する命令です。 そのプログラムだと、二回目のREADで次のデータを探してしまいます。 しかし、次のデータが存在しないため、エラーになります。 しかしRESTOREを入れると、次のデータを探す前に、@Pの後のデータに探す場所が修正されるので、エラーは起きないはずです。 あとDATAはループから離して、 @DATA DATA ~ とした方が見やすいですよ。 (こうする場合は@Pを@DATAとする)