文字コード、ファイル形式または編集条件などを定義した連結条件を記述します。
以下に、連結条件ファイルの実行パラメタを示します。
注意
連結条件ファイルの内容は、CharacterCodeパラメタで指定したデータの文字コードで記述してください。
パラメタ名は行の先頭から記述してください。
パラメタ名 | 省略 | 説明 |
---|---|---|
可 | 検索対象となる文字列の文字コードを指定します。 | |
可 | 入力ファイルタイプを指定します。 | |
不可 | 入力とする項目を定義します。 | |
LCondition | 可 | 仮想項目機能を使う場合に、仮想項目定義を指定します。 |
OutFileType | 可 | 本パラメタにはCSVを指定してください。 |
不可 | 出力する項目をリターン式に指定します。 | |
可 | 入力ジャーナルファイルと入力マスタファイルの連結条件を連結条件式に指定します。 | |
可 | OutputDefパラメタに指定する数値演算式における空の扱いを指定します。 |
抽出する項目を定義します。
図D.14 ListDefの定義
図D.15 入力項目定義(入力ファイルタイプがCSVの場合)
図D.16 入力項目定義(入力ファイルタイプがXMLの場合)
入力ジャーナルファイルまたは入力マスタファイルの各項目に対する新たな名前です。後続の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以下、またはその値よりパスによって指し示されるノードの数より大きくなる場合、式は空を返します。
数値リテラルに小数は指定できません。
参照
リターン式の詳細については、“A.7 リターン式”を参照してください。
入力ジャーナルファイルと入力マスタファイルの連結条件を連結条件式に指定します。この連結条件によって参照特定された入力マスタファイルの項目を連結結果として出力します。
連結条件は、1つの入力マスタ(M略称)につき1つ指定します。
図D.20 連結条件
参照
連結にかかわる詳細については、“3.3.3 連結機能の注意事項”を参照してください。
連結条件式の詳細については“A.3 連結条件式”を参照してください。
OutputDefパラメタに指定する数値演算式における空の扱いを指定します。
指定できる値は以下のいずれかです。
設定 | 意味 |
---|---|
YES | 数値演算式における算術演算において、空を0とみなして演算します。 |
NO | 数値演算式における算術演算において、演算対象に空が含まれる場合、演算結果はすべて空を返します。 |
参照
数値演算式における空の扱いについては、“A.5.2 数値演算式における空の扱い”を参照してください。
ListDefパラメタ、LConditionパラメタ、OutputDefパラメタおよびJconditionパラメタは、複数行にまたがった定義を行うことができます。
改行が可能な位置を以下に示します。
パラメタ名 | 改行可能な位置 |
---|---|
| |
LCondition |
|
| |
|
以下に、連結条件ファイルの実行パラメタを示します。
Windowsの場合
# 文字コード 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 |
Linux/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 |