電気通信において、伝送終了文字(でんそうしゅうりょうもじ、EOT: 英語: End-of-Transmission character)は制御文字の一つで、データ送信側がデータ受信先にデータ伝送の終了を伝えるために送る文字である。ここでいうデータには、1つ以上のテキストおよびメッセージのヘッダが含まれる[1]

EOTは、回線の解放、端末の切断、受信端末の待機状態への遷移などを開始する際によく使用される[1]。最も一般的な使用法は、UNIXの端末ドライバにファイルの終端(End Of File)を知らせ、入力を待ち受けているプログラムを終了させることである。

ASCIIUnicodeでは、EOTはU+0004 <control-0004>に割り当てられている。これはCtrl+Dで入力することができ、キャレット記法^Dと表現される。Unicodeには、EOTの図形表現としてU+2404 symbol for end of transmission (HTML: &#9220;)を提供している[2]。また、U+2301 electric arrowもEOTの図形表現として使用される[3]

UNIXでの使用法 編集

LinuxなどのUNIX系OSにおけるCtrl-D(EOT)の使用法は、DOSにおいて類似の役割を持つCtrl-Z(SUB)とは異なる。DOSのCtrl-Zは、テキストがどこで終了するかを示すために、そのバイトが実際に送信またはファイルに記録される。それとは対照的に、UnixのCtrl-Dは、端末ドライバにファイルの終端を通知するのに使用されるだけで、ファイルや端末からCtrl-Dを読み取ったりそれを書き込んだりしても、特別な意味は持たない。

UNIXでは、end-of-file文字(デフォルトではEOT)によって、端末ドライバは入力バッファ内の全ての文字を直ちに利用可能状態にする。通常、ドライバはend-of-line文字(改行コード等)が現れるまで文字を収集する。入力バッファが空である場合(最後のend-of-line文字やend-of-file文字から文字が入力されていない場合)、端末から読み取るプログラムは0バイトを読み取る。UNIXでは、このような状態はファイルの終端に達したものとみなされる。

これは、UNIX系OSではcatプログラムで実証できる。引数なしでcatコマンドを実行すると、キーボードからの入力を受け付け、その内容を画面に出力する。 Enter以外の文字を入力し、最後にCtrl+Dを押下する。その時点で入力された文字はcatコマンドに送られ、画面に書き込まれる。何も文字を入力せずにCtrl+Dを押下すると、入力ストリームは終了し、プログラムは終了する。Ctrl+Vの後にCtrl+Dを押下すると、EOTコードそのものが入力される。

端末ドライバがrawモードの場合、制御文字は端末ドライバでは解釈されなくなり、EOT文字がプログラムにそのまま送られる。プログラムはそれを自由に解釈できる。一般に、プログラムは、EOTバイトをテキストを終了するという指示として処理する。これは、DOSプログラムにおけるCtrl+Zの挙動と同様である。

メインフレームコンピュータシステムの通信プロトコルでの使用法 編集

EOT文字は、IBMバロースBUNCHなどのメインフレームメーカーによるレガシーな通信プロトコルでも使用される。IBM 3270のPoll/Select、バロース TD830 Contention Modeプロトコルなどの端末送信制御プロトコルは、EOT文字を使用して、2つの協調して動作するコンピュータ(ホストマルチプレクサまたは入力/出力端末など)間の通信シーケンスを終了する。

単一のPoll(コンピュータにデータを要求する)操作やSelect(コンピュータにデータを送信する)操作は、ポーリングするコンピュータとポーリングされるコンピュータとの間の2回の往復送信応答動作を含み、最後に単一のEOT文字を開始側のコンピュータに送信する。

関連項目 編集

脚注 編集

  1. ^ a b end-of-transmission character (EOT)”. Federal Standard 1037C (1996年). 2018年4月29日閲覧。
  2. ^ Control Pictures”. 2013年4月6日閲覧。
  3. ^ Miscellaneous Technical”. 2013年4月7日閲覧。
  •   この記事にはパブリックドメインである、アメリカ合衆国連邦政府が作成した次の文書本文を含む。Federal Standard 1037C. 一般調達局.