こちらは、現在困ってる案件です。解決方法をどなたか教えてください。
「県立UKITAのrinkaさん」の「第1章」が終わり、「第2章」へと進みます。そのときに、ディスクドライブにディスクがちゃんと入っているかを調べるのを「BASIC」を使ってやろうと思います。
私の考えたやり方:「ON ERROR GOTO」を使う。
100 ON ERROR GOTO 200
110 RUN"SAI2SYOU"
120 GOTO 120
200 PRINT"INSERT DISK A"
210 A$=INKEY$:IF A$=""THEN210ELSE100
100行の「ON ERROR GOTO」で、もしもディスクに「DAI2SYOU.BAS」というファイルが無かったら、200行に飛び、メッセージを表示。キー入力されたら再度ディスクアクセス(RUN文)を実行する。を繰り返す。
で、実際にやると、(ディスクにDAI2SYOUというファイルが無い場合)INSERT DISK Aと表示され、キー入力待ち状態になります。ここでなんらかのキー(例えばスペースキー)を押すと、「File not found in 110」と表示されてプログラムが終了してしまいます。なぜ、再度200行へ飛ばないの??
「県立UKITAのrinkaさん」の「第1章」が終わり、「第2章」へと進みます。そのときに、ディスクドライブにディスクがちゃんと入っているかを調べるのを「BASIC」を使ってやろうと思います。
私の考えたやり方:「ON ERROR GOTO」を使う。
100 ON ERROR GOTO 200
110 RUN"SAI2SYOU"
120 GOTO 120
200 PRINT"INSERT DISK A"
210 A$=INKEY$:IF A$=""THEN210ELSE100
100行の「ON ERROR GOTO」で、もしもディスクに「DAI2SYOU.BAS」というファイルが無かったら、200行に飛び、メッセージを表示。キー入力されたら再度ディスクアクセス(RUN文)を実行する。を繰り返す。
で、実際にやると、(ディスクにDAI2SYOUというファイルが無い場合)INSERT DISK Aと表示され、キー入力待ち状態になります。ここでなんらかのキー(例えばスペースキー)を押すと、「File not found in 110」と表示されてプログラムが終了してしまいます。なぜ、再度200行へ飛ばないの??
ON ERROR GOTO で飛んだ先では
RESUMEという命令を実行する必要があります。
これを実行しないと次にエラーが発生した時に
ON ERRORで飛んでいきません。
RESUME命令では戻り先の行番号を指定します。
今回の場合では
210 A$=INKEY$:IF A$=""THEN210
220 RESUME 110
とすれば良いです。
戻り先が100行目でなく110行目なのは
ON ERROR GOTO は一度実行すれば良いからです。
では、次も。(笑)