[エラーコードメッセージリスト]

BASICの実行中にエラーが発生すると、メッセージが表示されます。ここでは、こうしたエラー
メッセージと、その原因および対策について説明します。
 メッセージの右側の数字(69など)は、“エラーコード”と呼ばれるもので、エラー発生時、
ERR(関数)に格納されます。
 “原因:”には、そのエラーが発生した際の原因を簡略に説明してあります。複数の原因が考
えられる場合は、列挙してあります。
 “対策:”には、そのエラーの原因を取り除く方法か、またはエラーの発生を未然に防ぐため
の対策が説明してあります。
エラーについての詳細は、[ERL]関数[ERR]関数
[ERROR][RESUME]
[SAMPLE22 エラー処理ルーチン] をご覧ください。


  

69

Bad allocation table

原因:ディスク内部のFATが壊れている。

対策:ディスクを再フォーマットする。ただし、以前のファイルはすべて失われる。

70

Bad drive number

原因:LOAD、SAVE、KILL、OPENなどのファイル操作命令でドライブの指定が間違っている。

対策:正しいドライブを指定する。

56

Bad file name

原因:LOAD、SAVE、KILL、OPENなどのファイル操作命令でファイル名の指定が間違っている。

対策:正しいファイル名を指定する。

52

Bad file number 

原因:同時オープンファイル数を超えるファイル番号を指定しようとした。

対策:ファイル番号を小さくするか、同時オープンファイル数を増やす。

71

Bad track/sector 

原因:DSKO$、DSKI$で、ヘッド番号、トラック、セクタの指定が誤っている。

対策:正しいヘッド番号、トラック、セクタを指定する。

17

Can’t continue 

原因:STOP命令やCTRL+Cなどで実行を停止した場合、プログラムを書き換えたりすると、CONTによって実行を再開できない。

対策:CONTを使用した場合は、実行の中断中にプログラムを書き換えてはならない。 実行中断のタイミングによっては、プログラムを書き換えたりしなくとも実行の再開 ができなくなることもあるので注意。

57

Direct statement in file

原因:LOADでアスキー形式のプログラムファイルをロードするときに、ダイレクトステー トメント(行番号のない行)が存在した。

対策:プログラムファイルの内容、行番号を確認する。

68

Disk full

原因:SAVE、PRINT#、PUTなどのディスクに書き出す命令を実行したとき、ディスク上に 空き領域がなかった。

対策:不要なファイルを削除して、空き領域を確保する。別のドライブ上のディスクを使 用する。同じドライブ上でディスクを差し替えて使用する。ただしこの方法は、ファイル がオープン状態のときには使えないので注意。

64

Disk I/O error

原因:ディスクとの入出力中にエラーが発生した。

対策:ディスクがフォーマットされていないか、またはディスクの再フォーマットを行う。

62

Disk offline

原因:LOAD、SAVE、KILL、OPENなどのファイル操作命令で、ディスクのセットされていな いドライブに対して入出力を行おうとした。

対策:ディスクを正しくドライブにセットする。

11

Division by Zero (I/O) 

原因:0 による除算、すなわち n/0(nは任意の数)や 0^-1 が実行されて、その結果得 られた値がオーバーフローを起こした。

対策:除数が 0 にならないようにする。

10

Duplicate Definition 

原因:一度宣言した配列を二重定義しようとした。DIMで宣言しないで配列を使った場合 に、その配列を再定義しようとした。

対策:別の配列名を使うか、あるいはERASEで古い配列を消去した上で再び同じ配列名で 定義しなおす。

31

Duplicate label

原因:プログラム中に同じラベル名が2つ以上存在している。

対策:ラベル名を変更して同一名のラベル名が存在しないようにする。

33

Feature not available

原因:現在の状態では使用できない命令を実行しようとした。

対策:その命令を実行するために必要なハードウェアなどを装備あるいは準備する。

50

FIELD overflow

原因:FIELDで、ランダムファイルのレコード長として合計256バイト以上の領域を指定した。

対策:フィールドの合計長は255バイト以内にする。

65

File already exist

原因:NAMEによって新たに付けようとしたファイル名がすでに存在している。

対策:新しく付けるファイル名を変更するか、すでに存在しているファイルのファイル名 を変更する。

54

File already open

