MSX Datapack wiki化計画

9章 エラーおよびメッセージ

※
※ このページは書きかけです。以下の可能性があります。
※ ・誤字、脱字等のチェックをおこなっていません。
※ ・テキスト、表などフォーマットがされていない。
※ ・画像が抜けている。
※

 9.1 ディスクエラー

 ディスクエラーは例えばディスクがドライブ中に入っていない場合のように、コマンドまたはプログラムがディスクにアクセスしようとし、何らかの原因で失敗した場合に起こります。エラーが発生すると、メッセージとプロンプトが表示され、(例えばディスクを正しくドライブにセットしたことなどによって)処理を再実行する、処理を無視する、あるいはコマンド全体を中止するという選択がユーザーに与えられます。
 ディスクエラーのメッセージとプロンプトの例は以下のようなもので、ドライブAがアクセスされている間にディスクが取り出された場合に表示されます。

Not ready reading drive A:
Abort, Retry or Ignore (A/R/I)?
ディスクが入っていません(読み込み中)ドライブはA:
中止(A)/再試行(R)/無視(I)?

上記の例で「Not Ready」「ディスクが入っていません」の部分はディスクの操作が失敗した理由を示し、状況により別のメッセージ(下記参照)になります。「reading」「(読み込み中)」はコマンドがディスクを読み込み中の場合で、書き込み中の場合には「writing」「(書き込み中)」に代わります。「drive A:」「ドライブはA:」はアクセスしようとしていたドライブ名です。
 「Abort, Retry or Ignore(A/R/I)?」「中止(A)/再試行(R)/無視(I)?」部分はユーザーが行うことのできる動作を示し、これらは A、R、あるいはIキーを押すことによって選択されます。
 Abort(中止)を選択するとコマンド全体が中止され、別のコマンドを入力できるようになる前に「Disk operation aborted」「ディスク入出力が打ち切られました」というメッセージが出力されます。
 Retry(再試行)を選択すると失敗したディスク操作がそのまま再実行されます。その前に、入っていなかったディスクを挿入するなどといったなんらかの動作が取られた場合には、処理は正常に行われます。
 Ignore(無視)を選択すると、失敗したディスク操作が無視されます。多くの場合、エラーを無視するのは望ましいことではないので、そのときにはIgnoreオプションは画面には表示されませんが、選択することは可能です。
 エラーを無視すると、重大なシステムエラーを引き起こし、ディスク上のデータが破壊されることがあります。Ignoreオプションが表示されたとしても、他のすべての操作が失敗した場合にのみ慎重に使用してください。
 通常、ディスク上のデータに障害が発生し、ディスクエラーを無視することがデータの全部あるいは一部を復活する唯一の可能性である場合にのみIgnoreを使用します。
 重大なエラー(ディスクが使用不可能なくらい損傷しているなど)が発生した場合、処理は自動的に中止され、適当なエラーメッセージが表示されます(「Bad file allocation table」「FAT 異常です」など)。
 ディスクエラーとして起こり得るエラーとその意味を以下に示します。なお、「」内は、スクリーンモードが漢字モードに設定されている場合に出力される日本語メッセージです。

表2.5 ディスクエラー一覧

英語エラーメッセージ日本語エラーメッセージ
Bad file allocation table FAT異常です
 ディスクのファイルアロケーションテーブル(FAT)が異常です。
 FATとは、それぞれのファイルのデータがディスク上のどこにあるのかを知らせる情報をシステムが保持するためのディスク上の領域です。したがってFATの内容が正しくないと、すべてのデータがまったく読めなくなります。このメッセージは通常、ディスクが使用できないくらい損傷していることを意味します。
Cannot format this driveこのドライブはフォーマットできません
 ディスクのフォーマッティングをサポートしていないドライブ中のディスクをフォーマットしようとしました。これは、RAMディスクを指定してFORMATコマンドを実行した場合などに発生します。
Data error ディスクのデータが異常です
 データがエラーなしで読まれた、あるいは書き込まれたが、CRCチェックでデータのエラーが発見されました。これは通常、ディスクの障害を意味します。
