文書番号: 402333
最終更新日: 1997/10/23
この資料は以下の製品について記述したものです。
- Microsoft(R) Excel for Windows(R) Version 5.0 (以下 Excel 5.0)
この記事は、以前は次の ID で公開されていました: JP402333
概要
本文書は、Excel 5.0 と「テキスト ファイル」に関する情報をまとめています。
詳細
1. テキスト ファイルとは
テキスト ファイルという用語は Excel 5.0 の中でも頻繁に使われています。他の OS(オペレーションシステム) やハードウェア、アプリケーション間でデータのやり取りを紹介するような文書には必ずといっていいほどこの言葉が使われています。
テキスト ファイルは、読むことができるキャラクタ (文字) と改行やタブなどの一部の基本的な制御コードを含むファイルを指します。これらの制御コードは ASCII や JISなどの機関で定められたものが使用されます。Microsoft(R) MS-DOS(R) (以下 MS-DOS) では type コマンドで表示される AUTOEXEC.BAT や CONFIG.SYS、拡張子が .TXT などのファイルがその代表です。これに対して「バイナリ ファイル」と呼ばれ、type コマンドでは表示できない実行ファイルや Excel 5.0 の標準のデータ ファイルなどのファイル形式があります。
2. テキスト ファイルの基礎知識
まず、テキスト ファイルを構成する要素からテキスト ファイルの意味を考えてみます。
キャラクタ セット
「 1. テキスト ファイルとは」で「読むことができるキャラクタ」と説明した部分の実際のデータは数字としてのコードで格納されています。「 A 」なら「 A 」というデザインが入っているのではありません。そもそもコンピュータは、内部的にはすべて数値化されていて人間の使う文字などは認識できません。その数値化されたデータを視覚的な文字デザインと対応させている (テーブル) のがキャラクタ セットです。例えば、16 進数で 41であれば「 A 」というデザインに割り当てているということです。
このキャラクタ セットには、いくつもの種類があります。しかしパーソナル コンピュータの世界では ASCII が、またそれに日本語を拡張した Shift JIS コードが使われています。したがってコンピュータや OS がサポートするキャラクタ セットが異なれば、例え同じデータであっても全く違う文字が表示されることになります。
同じ MS-DOS をベースとするパーソナル コンピュータであっても、使用する文字がASCII レベルであれば問題は無いのですが、16 進数で 2 桁目が 9 以上のコードは ASCIIでは定義されていないために、国、OS、メーカーによっては異なるコードが振られていることがあります。
例として、DOS/V パーソナル コンピュータを使い、日本語モードで英語版のソフトウェアを動作させると罫線の部分がカタカナで表示されたり、MS-DOS アプリケーションで使われるスマイル マークのコードを Microsoft(R) Windows(R) (以下 Windows) で表示させると別の文字に化けたり、日本語でも JIS のバージョンやメーカーによって異なる文字が表示されたりすることがあります。
改行文字
テキスト ファイルは、ただ文字が並んでいるだけではありません。例えば AUTOEXEC.BAT を type コマンドを使ってダンプしてみると、一行一行づつ区切られています。これを DEGUB.EXE で 16 進数でダンプしてみると、今度は行単位では区切られていません。行の区切りには 16 進数で 0D、0A のコードが並んで、その次に次の行のコードが来ています。MS-DOS の場合、この 0D と 0A が行の区切りを表します。今後このコードをそれぞれ CR と LF という名で呼ぶことにします。CR はキャリッジ リターン、つまり復帰を表します。LF はライン フィードで改行を表します。この CR と LF が 1 セットで行を分割する働きをしているのです。type コマンドはこのコードが来るとそれ以降のコードを次の行に送ります。しかし DEGUB.EXE コマンドは CR/LF もデータの 1 つとして取り扱います。
これは「 MS-DOS の場合」であることに注意してください。UNIX や Macintosh では若干異なります。このことについては、後で説明します。
データベースや Excel 5.0 などの表計算アプリケーションでは、type コマンド同様に、この CR/LF までを 1 行として取り扱います。この 1 行を「レコード」と呼ぶこともあります。
EOF (ファイルの終端コード)
1 行の終わりは改行コードでしたが、1 ファイルの終わりには何か必要でしょうか。MS-DOS では 16 進数で 1A がそれにあたります。これは EOF (End of File) と呼ばれることがあります。実は MS-DOS には、このファイルの終端コードは必要ないのです。このコードは MS-DOS の元になった 8 ビット CPU 用の汎用 OS である CP/M との互換性を持たせるための仕様です。MS-DOS はディレクトリで、バイト単位でファイルの大きさを管理しています。ですから EOF は無くても MS-DOS はファイルの終わりを認識することはできます。
しかし、一部のテキスト エディタは強制的にこのコードをファイルの終わりに付加します。理由は解りませんが、これがデータの互換性にとって問題となることもあります。
区切り文字 (デリミタ)
データベースや表計算アプリケーションでは、レコードの中に「項目 (アイテム) 」、「フィールド」または「列」という名前で呼んでいる概念を持っています。ここではExcel 5.0 を中心として考えますので「列」という名前を使用します。レコードと列の長さが固定であれば、「何文字目から何文字目までは第一列 (A 列) 」ということがいえますが、可変であったときには困ります。
そこで、各列の間に特別なコードを入れて、これを列の「区切り」として扱うという約束を決めることが考えられます。このコードを「区切り文字 (デリミタ) 」と呼びます。アプリケーション間でデータをやり取りする場合、この区切り文字の約束を合わせて置かなければ区切る位置が違ってきます。Excel 5.0 ではこの区切り文字を任意の文字に設定できますが、多くの場合、「, (カンマ) 」やタブ コードが区切り文字として使われているようです。
3. MS-DOS、Macintosh、UNIX でのテキスト ファイルの違い
MS-DOS も Macintosh も ASCII キャラクタ セットもしくは、これをベースとした Shift JIS を使用しています。この点では互換性はあるのですが、改行文字が異なります。MS-DOS では先程説明したように CR/LF を使用していますが、Macintosh では CR のみです。このため、行 (レコード) の区切りが変わります。テキスト ファイルを媒介としてデータを交換する際には注意が必要です。ただし、MS-DOS と Macintosh では、ディスクフォーマットに元々互換性がありません。これを吸収するための Mac OS 標準の「 Apple File Exchange 」やその他のツールを使えば、これら改行コードを変換してくれますので問題になることは少ないでしょう。LAN を使って、ファイル サーバーを共有しているときに問題となる程度でしょう。
UNIX には注意が必要です。UNIX には元来テキスト ファイルとかバイナリ ファイルという概念はありません。すべて同じファイルとして扱われます。MS-DOS や Macintosh で言うテキスト ファイルの場合には、改行文字は Macintosh と同様 CR のみですが、キャラクタ セットが同じという保証はありません。UNIX はメーカーによって微妙に異なっています。
将来は UNICODE というパーソナル コンピュータやワークステーション関連のメーカーが集まって策定している新しいコード体系が主流となると考えられます。すでに Microsoft(C) Windows NT(TM) は、内部的には UNICODE をサポートしています。他のプラットフォームやアプリケーションがこれをサポートすればテキスト ファイルの互換性は格段に向上するでしょう。
Keywords: KBINFO KB402333
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch