# データ中のNULL文字の扱い

DataMagicでは、入力データ内にNULL文字（0x00）が存在した場合、どのように処理するかを選択できます。

NULL文字の処理方法は、次の5つです。

処理停止

  : NULL文字があった場合、エラーとして処理を停止します。

スペース置き換え

  : NULL文字をスペースに置き換えます。

0置き換え（DBのみ）

  : NULL文字を0に置き換えます。

データ切り捨て

  : NULL文字までをデータと判断し、以降を切り捨てます。

NULL文字を項目の一部として扱う

  : NULL文字を変換しないで、NULL文字として扱います。

テキスト形式のデータ加工など、以降の説明の条件に該当しない場合は、NULL文字をそのまま扱います。

NULL文字が含まれるCSVファイルのプレビューでは、NULL文字は切り捨てられます。

(1) 処理停止

データ加工情報設定画面のオプションタブで、「停止条件」の"フォーマットの文字データ中にNULLがある場合"を設定した場合、入力データ内にNULL文字（0x00）が存在すると、処理を停止します。

入力の「項目タイプ」が"M"、"N"、"X"、"D"の場合に有効です。

停止条件を設定すると、以降の処理を停止するため、「NULL →スペース置換」や「数値項目NULL値の扱い」などの設定は無効になります。

(2) スペース置き換え

データ加工情報設定画面のオプションタブで、「NULL→スペース置換」の"置換する"を設定した場合、入力データ内にNULL文字（0x00）が存在すると、半角スペースに置き換えます。

フォーマット、マルチフォーマット、階層フォーマットの場合に有効となります。

入力の「項目タイプ」は"M"、"N"、"X"、"D"の4種類です。

半角スペースは、入力側の漢字コード種によって次のように置き換えられます。

Shift_JIS、EUC、UTF-8、JIS

  : 0x20

UTF-16（Big Endian）

  : 0x0020

UTF-16（Little Endian）

  : 0x2000

EBCDIC（JEF、IBM、KEIS、NEC）

  : 0x40

注意

制御文字やシフトコードを持つ全角データ内にNULL文字がある場合も無条件で半角スペースに置換されます。

= 備考 =

システム動作環境設定ファイルの「NULL文字を項目の一部として扱う（ed_fmt_null_flag）」に"1(扱う)"を設定していても、この設定が優先されます。

(3) 0置き換え（DBのみ）

DBテーブルの移行において、入力設定画面の「数値項目NULL値の扱い」に"0（ゼロ）"を設定した場合、入力データ内にNULL文字（0x00）が存在すると、0に置き換えられます。

「数値項目NULL値の扱い」に"空文字"を設定した場合は、そのままNULLとして変換されます。ただし、NULL文字はMタイプの空文字として扱います。

(4) データ切り捨て

データ加工情報設定画面のオプションタブで、「停止条件」の"フォーマットの文字データ中にNULLがある場合"を設定せず、「入力動作」の「NULL→スペース置換」で"置換しない"を設定している場合、数値項目以外の入力データ内にNULL文字（0x00）が存在すると、そこまでをデータであると判断し、以降のデータを切り捨てます（入力漢字コード種が"UTF-16"の場合は0x0000）。

図3.19 データ中のNULL文字

この扱いについては、以下の項目が該当します。

- フォーマット項目"X"、"M"、"N"、"D"タイプ

- CSV項目

注意

XMLのテキストまたは属性値内に、NULL文字が存在した場合、入力XMLファイルの読み込みエラーとなります。

(5) NULL文字を項目の一部として扱う

フォーマット情報の場合、NULL文字を変換しないで、NULL文字として扱えます。NULL文字として扱う場合は、システム動作環境設定ファイルの「NULL 文字を項目の一部として扱う（ed_fmt_null_flag）」に"1(扱う)"を設定します。

= 備考 =

データ加工情報設定画面のオプションタブで、以下のどちらかが設定されている場合は、データ加工情報設定画面の設定が優先されます。

- 停止条件に「フォーマットの文字データ中にNULL がある場合」 が選択されている。

- 入力動作の「NULL →スペース置換」に"置換する"が選択されている。

文字コード変換を伴うデータ加工において、入力データの「項目タイプ」が以下のいずれかの2バイトNULL文字(0x0000)を含む場合、NULL文字は外字テーブルのデフォルトコードに変換されます。

- "N"タイプ

- "M"タイプのシフトアウトされた2バイト文字

(6) テキスト形式のデータ切り捨て

入力設定項目の「マッピングを有効にする」のチェックを"ON"にした場合、他の設定に関わらず入力データのNULL文字以降から改行コードまでの文字列を切り捨てます。