Disk error ディスクが異常です
 データがディスクに対して読み書きできませんでした。
Incompatible disk このディスクは使用できません
 2Dあるいは1Dのディスクをアクセスしようとしました。あるいは片面ドライブで両面ディスクをアクセスしようとしました。
Not a DOS disk MSX-DOSディスクではありません
 MSX-DOSが読み出せるディスクフォーマットではありません。
 例えば、MSX-DOSはCP/Mプログラムを実行することができますが、それはCP/Mのディスクを直接アクセスすることができることを意味するわけではありません。
Not ready ディスクが入っていません
 ディスクがアクセスされているドライブ中に入っていません。ディスクをドライブに挿入し、「Retry」を選択します。
Sector not foundセクターが見つかりません
 MSX-DOSが存在しないセクタを読むかあるいは書こうとしました。ディスクが損傷している可能性があります。
Seek error シークエラーです
 ディスク上の要求されたトラックが見つかりませんでした。ディスクが損傷しているか、ディスクドライブの障害が考えられます。
Unformatted disk ディスクがフォーマットされていません
 ディスクがフォーマットされていません。ディスクをフォーマットしてから使用してください。
Verify error 正しく書き込まれませんでした
 ベリファイがオンの場合にだけ起こり、データがディスクに書き込まれたように見えたが、読み出してみると、書き込んだデータと相違が発見されたことを意味します。
Write error 書き込み異常です
 データが正しく書き込まれませんでした。通常ディスクドライブの障害を意味します。
Write protected diskディスクが書き込み保護されています
 ディスクが書き込み保護されているのに、それにデータを書き込もうとしました。ディスクのプロテクトを外し、「Retry」を選択します。
Wrong disk ディスクが違います
Wrong disk for file このファイル用のディスクではありません
 MSX-DOSが1度ディスクにアクセスし、その後もう1度同じディスクにアクセスする必要が生じましたが、ドライブに異なったディスクが入っていました。正しいディスクを入れて、「Retry」を選択します。

 9.2 コマンドエラー

 コマンドエラーはコマンドの機能を何らかの理由で実行できない場合に起こります。
 エラーがコマンド中で起こり、継続できないような場合には、適当なエラーメッセージが出力されます。
 エラーメッセージは例えば次のように表示されます。

*** File not found
*** ファイルが見つかりません

3つのアスタリスク「***」が最初に表示されてエラーが起こったことを示します。次にメッセージが出力され、次の行に通常のコマンドプロンプトが続きます。起こり得るすべてのエラーは後述します。

9.2.1 エラータイプ付きのエラーメッセージ

 コマンドのエラーが特定の状況で起こると、「エラータイプ」メッセージも出力されることがあります。例えば、通常必要なファイルがディスク上で見つからないと、上記の例のように、「File not found」「ファイルが見つかりません」メッセージが出力されます。
 必要なファイルがリダイレクション記号「<」(6章「リダイレクションとパイプ」を参照)によって指定されていると、出力されるメッセージは次のようになります。

*** Redirection error:  File not found
*** リダイレクトエラー:ファイルが見つかりません

起こり得るエラータイプを以下に示します。

表2.6 エラータイプ一覧

英語エラーメッセージ日本語エラーメッセージ
Batch file error: バッチファイルエラー:
 バッチファイルから読もうとしている間に起こったエラーです。
 例えば、ディスクエラーが起こって「abort」が選択されたときに出力されます。
Piping error: パイプエラー:
 パイプ処理中に起こったエラーで、多くの場合は、COMMAND2.COMが作成するテンポラリファイルとの関連で起こります(6章「リダイレクションとパイプ」を参照)。
 例えば、TEMP環境変数(8章「環境変数の設定」を参照)が正しいドライブやディレクトリを参照していないときに出力されます。
Redirection error: リダイレクトエラー:
 リダイレクト処理中に起こったエラーです。
 例えば、リダイレクション記号「<」、「>」、あるいは「>>」(6章「リダイレクションとパイプ」を参照)の後に不正なファイル名が指定されている、あるいは指定の入力ファイルが見つからないときに出力されます。
