データ中のNULL文字の扱い
DataMagicでは、入力データ内にNULL文字(0x00)が存在した場合、どのように処理するかを選択できます。
NULL文字の処理方法は、次の4つです。
- 処理停止
-
: 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 →スペース置換」に"置換する"が選択されている。
(6) テキスト形式のデータ切り捨て
入力設定項目の「マッピングを有効にする」のチェックを"ON"にした場合、他の設定に関わらず入力データのNULL文字以降から改行コードまでの文字列を切り捨てます。