ページの先頭行へ戻る
Interstage Data Effector 導入・運用ガイド
Interstage

D.2.2 連結条件ファイル

文字コード、ファイル形式または編集条件などを定義した連結条件を記述します。

実行パラメタの種類と意味

以下に、連結条件ファイルの実行パラメタを示します。

注意

  • 連結条件ファイルの内容は、CharacterCodeパラメタで指定したデータの文字コードで記述してください。

  • パラメタ名は行の先頭から記述してください。


パラメタ

省略

説明

CharacterCode

検索対象となる文字列の文字コードを指定します。
本パラメタを省略した場合、UTF-8が指定されたとみなします。

InFileType

入力ファイルタイプを指定します。
本パラメタを省略した場合、CSVが指定されたとみなします。

ListDef

不可

入力とする項目を定義します。
本パラメタは複数行にまたがって定義できます。

LCondition

仮想項目機能を使う場合に、仮想項目定義を指定します。
本パラメタは複数行にまたがって定義できます。
本パラメタを省略した場合、仮想項目機能は使用できません。
仮想項目定義の詳細については、“A.8 仮想項目機能”を参照してください。

OutFileType

本パラメタにはCSVを指定してください。

OutputDef

不可

出力する項目をリターン式に指定します。
本パラメタは複数行にまたがって定義できます。

Jcondition

入力ジャーナルファイルと入力マスタファイルの連結条件を連結条件式に指定します。
入力マスタファイルを定義しない場合は、本パラメタを省略します。
本パラメタは複数行にまたがって定義できます。

SubstituteZeroForEmpty

OutputDefパラメタに指定する数値演算式における空の扱いを指定します。
本パラメタを省略した場合、NOが指定されたとみなします。

CharacterCode

設定

意味

UTF-8

UTF-8の場合

SHIFT-JIS

Shift-JISの場合

EUC

EUC-JPの場合


InFileType

設定

意味

CSV

CSVの場合

XML

XMLの場合


ListDef

抽出する項目を定義します。


図D.14 ListDefの定義


図D.15 入力項目定義(入力ファイルタイプがCSVの場合)

図D.16 入力項目定義(入力ファイルタイプがXMLの場合)

K略称
  • 入力ジャーナルファイルまたは入力マスタファイルの各項目に対する新たな名前です。後続のOutputDefパラメタまたはJconditionパラメタで参照使用できます。

  • K略称は、全体で一意でなければなりません。

注意

K略称の指定に何らかの誤りがある場合、指定されたK略称を含むメッセージが標準エラー出力に出力されます。K略称にマルチバイト文字を指定し、かつデータの文字コードとシステムロケールの文字コードが異なる場合、メッセージ中のK略称が正しく表示されない場合があります。

項目式
  • 入力項目定義のdocumentで指定したCSVファイルの抽出する項目名を項目式で指定します。

テキスト式
  • テキスト式は、入力項目定義のdocumentで指定したXML文書の抽出するパスをテキスト式で指定します。


参照

項目式の詳細については、“A.1.1 項目式”を参照してください。

テキスト式の詳細については、“A.1.3 テキスト式”を参照してください。



レコードノード指定
  • レコードノード指定は、入力項目定義のdocumentで指定したXML文書の中でレコードとして扱う単位となるノードを指定するものです。

  • レコードノード指定は、パス式を使用して要素ノードを指定します。

  • パス式のパス演算子に“//”は指定できません。

  • パス式のパス要素に“*”は指定できません。

  • レコードノード指定に、テキストノードまたは属性式は指定できません。


相対テキスト式
  • 相対テキスト式は、入力項目定義のdocumentで指定したXML文書中のテキストノードを、レコードノード指定によって指し示される要素ノードからの相対的なパスで指定するものです。