Standard input error: 標準入力エラー:
 リダイレクションあるいはパイプがセットアップされた後に、コマンドまたはプログラムへの標準入力で起こったエラーです。
 例えば、ファイルから標準入力がリダイレクトされているが、エンドオブファイルに達したときに出力されます。
Standard output error: 標準出力エラー:
 リダイレクションあるいはパイプがセットアップされた後にコマンドプログラムからの標準出力で起こったエラーです。
 例えば標準出力がファイルへリダイレクトされているが、ディスクが一杯のときに出力されます。

9.2.2 ファイル名付きのエラーメッセージ

 多くのコマンドは複数のファイルやディレクトリを操作し、ワイルドカードでファイル名を与えるとコマンドはいくつものファイルあるいはディレクトリを処理します(例えばRENAMEコマンドやCOPYコマンドなど)。コマンドを実行しているときに、あるファイルでエラーが起こったが、別のファイルでは成功すると思われる場合があります(例えば、「読み出し専用」にセットされている場合)。その場合には、ファイル名が表示され、その後にエラーメッセージが出力されてコマンドは継続します。
 これは例えば次のようになります。

COMMAND2.COM -- File cannot be copied onto itself
COMMAND2.COM -- 自分自身にはコピーできません

9.2.3 エラーメッセージ

 以下のアルファベット順で、起こりえるエラーを示します。

表2.7 エラーメッセージ一覧

英語エラーメッセージ日本語エラーメッセージ
Cannot concatenate destination file 複写先ファイルは結合できません
 このエラーはCONCATで起こり、ソースファイルの指定に適合するファイル名のひとつが目的ファイルであることを意味します。
 これは必ずしも誤りではないのですが、コマンド中での指定誤りの可能性を示します。
Cannot create destination file ファイルを作成できません
 これはCOPYによって起こるエラーで、通常コピーしようとしているファイルの目的ファイルがもし作成されたとすると、すでに使用中のファイルを重ね書きしてしまうことを意味します。
 これはソースファイルまたは、現在実行中のバッチファイルのような使用中のファイルにコピーしようとした場合に起こります。
Cannot overwrite previous destination file ファイルの重ね書きができません
 これはCOPYによって起こるエラーで、コピーしようとしているファイルの目的ファイルがもし作成されたとすると、前にコピーされたファイルの目的ファイルを重ね書きしてしまうことを意味します。
 これは通常、意図する対象がディレクトリであるがその名前を間違えたことを意味します。
Cannot transfer above 64K 64Kを超える転送はできません
 これは通常コマンドからは起こりません。
Command too long コマンドが長すぎます
 与えられたコマンドが長すぎます。
 これはキーボードからコマンドを入力する場合には起こりませんが、バッチファイルからの場合には起こることがあります。コマンドの最大長は%パラメータの代入後127文字です。
Ctrl-C pressed Ctrl-Cが押されました
 CTRL+Cが押されてコマンドが中断されました。
Ctrl-STOP pressed Ctrl-STOPが押されました
 CTRL+STOPが押されてコマンドが中断されました。
Directory exists ディレクトリが既にあります
 コマンドが既存のディレクトリと同じ名前を持つファイルあるいはディレクトリをファイル上に作成しようとしました。
Directory not empty ディレクトリが空ではありません
 RMDIR(RD)がファイルや他のディレクトリを含んでいるディレクトリを削除しようとしました。
 削除されるディレクトリは空でなければなりません。実行するためにはDELコマンドでディレクトリの内容を削除してからRMDIRコマンドを使用して下さい。
Directory not found ディレクトリが見つかりません
 ディレクトリコマンド(RNDIRなど)が指定のディレクトリを発見できませんでした。
Disk full ディスクがいっぱいです
 ディスク上にもう空き領域がありませんでした。この場合、コマンドを実行するためには不要なファイルを削除しなければなりません。
