BASICでゲームを作る場合、特定の条件を満たす限りメインルーチンを繰り返すというような処理を行うことが多々あります。その特定の条件というのはIF文を使って判断すればよいのですが、高速化のためにIF文は極力使いたくないという場合も多いでしょう。
PC-E650では構造化命令追加のために一定条件を満たすまでの間繰り返す場合はIF文の代わりにWHILE〜WENDやREPEAT〜UNTILなどを使用することもできます。確かにIF文よりは速く便利な命令ですか、構造化命令はE650専用であるためにせっかく作ったゲームもE500、E550などのユーザーが楽しめなくなってしまうという難点を抱えています。
そして、ループさせる命令としてはFOR〜NEXTよりも遅いというのも難点です。FOR〜NEXTを1000回繰り返した場合、1回当たり1.5m秒ですが、WHILE〜WENDやREPEAT〜UNTILは3.1m秒もかかってしまいます。これはIF文(3.2m秒)と大差ありません。
問題はFOR〜NEXTでどうやって条件判断を行うかということですが、それはカウンタ機能を使うだけです。FOR〜NEXTではSTEPできざみ値を指定しない限りは1回につき1ずつ増加していくのですが、きざみ値をゼロに指定することで無限ループが可能になります。例えばZの値が初期値20で99以上になったらループを抜けるという設定をする場合は下記のようにするだけです。
FOR Z=20 TO 99 STEP 0 中略 NEXT |
FOR I=0 TO 1 STEP 0 I=-(Z<=0) 中略 NEXT |
FOR T=200 TO 0 STEP-1 中略 NEXT |