COBOL2002 XML連携機能ガイド


9.2 入出力時に不当な文字をチェックする機能

XMLドキュメントの入出力時に不当な文字をチェックする機能です。cblxmlコマンドの-chkcharオプションを指定することでチェックされる不当な文字のチェック範囲を拡張できます。

XMLドキュメント出力時,表9-2に従って不当な文字をチェックします。XMLドキュメント入力時,表9-3に従って不当な文字をチェックします。

CBLXML-WR-Interface-BaseElementアクセスルーチンでXMLドキュメント出力時に不当な文字を見つけた場合,ステータス11を返します。該当部分の要素,属性には空の値が出力されます。CBLXML-RD-Interface-BaseElementアクセスルーチンで,XMLドキュメントの入出力時に不当な文字を見つけた場合,ステータス8を返します。

type属性の値が「numeric」,「packed」,「binary」,「float」,および「double」のとき,数字,符号,小数点,"E",および"e"以外の文字は無視して入力されます。なお,XMLとして不正な文字は,XMLドキュメントを開く際にチェックされ,XMLアクセスルーチンのエラーステータス110(CBLXML-XML-PARSE-FAIL)が返されます。XML不正文字については,「付録E.2(1) XML標準仕様での文字の範囲」を参照してください。

表9‒2 出力時にチェックする文字

type属性値

チェックする文字(-chkcharオプション指定あり)

不当な文字・数値があった場合の出力結果

alphanumeric

  • シフトJIS の場合

    0x00〜0x08,0x0b,0x0c,0x0e〜0x1f,0x80,0xa0,0xfd〜0xffとシフトJISの多バイト文字以外

  • 日本語EUCの場合

    0x00〜0x08,0x0b,0x0c,0x0e〜0x1f,0x80,0xa0,0xffと日本語EUCコードの多バイト文字以外

  • Unicodeの場合(環境変数CBLLANGがUNICODE)

    0x00〜0x08,0x0b,0x0c,0x0e〜0x1fとコード範囲(1バイト〜4バイト)以外

空の要素,属性を出力する。

national

  • シフトJIS の場合

    0x00〜0x08,0x0b,0x0c,0x0e〜0x1f,0x80,0xa0,0xfd〜0xffとシフトJISの多バイト文字以外

  • 日本語EUCの場合

    0x00〜0x08,0x0b,0x0c,0x0e〜0x1f,0x80,0xa0,0xffと日本語EUCコードの多バイト文字以外

  • Unicodeの場合(環境変数CBLLANGがUNICODE)

    UCS-2(0x0009,0x000a,0x000d,0x0020〜0x4dff,0x4e00〜0x9fff,0xe000〜0xf8ff,0xf900〜0xfffd)の範囲以外

空の要素,属性を出力する。

numeric

packed

数字・符号以外(COBOLの字類条件での数字検査(IS NUMERIC)を満たさない文字)

空の要素,属性を出力する。

binary

float

double

結果は保証しない。

(凡例)

−:チェックしない。

表9‒3 入力時にチェックする文字

type属性の値

チェックする文字

不当な文字・数値があった場合の入力結果

-chkcharオプション指定なし

-chkcharオプション指定あり

alphanumeric

結果は保証しない。

national

  • Unicode機能を使用しない場合:1バイトの文字

  • Unicode機能を使用する場合: −

  • Unicode機能を使用しない場合:1バイトの文字

  • Unicode機能を使用する場合: −

  • 1バイト文字は「[図データ]」(げた記号)に置き換える。

  • その他の不当な文字の結果は保証しない。

numeric

packed

binary

  • 数値以外

  • sign="unsigned"指定時に負値を入力した場合

  • けた数が320を超えた場合

結果は保証しない。

float

double

  • 数値以外

  • けた数が320を超えた場合

結果は保証しない。

(凡例)

−:チェックしない。

注※ 「[図データ]」(げた記号)は次に示すコードになります。
  • シフトJIS:0x81ac

  • 日本語EUC(UNIXの場合):0xa2ae

  • UTF-16(Unicode機能を使用した場合):0x3013