ここが違うという断定ではありませんが、READでType Mismatchということは予想していたのと違うDATAをREADしている可能性が高いですね。 上からDATAをREADしていればここから読むはず!というロジックは事故が多いかも。 DATAの頭に「@MAPDATA」のようなラベルを付け、READのループに入る前に「RESTORE @MAPDATA」みたいに書けば事故が減るし、違う場所をREADしてしまっているのか、DATA自体に問題があるのかの切り分けができると思います。