Disk operation aborted ディスク入出力が打ち切られました
 ディスクエラーが起こり、「Abort」オプションが選ばれたため、コマンド全体を中断します。
duplicate filename ファイル名が重複しています
 新しいファイル名が既存のファイル名と同一であるため、RENAME(REN)またはRNDIRが名前の変更を実行できませんでした。
これはまた、移動されるファイルやディレクトリと同じ名前のファイル名が目的のディレクトリ中に存在する場合に、MOVEやMVDIRでも発生します。
End of file ファイルの終わりです
 これは通常コマンドでは起こりません。
Environment string too long 環境変数が長すぎます
 これは通常コマンドでは起こりません。
Error on standard input 標準入力でエラーが起きました
 これは通常コマンドでは起こらず、コマンドがキーボードから読み込まれようとしている間にエラーが起こったことを示します。
Error on standard output 標準出力でエラーが起きました
 これは通常コマンドでは起こらず、コマンドが画面に書き込もうとしている間にエラーが起こったことを示します。
File access violation ファイルアクセスが異常です
 これは通常コマンドでは起こりません。
File allocation error ファイルの割当異常です
 これは通常コマンドでは起こりません。
File cannot be copied onto itself 自分自身にはコピーできません
 ソースファイルを同じファイルにコピーしようとしました。
File exists ファイルが既にあります
 MKDIR(MD)で新しいディレクトリを作成しようとしたが、指定のディレクトリ中に同じ名前のファイルが存在しました。
File for HELP not found HELPファイルが見つかりません
 HELPファイルがヘルプテキストを得るためにファイルを探したが見つかりませんでした。
 HELPファイルは通常、ブートディスクの\HELPまたは\MKHELPというディレクトリ中にあります。
File handle not open ファイルハンドルがオープンされていません
 これは通常コマンドでは起こりません。
File already in use ファイルが使用中です
 コマンドが現在実行中のバッチファイルのような、別の目的ですでに使用されているファイルを変更しようとしました。
File not found ファイルが見つかりません
 コマンドが指定のファイルを見つけられませんでした。
Internal error DOSが異常です
 これは通常コマンドでは起こりません。
Invalid MSX-DOS call 無効なMSX-DOSファンクション番号です
 これは通常コマンドでは起こりません。
Invalid attributes 無効な属性です
 ATTRIBあるいはATDIRで、不正な+または-属性が指定されました。
Invalid date 無効な日付です
 DATEコマンド中で入力された日付が正しい日付でない、あるいは不正な形式で入力されました。
Invalid device operation 無効なデバイスオペレーションです
 コマンドがその機能を組み込みシステムデバイスに実行することができません。
 例えば、ファイルはCONに名前を変更することはできません。
Invalid directory move ディレクトリが移動できません
 MVDIRでディレクトリをそれ自身の下位ディレクトリ中に移動しようとしました。
Invalid drive 無効なドライブ名です
 存在しないドライブが指定されました。
Invalid environment string 無効な環境変数です
 環境変数の名前に不正な文字があります。
 ファイル名に使用できる文字のみが、環境変数の名前に使用できます。
Invalid file handle 無効なファイルハンドルです
 これは通常コマンドでは起こりません。
Invalid filename 不正なファイル名です
 ファイル名に不正な文字があります。
 これはファイル名を指定、もしくはワイルドカードを使ってファイル名を変更しようとしたときに起こります。
Invalid number 無効な数値です
 コマンド中に指定された数値に、数字以外の文字があります。
Invalid option 無効なオプション指定です
 コマンド行で/の後に不正な文字が指定されました。
Invalid . or .. operation .や..に対しては操作できません
 コマンドはディレクトリの最初にある「.」と「..」の特殊なディレクトリに対して、その機能を実行することはできません。
Invalid parameter 無効なパラメータです
 コマンドに対するパラメータが、そのコマンドに対しては正しくありません。
Invalid pathname 無効なパス名です
 コマンド行で指定されたパス名が存在しない、あるいは文法的な誤りがあります。
Invalid process id 無効なプロセスIDです
 これは通常コマンドでは起こりません。