原因:すでにオープンされているファイルに対して、OPEN、KILL、NAMEなどを行った。

対策:CLOSEでいったんファイルを閉じる。

53

File not found

原因:LOAD、SAVE、KILL、NAMEなどのファイル操作命令で、指定したファイルが見つから ない。

対策:正しいドライブ名およびファイル名を指定する。

60

File not open

原因:PRINT#、INPUT#など、ファイル番号を指定して入出力を行う命令で、オープンされ ていないファイルを参照しようとした。

対策:入出力命令を実行する前に、OPENでファイルをオープンしておく。

61

File write protected

原因:次のうちいずれかの書き込み禁止属性が付けられているファイルに、書き込みを行
おうとした。

・ SETによって、ファイルディスクリプタ、ドライブのディスク、ファイル番号に付 けられたもの。

・ フロッピーディスクに張られたシールによるもの。

対策:書き込み禁止を解除する。

26

FOR without NEXT

原因:FOR〜NEXTが正しく対応していない。

対策:プログラムの流れをたどり、FOR〜NEXTを正しく対応させる。

12

Illegal direct

原因:ダイレクトモードで使用できない命令をダイレクトモードで使った。

対策:プログラムモード上で実行する。

5

Illegal function call

原因:命令や関数mの使い方がまちがっている。すなわち、引数がその関数の許容する範 囲を超えたり、結果がその関数のとり得る範囲を超えたりしている。たとえば、次のよう な場合である。

・ LOG関数で負や0 の引数を指定した。

・ SQR関数で負の引数を指定した。

・ MID$、LEFT$、RIGHT$、STRING$、SPACE$、INSTR、ON...GOSUBなどにおいて、不適 当な引数が用いられた。

・ ほか。

対策:原因がさまざま考えられるので、各命令、関数の使い方をリファレンスマニュアル で確認する。

74

Illegal operation

原因:スクロールウィンドウ内に表示データがいっぱいに詰まっている場合、またはスク ロールウィンドウ内でキー入力したデータがいっぱいに詰まっている場合に、スクロール 開始行に対してインサートモードでキー入力した。

対策:インサートモードを抜けてから、キー入力を行う。

55

Input past end

原因:INPUT#、GETなどのファイルからデータを読み込む命令で、ファイル中のすべての データを読み尽くしたあとに、さらに入力命令が実行された。

対策:ファイル中のデータの数と、入力命令で読み込む数を合わせる。 EOF,LOFなどの関数を使って、ファイルの終了を検出するようにする。

23

Line buffer overflow

原因:1行で入力できる文字の範囲(255バイト)を越えて入力が行われた。

対策:1行の文字数を255バイト以内にする。

22

Missing operand

原因:命令中で、必要なパラメータが指定されていない。

対策:書式を確かめ、必要なパラメータを指定する。

1

NEXT without FOR

原因:FOR〜NEXTが正しく対応していない。

対策:プログラムの流れをたどり、FOR〜NEXTを正しく対応させる。

19

No RESUME

原因:エラー処理ルーチンの終わりにRESUMEがなく、プログラムの実行が継続できない。

対策:RESUME、END、ON ERROR GOTO 0 のどれかで終わらせるようにする。

4

Out of DATA

原因:DATA行中のデータが足りず、READで読むべきデータがない。

対策:DATA行中のデータの数と、READで読み込む数を合わせる。READとDATAの対応と、 RESTOREが正しく使われているかどうかを確認する。

7

Out of memory 

原因:次のような理由により、メモリ容量が足りなくなった。

・ プログラムが長すぎる。

・ 配列が大きすぎる。

・ FOR〜NAXT、GOSUBなどでネスティング(入れ子構造)が深くなりすぎて、スタッ クがいっぱいになった。

・ ほか。

対策:プログラム、配列を小さくする。ネスティングを浅くする。 FREを使ってフリーなメモリを調べてみて、メモリの空き容量が異常に少ない場合には、 そのプログラムを実行する前に熱のプログラム中で、BASICのプログラム領域を小さく設 定したままにしている可能性がある。このようなときには、CLEARを実行して、BASICの使 うメモリを大きくする。また、起動時にファイルバッファの容量を多く取っていることも あるので、再起動して同時オープンファイル数を必要最小限にする。

14

Out of string space