図D.17 相対テキスト式の定義

  • コンテキストノードを基点として、相対テキスト式で示されるテキストノードが複数ある場合、その中の文書順における先頭のテキストノードだけが選択されます。

  • コンテキストノードを基点として、相対テキスト式で指し示されるテキストノードが一つもない場合、相対テキスト式は空を返します。

  • コンテキストノードを基点として、相対要素式で指し示される要素ノードが1つもない場合、相対テキスト式は空を返します。

ポイント

コンテキストノードとは

コンテキストノードとは、その文脈において基点となるノードです。
連結機能におけるコンテキストノードは、ListDefパラメタのレコードノード指定によって指し示される要素ノードです。

相対要素式

要素式は、XMLデータ中の要素ノードを指し示すものです。相対要素式は、コンテキストノードを基点とした相対的な位置にある要素ノードを指し示します。

図D.18 相対要素式の定義

注意

  • 祖先ノード参照は、コンテキストノードの祖先の要素ノードを指し示します。

  • ‘..’はコンテキストノードの親である要素ノードを指し示します。

  • コンテキストノード参照は、コンテキストノードそのものを指します。

  • ‘/’を区切りとして 記号‘..’を続けて記述することで、コンテキストノードの親の親の要素ノード、とコンテキストノードの祖先である要素ノードを指し示すことができます。

  • ルート要素ノードの親、またはその祖先のノードを参照しようとする祖先ノード参照はエラーになります。

  • '/'を区切りとする要素名は、’/’の直前までの式によって指し示されるノードの子で、かつ名前が要素名である要素ノードを指し示します。


位置指定

位置指定は、要素式、またはテキスト式によって指し示される複数のノードの中の特定のノードを指し示す場合に利用します。

注意

  • ノードの位置は、パスで示される複数のノードを文書順に先頭から数えたときの順番で指定します。(1が先頭)。

  • 位置指定の“last()”は、パスによって指し示されるノードの数を表します。位置指定として“last()”だけを指定した場合、位置指定を含むパスは、パスによって示されるノードを文書順に参照したときの最後のノードを指し示すことになります。

  • 位置指定の“last()’の後に続く“-”と数値リテラルは減算を表します。これにより、パスによって示されるノードを最後から数えた順序でノードを指し示すことができます。

  • 位置指定に指定した値が0以下、またはその値よりパスによって指し示されるノードの数より大きくなる場合、式は空を返します。

  • 数値リテラルに小数は指定できません。

OutputDef

ListDefパラメタで定義したK略称を使用して、出力ファイルへの項目の出力順番をリターン式に定義します。


図D.19 出力項目定義

参照

リターン式の詳細については、“A.7 リターン式”を参照してください。


Jcondition

入力ジャーナルファイルと入力マスタファイルの連結条件を連結条件式に指定します。この連結条件によって参照特定された入力マスタファイルの項目を連結結果として出力します。
連結条件は、1つの入力マスタ(M略称)につき1つ指定します。

図D.20 連結条件

参照

連結にかかわる詳細については、“3.3.3 連結機能の注意事項”を参照してください。
連結条件式の詳細については“A.3 連結条件式”を参照してください。


SubstituteZeroForEmpty

OutputDefパラメタに指定する数値演算式における空の扱いを指定します。

指定できる値は以下のいずれかです。

設定

意味

YES

数値演算式における算術演算において、空を0とみなして演算します。
また、数値演算式の結果が空となった場合、0を出力します。

NO

数値演算式における算術演算において、演算対象に空が含まれる場合、演算結果はすべて空を返します。
また、数値演算式の結果が空となった場合、何も出力しません。

参照

数値演算式における空の扱いについては、“A.5.2 数値演算式における空の扱い”を参照してください。


複数行にまたがるパラメタの定義

ListDefパラメタ、LConditionパラメタ、OutputDefパラメタおよびJconditionパラメタは、複数行にまたがった定義を行うことができます。

改行が可能な位置を以下に示します。

表D.3 改行可能な位置

パラメタ

改行可能な位置

ListDef

  • 中括弧({})の前後

  • "document"の前後

  • J略称、M略称またはK略称の前後

  • 項目名、テキスト式の前後

  • カンマ(,)の前後

