Cosminexus ビジネスプロセス管理/エンタープライズサービスバス V8 サービスプラットフォーム 開発ガイド

[目次][用語][索引][前へ][次へ]

19.2.2 ファイル変換オペレーションの処理方式

ファイル変換オペレーションの処理方式について説明します。

<この項の構成>
(1) 処理方式の種類
(2) 一括処理方式
(3) 分割処理方式

(1) 処理方式の種類

ファイル操作アダプタのファイル変換オペレーションには,次の二種類の処理方式があります。

(2) 一括処理方式

入力ファイルを一括して読み込み,一括して変換します。変換後,一括して出力ファイルへ書き込みます。

一括処理方式で対象となるデータフォーマット,および対象とする変換内容を次に示します。

(3) 分割処理方式

入力ファイルの読み込み,変換,出力ファイルへの書き込みを,入力ファイルのレコード単位で処理します。入力ファイルの終端まで繰り返し処理を実行します。

レコード単位の判定には,次の二種類の方式があります。

分割処理方式で,改行セパレータ方式を選択した場合,バイナリフォーマット定義に関係なく,改行コード(LF(0x0a)またはCR+LF(0x0d 0x0a))の出現でレコードの区切りを判断しているため,変換元ファイルにある文字コードの改行のバイトパターンが,改行コード以外のとき(文字コード例:UTF-16_BIG,UTF-16_LITTLE,KEIS+EBCDIC,KEIS+EBCDIK,KEIS),改行セパレータ方式の分割処理方式では正常に処理できません。

なお,CUSTOMを選択した場合,処理対象のデータに従います。

注意
入力ファイルおよび出力ファイルのサイズに制限はありません。ただし,入力ファイルおよび出力ファイルの1レコードのサイズが2GB以上のファイルは変換できません。1レコードのサイズが2GB以上のファイルを変換した場合,動作を保証しません。
(a) 対象とするデータフォーマット

ファイル分割機能が対象とするデータフォーマットは,バイナリフォーマット定義だけです。また,ファイル分割機能が対象とするデータ構造は,ヘッダレコード部,データレコード部,トレーラレコード部がこの順番で出現する構造である必要があります。

データレコード部は,決められた要素の並びが連続して繰り返されている構造を持ったデータです。データベースのテーブル構造と同じで,決められた要素の並び(行)をレコードと呼び,これがn回繰り返されているイメージです。レコード内の要素数およびレコード数に制限はありません。

ヘッダレコード部およびトレーラレコード部は,任意の要素が並ぶ複合内容要素で,レコードが繰り返されることはありません。また,これらの部分は省略できます。

データファイル構造とデータレコード部のイメージを次に示します。

図19-4 データファイル構造

[図データ]

図19-5 データレコード部のイメージ

[図データ]

データフォーマットは固定長形式および改行セパレータ形式に対応します。また,入力および出力フォーマットとも上記の形式の構造であることが必要です。

データ形式の例を次に示します。

図19-6 固定長形式のデータ例

[図データ]

図19-7 改行セパレータ形式のデータ例

[図データ]

フォーマット定義,およびデータ変換定義を次に示します。

フォーマット定義
分割処理方式を利用する場合,入力側と出力側のファイルフォーマットを定義する必要があるため,バイナリフォーマット定義エディタを使用して次のフォーマット定義を作成してください。
  • 入力側のヘッダレコード部のフォーマット
  • 入力側のデータレコード部のフォーマット
  • 入力側のトレーラレコード部のフォーマット
  • 出力側のヘッダレコード部のフォーマット
  • 出力側のデータレコード部のフォーマット
  • 出力側のトレーラレコード部のフォーマット

データ変換定義
分割処理方式を利用する場合,入力側と出力側のフォーマット間のデータ変換を定義する必要があるため,マッピング定義エディタを使用して次のデータ変換定義を作成してください。
  • ヘッダレコード部のデータ変換定義
  • データレコード部のデータ変換定義
  • トレーラレコード部のデータ変換定義
(b) 処理の流れ

レコード分割機能,およびレコード部の位置と長さについて説明します。

レコード分割機能
入力ファイルのバイナリデータがレコード単位に分割されて読み込まれます。読み込まれたデータは,レコードごとにデータ変換されて,出力ファイルへ書き込まれます。レコードの区切りの判定は,固定長方式または改行セパレータ方式から選択して指定できます。
データフォーマットの種類は,ファイル操作アダプタ定義ファイルの次のパラメタで指定してください。
  • csc.adapter.fileOperation.transform.format