Invalid time 無効な時間です
 TIMEコマンドで入力された時刻が正しい値ではない、あるいは不正な形式で入力されました。
Missing parameter パラメータが不足しています
 コマンドが必要とするパラメータ数より、ユーザーが指定したパラメータの数が少ないです。
No spare file handles ファイルハンドルが足りません
 これは通常コマンドでは起こりません。
Not enough memory メモリー不足です
 指定のコマンドで使用できるだけの十分なメモリがありません。
 例えば、メモリに入りきらないくらい大きいプログラムを読み込もうとした、新しい環境文字列のための十分なメモリがない、などが原因として考えられます。
Not enough memory, system haltedメモリが足りません.システムは停止しました
 MSX-DOSが起動して、処理を続行するのに十分なメモリがないことが分かった場合に出力される特殊なエラーメッセージです。
 メッセージが示すようにシステムが停止したので、コンピュータをリセットしなければなりません。これは通常起こりません。
Pathname too long パス名が長過ぎます
 パス名が長すぎます。
 指定のパス名の長さが100文字を超えているか、あるいはルートディレクトリからファイルまでのパス名の長さの合計が63文字を超えています。
RAM disk already exists RAM DISK(ドライブH:)は既にあります
 これは通常コマンドでは起こりません。
RAM disk does not exist RAM DISKがありません
 RAMDISKコマンドを使用してRAMディスクの現在の大きさを表示しようとしたが、RAMディスクが存在しません。
Read only file ファイルが読み出し専用です
 読み出し専用のファイルを変更あるいは重ね書きしようとしました。
 DIRコマンドによってこれを表示することができ、ATTRIBコマンドでそれを読み出し専用でなくすることができます。
Root directory full ルートディレクトリがいっぱいです
 ルートディレクトリ中のファイル数が決められた最大値(通常12)に達しています。
 サブディレクトリにはこの制限がありません。
System file exists システムファイルが既にあります
 作成すると、システムファイルの属性を持っているファイルに重ね書きしてしまうようなファイルを作成しようとしました。
 システムファイルはMSX-DOSでは使用されず、DIRコマンドで表示されません。また、他のいかなるコマンドからもアクセスできないため、通常はこのエラーはコマンドでは起こりません。
Too many parameters パラメータが多すぎます
 コマンドが必要とするパラメータの数より、ユーザーの指定したパラメータの数が多いです。
Unrecognized command コマンドが違います
 指定のコマンドは内部コマンドでなく、PATHコマンドで指定された現在の検索パスにあるCOMあるいはBATの外部コマンドでもありません。
Wrong version of command コマンドのバージョンが違います
 プログラム実行後、COMMAND2.COMはディスク上のCOMMAND2.COMファイルから自分自身を再ロードしようとしたが、それが同じバージョンではありませんでした。
 プロンプトが表示され、COMMAND2.COMは再び自分自身を再ロードしようとします。
Wrong version of MSX-DOS, system haltedMSX-DOSのバージョンが違います.システムは停止しました
 MSX-DOSシステムの別の部分が必要なものよりも以前のバージョン番号を持つことが分かった場合に表示される特殊なエラーメッセージです。
 メッセージが示すようにシステムが停止したので、コンピューターをリセットしなければなりません。これは通常は起こりません。

 内部的には、エラーはエラー番号によって表現されています。そのためのメッセージがないエラー番号が受け取られるとその番号が表示されます。64以上の番号はMSX-DOSの将来のバージョンのために確保されており、「システムエラー」と呼ばれます。63以下の番号は外部のアプリケーションプログラムで使用することができ、「ユーザエラー」と呼ばれます。32以下のユーザエラーメッセージを表示しません。デフォルトのエラーメッセージ(これらは通常はコマンドでは起きない)は次のようになります。

System error 64  「システムエラー 64」

および