LCondition

  • 中括弧({})の前後

  • 仮想項目名の前後

  • ":="の前後

  • "IF","THEN","ELSE","ELSEIF","ENDIF"または"EMPTY"の前後

  • 論理演算子の前後

  • 比較演算子の前後

  • 関数名の前後

  • 項目参照の前後

  • 関数の引数の前後

  • 括弧(())の前後

  • カンマ(,)の前後

  • リテラルの前後

OutputDef

  • 中括弧({})の前後

  • 項目参照の前後

  • カンマ(,)の前後

Jcondition

  • 中括弧({})の前後

  • "join"の前後

  • J略称またはM略称の前後

  • カンマ(,)の前後

  • 結合型の前後

  • 括弧(())の前後

  • 関数名の前後

  • 項目参照の前後

  • 関数の引数の前後

  • 文字列型を結合する"+"の前後

  • 結合関係式の"="または"=="の前後

  • 文字列("文字")の前後


連結条件ファイル指定例

以下に、連結条件ファイルの実行パラメタを示します。

WindowsWindowsの場合

# 文字コード
CharacterCode     SHIFT-JIS
# 入力ファイルタイプ
InFileType   XML
# 出力ファイルタイプ
OutFileType  CSV
# 入力項目定義
ListDef {document(Journal){$Kbn   /Jnl/Kbn/text(),
                              $Number /Jnl/Number/text(),
                              $Code   /Jnl/Code/text(),
                              $Name   /Jnl/Name/text(),
                              $Val   /Jnl/Value/text()
             },
             document(Master1){
                              $Kcode /Mst1/code/text(),
                              $Kname /Mst1/name/text()
             },
             document(Master2){
                              $Ncode /Mst2/code/text(),
                              $Nname /Mst2/name/text()
             }
}
# 仮想項目定義
LCondition  {
             $部コード :=
                             IF      $Nname == "第一開発部"  THEN 1
                             ELSEIF  $Nname == "第二開発部"  THEN 2
                             ELSEIF  $Nname == "第三開発部"  THEN 3
                             ELSE EMPTY
                             ENDIF
            }
# リターン式
OutputDef  {$Kbn,$Kname,$部コード,$Nname,$Code,$Name,$Val}
# 連結条件式
Jcondition  {join(Journal,Master1,$Kbn == $Kcode,"LEFT"),
             join(Journal,Master2,$Number == $Ncode,"LEFT")
            }
# 数値演算式における空の扱い
SubstituteZeroForEmpty        NO

SolarisLinuxLinux/Solarisの場合

# 文字コード
CharacterCode  EUC
# 入力ファイルタイプ
InFileType    XML
# 出力ファイルタイプ
OutFileType   CSV
# 入力項目定義
ListDef {document(Journal){$Kbn   /Jnl/Kbn/text(),
                              $Number /Jnl/Number/text(),
                              $Code   /Jnl/Code/text(),
                              $Name   /Jnl/Name/text(),
                              $Val   /Jnl/Value/text()
             },
             document(Master1){
                              $Kcode /Mst1/code/text(),
                              $Kname /Mst1/name/text()
             },
             document(Master2){
                              $Ncode /Mst2/code/text(),
                              $Nname /Mst2/name/text()
             }
}
# 仮想項目定義
LCondition  {
             $部コード :=
                             IF      $Nname == "第一開発部"  THEN 1
                             ELSEIF  $Nname == "第二開発部"  THEN 2
                             ELSEIF  $Nname == "第三開発部"  THEN 3
                             ELSE EMPTY
                             ENDIF
            }
# リターン式
OutputDef  {$Kbn,$Kname,$部コード,$Nname,$Code,$Name,$Val}
# 連結条件式
Jcondition  {join(Journal,Master1,$Kbn == $Kcode,"LEFT"),
             join(Journal,Master2,$Number == $Ncode,"LEFT")
            }
# 数値演算式における空の扱い
SubstituteZeroForEmpty        NO