dir「中止、再試行、失敗?」(または「中止、再試行、無視?」) は、 DOSオペレーティングシステムで見られるエラー メッセージで、エンドユーザーに実行すべき操作を促します。CP /Mよりは改善されていますが[ 1 ]、このメッセージはコンピュータユーザー インターフェイスのユーザビリティの低さの例として挙げられています。
CP/Mでは、フロッピーディスクドライブのドアが開いた状態で読み取りを試みると、ディスクが挿入されてドアが閉じられるまで処理が停止しました(初期のディスクハードウェアは、ディスクが回転するまで信号を送信せず、信号がないことを検知するためのタイムアウト処理は、これらの小型システムではコード量が多すぎたためです)。CP/Mの多くのユーザーは、複数のディスクを管理する方法として、この動作に慣れていました。つまり、適切なディスクが挿入されるまでプログラムによるファイルの読み書きを停止するために、ディスクドライブを開くという方法です。
PC DOSの主要な設計上の考慮事項は、CP/M 用に書かれたソフトウェアが変更なしで DOS に移植可能であることでした。最初のIBM PCでさえ、ディスク ドライブのドアが開いていることをオペレーティングシステムに伝えるハードウェアを備えていましたが、ソフトウェアにエラーを返すには、エラーを処理するようにソフトウェアを書き直す必要がありました。それでも、特にユーザーがドライブに挿入するディスクを探す必要なくハングから抜け出す方法を提供することで、エクスペリエンスを向上させることが望まれていました。[ 1 ]プロンプトは、この理由で考案されました。
同様に、CP/M はエラーが発生している限り、ディスクセクターの読み書きを繰り返していました。多くの場合、この状態から抜け出す唯一の方法は、ディスクを別のディスクに交換することでした(すると、新しいディスクからランダムなデータが読み込まれました)。プロンプトは、この動作を停止するための手段としても再利用されていました。
ディスクが見つからない、ディスクドライブのドアが開いている、またはディスクの読み取り中にチェックサムエラーが発生すると、DOS では「重大なエラー」と定義され、「重大なエラー ハンドラ」が呼び出されます。[ 2 ]デフォルトの「重大なエラー ハンドラ」はCOMMAND.COM [ 2 ]の一部であり、「中止、再試行、...」プロンプトを表示してから、ユーザーの入力を待ちます。ユーザーはキーを押して実行したい操作を指定できます。利用可能なオプションには次のものがありました。[ 3 ]
プログラムは実行中に独自の「重大なエラー ハンドラ」をインストールすることができ、[ 2 ]多くの高度なプログラム (特にフルスクリーン プログラム) は、メッセージがディスプレイを妨害するのを避けるためにそうしていました。一部のプログラムは、DOS 2.0 で欠落している「Fail」応答を偽装するために、呼び出し元のプログラムにジャンプバックし、DOS のリターン スタックをスキップしました。これはスタック レイアウトに依存し、オペレーティングシステムのクリーンアップ操作をスキップするため、危険なハックでした。
MS-DOS 6.22には、ハードディスクのライトビハインドキャッシュのフラッシュが完了できなかった場合に、「(R)再試行」というオプションしか選択できないという特殊なケースが存在しました。ユーザーは、書き込みが成功するまで再試行するか、システムをシャットダウンするしかありませんでした。
エラーメッセージは、ユーザーインターフェース設計の不備の例として挙げられています。ほとんどの場合、「R」はメッセージを繰り返すだけで、他の文字はすべてプログラムのクラッシュとそれに相当する結果を引き起こし、すべての作業が失われます。後のバージョンでは、「Fail」でもプログラムがクラッシュしないことがありました。学者のミレイユ・ヒルデブラントは、次のように説明しています。[ 4 ]
これは劣悪なインターフェースデザインの象徴となってしまった。なぜなら、全く行き詰まってしまったからだ。唯一の有効な選択肢は、作業内容が失われることを受け入れ、プログラムを終了して最初からやり直す以外に何もすることがなくなるまで、Rと入力し続けることのように思えたため、まさにジレンマだった。
ハードディスクや Zip ドライブなどの大容量リムーバブル メディアの登場により、ドライブごとに複数のディスクを管理する必要がなくなり、プロンプトは不要になりました。プロンプトは、すぐに「失敗」と表示されるコードに徐々に置き換えられました。DOS 3.3 の COMMAND.COM は、/Fデフォルトの重大なエラー ハンドラがすべてのエラーで「失敗」を返すように強制する起動オプションを提供しました。バージョン 4.0 以降、代替コマンドライン プロセッサである4DOSとNDOSも、 /内の/F対応するCritFail=Yesディレクティブをサポートしました。このオプションは、PTS-DOS 6.51 および S/DOS 1.0 の COMMAND.COM、およびDR-DOS 7.02 以降でもサポートされていました。OpenDOS 7.01 では、COMMAND.COM は同様の機能(「重大なエラー ハンドラをインストールしない」と説明されています) を提供しており、これは新しいバージョンでもサポートされています。Linux などの他のほとんどのオペレーティングシステムは、常にすべての場合で「失敗」と表示されます。4DOS.ININDOS.INI/N

2001年現在、Windowsは依然として同様のプロンプトを生成できますが、ダイアログボックスでより詳細なエラーメッセージが表示されます。選択肢は似ていますが、名前が変更されています。「キャンセル」(ユーザーにとっては「中止」に似ていますが、技術的には異なるエラーコードの「失敗」です)、「再試行」(「再試行」の代わりに)、「続行」(「失敗」の代わりに)です。これは、フルボリューム名でファイルを開いた場合、またはファイルが開いている間にディスクを取り外した場合に、一部のリムーバブルメディアのドライバによってサポートされている可能性があります。ただし、CDドライブにディスクがない状態で「E:」を読み取ろうとするなど、DOSでプロンプトをトリガーしたのと同様の日常的な操作では、Windowsは即座に「失敗」を生成します。
[...] エラー処理は、MS-DOS の最も成熟した機能の 1 つです。オペレーティングシステムはディスク エラーを捕捉し、理解しやすい英語でエラー メッセージを表示し、再試行、無視、または中止のオプションを提供します。MS-DOS 上で実行されるアプリケーション プログラムもこれらのエラーを捕捉し、アプリケーションに最も適合した方法で処理することができ、アプリケーション プログラムが常にシステムを制御できるようにします。 [...]