DAT$に「*-END-*」を読み込んだ後、SHIFT()でDAT$の内容を崩しちゃってるので、次にWHILEに戻ったときには既にDAT$は「*-END-*」ではなくなっていてループから抜けられない、とみました(・u・) WHILEに入る前に一度READしておいて、次のループに入る直前で次のREADをすると良いと思いますー( ' u ' )