すでに回答があるとおりの原因でエラーが起きているので、ループ変数名をサブルーチンごと変更するか、ロジック的にそれぞれのサブルーチンで本当にループが必要か(呼出時点のMOB変数の値をサブルーチン先で使いまわせないか、FORをぬけたあとでも呼べるか)を検討するといいかもです。 ちなみに39行目の IF THEN のあとに NEXTがあって、41行目にもNEXTがあるので、 一応これでも動いてるかもしれないですが、FORとNEXTは1対1にしておいたほうが、コードが入り組んだときの思わぬ原因不明バグに陥るのを防げたりします。 ながれからこんな感じになるかなと。 FOR CHKMOBCNT=0 TO 90 IF xx THEN MOBX[xx]=xxx IF xx THEN S[CHKMOBCNT]=1 ELSE GOSUB @MOB1VSCPU1 ENDIF NEXT