原因:文字列の全体量が、使用できるメモリ容量を超えてしまった。

対策:文字列、配列文字列を小さくする。

6

Overflow (OV)

原因:演算結果や入力された数値が、許される範囲を超えた。

対策:データの型と、とる値の範囲が正しいかどうかを確認する。

73

Rename across disks 

原因:異なるドライブ上にあるファイルに対してNAMEを実行しようとした。

対策:NAMEでは同じドライブ上のファイルを指定する。

20

RESUME without error 

原因:エラー処理ルーチンでないところに、RESUMEがある。

対策:ON ERROR GOTO で指定されたところ以外、たとえばメインルーチン内にRESUMEがあると、 このエラーが発生するので、メインルーチンの終わりには必ずENDを置くようにする。プログラ ムの流れを確認すること。

3

RETURN without GOSUB

原因:GOUSUB〜RETURNが正しく対応していない。

対策:GOSUBで呼び出されたサブルーチン以外、たとえばメインルーチン内にRETURNがあると、 このエラーが発生するので、プログラムの流れに沿って、GOSUBとRETURNの対応を確認する。

59

Sequential I/O only

原因:シーケンシャル入出力以外の入出力命令を使用した。 MERGEでバイナリファイルを使用した。

対策:シーケンシャル入出力命令を使用するようにする。 MERGEでディスクから読み込むファイルは、アスキー形式でセーブしておく。

16

String formula too complex         

原因:文字式が複雑すぎる。

対策:複雑な文字式は、いくつかの式に分ける。

15

String too long

原因:1つの文字変数内の文字数が255バイトを超えている。

対策:2つの変数に分けて処理する。

9

Subscript out of range         

原因:配列変数の添字の値がDIMおよびOPTION BASEで指定されたときの範囲を外れている。 DIMによる宣言を省略した場合に、添字の値が 10 を超えている。

対策:配列変数の定義による添字の範囲と引用する配列変数の範囲を確認する。

2

Syntax error         

原因:命令が書式どおりになっていない。 予約語以外の命令がある。 READとDATAとの対応で、読み込む変数とデータとの間で型の不一致が生じた。

対策:各命令を書式どおり正しく記述する。 READとDATAでは、読み込む変数とデータの型を合わせる。

27

Tape read error         

原因:テープからの読み込み時にエラーが生じた。

対策:再度やってみる。データレコーダ、テープの異常を調べる。

13

Type mismatch 

原因:式の左辺、右辺、関数の引数などにおいて、変数の型が一致していない。

対策:関数に与えるデータの型を確認する。

13

Type mismatch 

原因:式の左辺、右辺、関数の引数などにおいて、変数の型が一致していない。

対策:関数に与えるデータの型を確認する。

32

Undefined label         

原因:定義されていないラベル名を参照した。

対策:ラベル名を正しく定義する。

8

Undefined line number         

原因:GOTO、ゴスB、IF...THEN〜ELSEなどで、存在しない行番号を飛び先に指定した。

対策:行番号を確認する。

18

Undefined user function         

原因:定義されていない利用者定義関数、または機械語関数を引用した。

対策:利用者定義関数は、引用する前にDEF FNで定義する。機械語関数は、DEF USRで実行開始 アドレスを定義しておく。

21,24,25,28,他

Unprintable error         

原因:メッセージの定義されていないエラー。

対策:ERROR <整数表記>を実行してこのエラーが生じる場合、その<整数表記>番のエラーを利 用者独自のエラー処理に利用することができる。

30

WEND without WHILE         

原因:WHILE〜WENDが正しく対応していない。

対策:プログラムの流れをたどり、WHILE〜WENDを正しく対応させる。

29

WHILE without WEND         

原因:WHILE〜WENDが正しく対応していない。

対策:プログラムの流れをたどり、WHILE〜WENDを正しく対応させる。

51

システム予約       




MBASIC86で追加したもの。

75

Timeout on communication         

原因:RS232C回線でのLINE INPUTにおいてTimeoutとなった。

対策:送信元のLINE行末コード(CR+LF)を確認する。

76

Not connect COM line         

原因:RS232C回線での通信信号を確認できない。

対策:ケーブル接続を確認する。

77

Port already open         

原因:RS232C回線でportを重複してopenしようとした。

対策:port番号を調べる。