# CHAPTER 6: 非印字データ文字

`CHAR`型タイプ 3 または`TEXT`型アトリビュートに 端末およびファイルからロードしてデータを登録する時に 制御文字、改行などの特別の文字が含まれているデータの場合、 エラーが生じることがあります。 このようなエラーが発生する原因として、これらの文字は オペレーティングシステムまたはターミナルの機能において 特別な意味を持つためで、データとして扱われないためです。 例えば、<Ctrl+D>文字は、通常 UNIXではファイル終端文字（Windows NTでは <Ctrl+Z>)で、端末上からの入力あるいはデータファイルに含まれている場合、 データエントリを終了します。

mxまたはmrルーチン (詳細は、 Empress ホスト言語: C インターフェイス - mx ルーチン または Empress ホスト言語: C カーネルレベルインターフェイス - mr ルーチン を参照してください。) を使用した C 言語プログラムから、 問題の文字(ASCII の NUL以外)をロードすることは常に可能です。

ファイルからロードした場合、以下の文字は、通常、終了文字として扱われ、 格納されません。

表 6-1 終了文字

文字名 | ８進表現
`NUL` | 000
`LF` | 012
`VT` | 013
`FF` | 014
`CR` | 015
`<Ctrl+V>` | 026

端末からのデータ登録する場合、 上記の表以外にも問題の原因となる可能性がある文字があります。 (これは端末の機能によっても異なります。) 以下に問題の原因となる文字を示します。

表 1-2 問題の原因となる文字

文字名 | ８進表現
`<Ctrl+D>` | 004
`<Ctrl+H>` | 010
`<Ctrl+P>` | 020
`<Ctrl+Q>` | 021
`<Ctrl+S>` | 023
`<Ctrl+U>` | 025

データとして、このような制御文字を入力する必要がある場合、 利用している固有のオペレーティングシステム上で困難な状況が発生するかどうかを 最初にテストすることを提案します。 なんらかの問題がある場合は、データをロードするために短い C 言語プログラムが 必要になります。 テーブルにデータ値を登録する簡単なプログラムを Empress ホスト言語: C インターフェイス - mx ルーチン マニュアルで解説されています。