# エラー原因ファイルのフォーマット

【エラー原因の出力仕様】

  1つのエラーに対して、エラー内容を1行で出力します。

  1レコード中の複数の項目に対してスキップ可能なエラーが存在した場合、エラーを複数行に分けて出力します。

【ファイルの文字コードおよび言語】

  文字コード、および言語は次の表のとおりです。

  表7.14 エラー原因ファイルの文字コードおよび言語

  カテゴリ | Windows | UNIX/Linux
  --- | --- | ---
  文字コード | 「SHIFT-JIS」固定 | システム動作環境設定ファイルに設定された自機種のコード（knjcode）
  改行コード | 「0D0A」固定 | 「0A」固定
  BOM | 無し
  言語 | システム動作環境設定ファイルに設定された言語（huledlang）

【フォーマット】

エラーは、次の形式で出力されます。

"完了コード-詳細コード","完了メッセージ","詳細メッセージ","追加情報","キー項目情報"

各項目はCSV形式（カンマ区切り）で出力されます。

各項目のデータは、”（ダブルクォーテーション）で囲まれて出力されます。

「キー項目情報」はデータ加工実行コマンド（utledコマンド）で 「-errcausekeys」を指定した場合にのみ出力されます。

- 完了コード-詳細コード

  4桁の数字文字列。4桁に満たない場合、上位桁を0詰め。

- 完了メッセージ、詳細メッセージ

  改行コードや一部の文字を置換したメッセージ。

  以下のように置き換えて出力します。

  表7.15 出力メッセージにおける制御文字の置き換えルール

  置き換え対象文字 | 置き換え後の文字 | 備考
  --- | --- | ---
  \n (0x0A) | \n (0x5C, 0x6E) |
  \r (0x0D) | \r (0x5C, 0x72) |
  \0 (0x00) | \0 (0x5C, 0x30) |
  , (0x2C) | : (0x3A) | カンマは区切り文字と使用しているため、メッセージ内のカンマはコロンに置き換え

- 追加情報

  エラー位置を特定するための情報。

  以下の表の情報をスペース区切りで出力します。

  出力順序は「#」の順となります。レコード番号、項目番号等の数値は1から始まります。ただし、レコード全体に関わるエラーの場合、項目番号を「0」として出力します。

  表7.16 追加情報の内容

  # | 出力情報 | 出力条件 | 説明 | 出力例
  --- | --- | --- | --- | ---
  1 | 入力種別(入力) | レコード読み込み時のエラー | エラー項目を検出した入力種別 | 入力種別(入力)
  2 | 入力レコード数(%d) | 必ず出力 | 入力レコードのレコード番号 | 入力レコード数(5)
  3 | 入力項目番号(%d) | レコード読み込み時のエラー | 入力レコードの項目番号 | 入力項目番号(3)
  4 | 条件設定%d(%s) | レコード加工および出力時のエラー | データ加工情報設定で定義した抽出条件、カスタムエラー条件の通番および条件種別 <条件種別> 以下のいずれかを出力 抽出条件 カスタムエラー条件 <補足事項> 「条件なし」の抽出条件を設定した場合、%dには「0」を出力 「条件なし」はVer.1のパラメータファイルを使用した場合にのみ設定可 | 条件設定2(抽出条件)
  5 | 出力番号(%d) | レコード加工および出力時のエラー 変数の代入エラー | データ加工情報設定で定義した出力設定の番号 変数の代入エラーの場合は、「変数」という文字列になる | 出力番号(3) 出力番号(変数)
  6 | 出力項目番号(%d) | レコード加工および出力時のエラー | 出力レコードの項目番号 (*1) | 出力項目番号(4)
  7 | 出力項目名(%s) | レコード加工および出力時のエラー 変数の代入エラー | 出力レコードの項目名 (*2) 変数の代入エラーの場合は、変数名になる | 出力項目名(NAME)

  *1 | : | 出力設定でIDを省略した場合に使用されます。
  *2 | : | 出力設定でIDを省略しなかった場合に使用されます。

- キー項目情報

  エラーのキー項目を特定する情報。

  データ加工実行コマンド（utledコマンド）実行時、「-errcausekeys」引数で指定された順番でキー項目名および項目内容を出力します。

  キー項目情報の出力フォーマットについて

  キー項目情報は以下のように出力します。

  "キー項目:キー項目名1(項目内容) キー項目名2(項目内容)"

  キー項目情報はプレフィックスとして「キー項目：」を出力します。

  キー項目名と項目内容を1セットとして出力します。

  キー項目が複数指定されている場合、1セット（キー項目名と項目内容）の間は半角スペース（0x20）で区切って出力します。

  注意

  - キー項目として指定された項目がフォーマット不正で正しく認識出来ない場合、項目内容が正しく表示できない場合があります

  - 「キー項目情報」が8,192バイト（先頭および末尾のダブルクォーテーションを除く）を超えた場合、8,192バイトを超えた分のデータは切り捨てられます。8,192バイトまでのデータが、”（ダブルクォーテーション）で囲まれて出力されます。

  出力文字列の変換について

  項目タイプが以下の数値タイプの場合、キー項目内容を数字文字列に変換して出力します。

  - 9（サイン無外部10進数）

  - P（サイン付内部10進数）

  - S（サイン付外部10進数）

  - B（バイナリ）

  - F（浮動小数点タイプ）

  項目タイプが以下のバイナリタイプの場合、キー項目内容を16進数表記に変換して出力します。

  - I（イメージタイプ）

  たとえば、16進数表記「00 01 0A」は「\x00 \x01 \x0A」のように出力します。

  改行コードや一部の文字は以下のように置き換えて出力します。

  表7.17 項目内容における制御文字の置き換えルール

  置き換え対象文字 | 置き換え後の文字 | 備考
  --- | --- | ---
  \n (0x0A) | \n (0x5C, 0x6E) |
  \r (0x0D) | \r (0x5C, 0x72) |
  \0 (0x00) | \0 (0x5C, 0x30) |
  \ (0x5C) | \\ (0x5C, 0x5C) |
  “ (0x22) | \x22 (0x5C, 0x78, 0x32, 0x32) | ダブルクォーテーションは囲み文字と使用しているため、16進数表記に置き換え
  , (0x2C) | \x2C (0x5C, 0x78, 0x32, 0x43) | カンマは区切り文字と使用しているため、16進数表記に置き換え

【出力例】

  "0097-0006","コード変換エラー","3バイト目を処理中に未登録の外字がありました。コード(0x8740)","入力レコード数(1) 条件設定2(抽出条件) 出力番号(3) 出力項目番号(1) ","キー項目:店舗コード(01234) 商品コード(ABC-01234)"