内容については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「ファイル操作アダプタ定義ファイル」を参照してください。
  • 固定長方式の場合
    レコードの区切りは,ファイル操作アダプタ定義ファイルの次のパラメタに指定した個所です。
    ・csc.adapter.fileOperation.transform.header.fixedSize
    ・csc.adapter.fileOperation.transform.data.fixedSize
    ・csc.adapter.fileOperation.transform.trailer.fixedSize
    内容については,マニュアル「Cosminexus サービスプラットフォーム リファレンス」の「ファイル操作アダプタ定義ファイル」を参照してください。
  • 改行セパレータ方式の場合
    レコードの区切りは,入力ファイルに改行コード(LF(0x0a)またはCR+LF(0x0d 0x0a))が出現する個所です。ファイル終端もレコードの区切りとして扱われます。なお,改行直後にファイルの終端が出現する場合は,直前の改行と合わせて一つのレコードセパレータとして扱われます。

レコード部の位置と長さ
分割処理方式の場合,現在読み込まれているレコードが,ヘッダレコード部,データレコード部,トレーラレコード部のうちどれなのかを判定する必要があります。そのために,データフォーマットの種類ごとに,レコード部の位置と長さを判定する方法を次に示します。
  • 固定長方式の場合
    レコード部の位置と長さの判定について,次の表に示します。

    表19-4 レコード有無指定によるレコード種別(固定長方式)

    レコード
    有無指定
    ヘッダレコード部
    指定有無
    トレーラレコード部
    指定有無
    レコード部の位置と長さ ヘッダレコード部 ファイル先頭

    ヘッダレコード長
    ファイル先頭

    ヘッダレコード長
    データレコード部 ヘッダレコード部
    終了位置

    データレコード長
    *データレコード数
    ヘッダレコード部
    終了位置

    データレコード長
    *データレコード数
    ファイル先頭

    データレコード長
    *データレコード数
    ファイル先頭

    データレコード長
    *データレコード数
    トレーラレコード部 データレコード部
    終了位置

    トレーラレコード長
    データレコード部
    終了位置

    トレーラレコード長

    (凡例) −:該当しません。


    データレコード数は,次の計算式に従って算出します。
    データレコード部サイズ=
    データファイルサイズ −(ヘッダレコード長+トレーラレコード長)
    レコード数 = データレコード部サイズ/データレコード長(小数点以下切り捨て)
    レコード数の計算結果にあまりがある場合,メッセージ(KDEC80045-W)が出力されたあと,処理が継続されます。この場合,次に示すような可能性があるため,確認して原因を取り除いてください。
    ・入力ファイルの末尾にEODがある。
    ・入力ファイルに誤りがある。
    ・ファイル操作アダプタ定義ファイルの次の項目の設定に誤りがある。
      csc.adapter.fileOperation.transform.headerRecord
      csc.adapter.fileOperation.transform.trailerRecord
      csc.adapter.fileOperation.transform.header.fixedSize
      csc.adapter.fileOperation.transform.data.fixedSize
      csc.adapter.fileOperation.transform.trailer.fixedSize
  • 改行セパレータ方式の場合
    レコード部の位置と長さの判定について,次の表に示します。

    表19-5 レコード有無指定によるレコード種別(改行セパレータ方式)

    レコード
    有無指定
    ヘッダレコード部
    指定有無
    トレーラレコード部
    指定有無
    レコード部の位置と長さ ヘッダレコード部 先頭行 先頭行
    データレコード部 先頭行以降

    最終行直前
    先頭行以降

    最終行
    先頭行

    最終行直前
    先頭行

    最終行
    トレーラレコード部 最終行 最終行

    (凡例) −:該当しません。


    メッセージ(KDEC80047-E)が出力されて処理が終了された場合,次に示すような可能性があるため,確認して原因を取り除いてください。
    ・入力ファイルのレコード数が不足している。
    ・ファイル操作アダプタ定義ファイルの次の項目の設定に誤りがある。
      csc.adapter.fileOperation.transform.headerRecord
      csc.adapter.fileOperation.transform.trailerRecord

    表19-6 エラー判定パターン

    ヘッダレコード部 トレーラレコード部 変換するファイルの行数
    1行以下
    0行以下
    0行以下