置換文字(ちかんもじ、英: substitute character、SUB)は、
制御文字の一種です。本来の用途は、受信側が不明瞭な文字や無効な文字を受信した際に、それを送信側に通知することでした。しかし、現代の通信では下位レイヤで
誤り検出訂正が行われるため、この目的で使用されることはほとんどなくなり、他の用途で利用されることが一般的です。
特に、いくつかのオペレーティングシステムやプログラミング言語では、ファイルの終端(EOF)を示すために広く用いられています。
ASCIIと
Unicodeでは、置換文字は十進数で26、十六進数で1Aに割り当てられています。
キャレット記法では「^
Z」と表記され、
Unicodeでは
制御文字の図形表現として「␚」(U+241A)が定義されています。
標準的なキーボードでは、Ctrlキーと
Zキーを同時に押すことで、この置換文字コードが出力されます。
使用法
CP/M|CP_M(ver.1およびver.2)およびそれから派生したMP/Mなどのシステムでは、
ファイルシステム自体がファイルサイズを記録する機能を持っていなかったため、ファイルの終端を特定するためのマークが必要でした。このため、
CP/M|CP_Mではファイルの末尾に0x1A(置換文字)を付加していました。
CP/M|CP_M ver.3以降の拡張
CP/M|CP_Mファイルシステム(Concurrent
CP/M|CP_M, Concurrent DOS, DOS Plusなど)では、バイト単位でのファイル管理が可能になったため、技術的には必須ではなくなりましたが、後方互換性のためにこの慣習が残りました。
CP/M|CP_M、
86-DOS、
MS-DOS、PC DOS、
DR-DOSおよびこれらの派生OSでは、文字ストリームの終端を示すために0x1A(置換文字)が引き続き使用されています。また、インタラクティブなコマンドラインウィンドウでユーザー入力を終了させたり、「COPY CON: TYPEDTXT.TXT」のようなコンソールリダイレクションを終了させる際にも用いられます。
現在では、置換文字がファイルの終端を示す必要性は技術的にはなくなりましたが、多くのテキストエディタやプログラミング言語では、ファイルの末尾にこの文字を挿入したり、挿入するように設定することが可能です。このようにして挿入されたEOFは「ソフトEOF」と呼ばれ、必ずしも物理的なファイルの終端を示すものではありませんが、「これより先に有用なデータはない」ということを示します。
ファイルシステム上では、ソフトEOF以降にもデータが存在する可能性がありますが、TYPEコマンドやエディタでファイルを表示する際には、その部分は隠されます。
多くのファイル形式の標準(例えばPNGやGIF)では、置換文字がヘッダーの末尾に挿入されており、テキストファイルとして表示した場合にヘッダー部分のみが表示されるように工夫されています。
Visual Basicなど、いくつかのプログラミング言語では、ファイルを読み込む際に置換文字以降のデータを読み込むことができません。しかし、ファイルをバイナリ形式で読み込めば、置換文字以降のデータも読み込むことが可能です。
Unix系システムでは、ジョブ制御機能を備えたシェルにおいて、置換文字(Ctrl-
Z)はプロセスを中断(サスペンド)させるシグナル(SIGTSTP)を発生させるために用いられます。中断されたプロセスは、フォアグラウンドまたはバックグラウンドで再開するか、終了させることができます。
出典
Federal Standard 1037C
関連項目
制御文字
*
ASCII