User error 63    「ユーザエラー 63」

 ここで64と63はエラー番号の例です。エラー番号を使用する唯一のコマンドはEXITコマンドです。前述のメッセージに対する実際の番号のリストは16章「エラー」にあります。

  9.3 プロンプトメッセージ

 ディスクを挿入するなどといった、システムが処理を続行する前にユーザーの動作が必要な状況がいくつかあります。また、潜在的に危険なコマンドでは処理を実行する前にプロンプトを出して確認を待つ必要があります。そのような場合に表示される種々のシステムプロンプトを以下に示します。

All data on drive A: will be destroyed
Press any key to continue...
ドライブB:上のすべてのデータは消去されます
何かキーを押して下さい.

このプロンプトはFORMATコマンドで出力され、間違ったディスクを誤ってフォーマットする危険を減らします。FORMATコマンドを中止するには、CTRL+STOP または CTRL+C を押します。

Destroy all data on RAM disk (Y/N)?
RAMディスク上のすべてのデータを消去しますか (Y/N)?

RAMDISKコマンドを指定してRAMディスクをセットアップしたが、RAMディスクが既に存在してします。プロンプトへの応答が Y であると、この既存のRAMディスク上のすべてのファイルが消去されます。 N や CTRL+STOP、CTRL+C を押すとコマンドを中止します。

Disk in drive A: will only be able to boot MSX-DOS
Press any key to continue...
ドライブB:のディスクはMSX-DOSしか立ち上げることが出来なくなります
何かキーを押して下さい.

このプロンプトは外部コマンドのFIXDISKによって出力され、MSX-DOSのものではないディスクを誤って更新してしまう危険性を少なくします。FIXDISKコマンドを中止するにはCTRL+STOP、CTRL+C を押します。

Erase all files (Y/N)?
すべてのファイルを消去しますか (Y/N)?

DEL(またはERA、ERASE)コマンドをディレクトリ中のすべてのファイルを指定して実行したときにこのプロンプトが出力され、多くのファイルを誤って削除してしまう危険を少なくします。

Insert COMMAND2.COM disk in drive A:
Press any key to continue
COMMAND2.COMの入ったディスクをドライブA:に入れて下さい
何かキーを押して下さい.

これはプログラムを実行し終わった後に起こる場合があり、ルートディレクトリにCOMMAND2.COMを含むディスクが指定のドライブに存在する必要があります。
 ドライブ(MSX-DOSが最初にブートされたドライブ)にディスクを挿入後、キーを押すと続行します。COMMAND2.COMが別な場所(RAMディスクなど)にコピーされていること、そこからCOMMAND2.COMを再ロードするようにSHELL環境変数をセットすることが出来ます(8章「環境変数の設定」を参照)。

Insert batch file disk in drive A:
Press any key to continue
バッチファイルの入ったディスクをドライブA:に入れて下さい
何かキーを押して下さい.

これはバッチファイルの実行中に起こる場合があり、システムが次のコマンドをバッチファイルから読む必要があるのにドライブに正しいディスクがないということを示します。
 指定のドライブ(バッチファイルが最初に起動されたドライブ)にディスクを挿入してキーを押すと、バッチファイルの実行が正常に続行します。

Press any key to continue
何かキーを押して下さい.

このプロンプトは通常何らかのユーザーの動作が必要なときに出力され、普通は必要な動作を記述した別のメッセージの後に出力されます。これはまたPAUSEコマンドによって出力されます。コマンドを中止するには、CTRL+STOP または CTRL+C を押します。

Terminate batch file (Y/N)?
バッチ処理を中止しますか (Y/N)?

コマンドがバッチファイル中で実行中の場合に、MSX-DOSがコマンドをCTRL+STOP や CTRL+C を押すなどして中止するとこのプロンプトが出力されます。
 応答が「Y」だと、バッチファイルの処理も中止されます。「N」の場合には、中止されたコマンドに続くコマンドからバッチファイルが続行されます。

*** Wrong version of MSX-DOS
*** MSX-DOSのバージョンが違います

環境変数EXPERT(8章参照)が存在しないか、「OFF」のときに、DOS1でフォーマットされたディスクのプログラムを実行すると、このプロンプトが出力されます。ver.2.30から環境変数EXPERTとともに追加されました。