述語関数は、条件を満たした場合に真、または偽を返す関数です。真となる条件は関数によって異なります。
述語関数の定義を以下の図に示します。
図3.70 述語関数の定義
is_empty関数
図3.71 is_empty関数の定義
関数名 | 説明 |
---|---|
is_empty | 引数の項目参照が空のとき真、それ以外のとき偽を返却します。 |
以下のデータを従業員番号でソートし、従業員番号、名前、連絡先を出力します。
名前 | 従業員番号 | 携帯電話番号 | 自宅電話番号 |
---|---|---|---|
山田太郎 | 20080121 | 09000000000 | 0550000000 |
田中愛子 | 20070523 | 0580000000 | |
佐藤花子 | 20012111 | 07000000000 | 0300000000 |
鈴木一郎 | 20080281 | 08000000000 | 0680000000 |
鈴木太郎 | 19980120 | 0240000000 |
“もし、携帯電話番号の値が空ならば、自宅電話番号の値を返す”という条件を定義します。
LCondition | { $連絡先 := IF is_empty($携帯電話番号) THEN $自宅電話番号 ELSE $携帯電話番号 ENDIF } |
ソート式 | $従業員番号 |
リターン式 | $従業員番号 従業員番号, $名前 名前, $連絡先 連絡先 |
従業員番号 | 名前 | 連絡先 |
---|---|---|
19980120 | 鈴木太郎 | 0240000000 |
20012111 | 佐藤花子 | 07000000000 |
20070523 | 田中愛子 | 0580000000 |
20080121 | 山田太郎 | 09000000000 |
20080281 | 鈴木一郎 | 08000000000 |
is_joined関数
図3.72 is_joined関数の定義
関数名 | 説明 |
---|---|
is_joined | 出力レコードに、指定されたファイル略称(J略称、またはM略称)のレコードが含まれているかどうかを判定し、含まれている場合は真を、含まれていない場合は偽を返却します。 |
出力レコードの種類 | 引数 | 備考 | |
---|---|---|---|
J略称 | M略称 | ||
ジャーナルとマスタのレコードが結合されて生成された出力レコード | 真 | 真 | |
ジャーナルのレコードに対応するマスタのレコードが存在しない場合の出力レコード | 真 | 偽 | 結合型がLeft Outer、またはFull Outerの場合だけ、この出力レコードが生成されます。 |
マスタのレコードに対応するジャーナルのレコードが存在しない場合の出力レコード | 偽 | 真 | 結合型がFull Outerの場合だけ、この出力レコードが生成されます。 |
注意
連結条件式に指定されているかどうかのチェックは、join()を使用した新しい構文で記述した場合だけ行います。
古い構文で連結条件式を指定した場合はエラーチェックされません。この場合,連結条件式で使われていないファイル略称に対するis_joined関数の結果は、常に偽となります。
is_joined関数を指定した仮想項目、およびその仮想項目を使用するすべての仮想項目は、連結条件式で使用することはできません。(リターン式で使用することができます。)
入力ジャーナルファイルと入力マスタファイルが結合できたかを表すフラグを出力します。(FULL OUTER JOIN方式の場合)
key | value |
---|---|
1001 | 100 |
1002 | 200 |
1004 | 400 |
mkey | mname |
---|---|
1001 | 東京 |
1002 | 神奈川 |
1003 | 静岡 |
連結条件式 (Jcondition) | { join( Jnl, Mst, $key == $mkey, "FULL OUTER") } |
連結条件ファイル (LCondition) | { $フラグ := IF is_joined("Jnl") AND is_joined("Mst") THEN 1 ELSE 0 ENDIF, $vkey := IF is_joined("Jnl") THEN $key ELSEIF is_joined("Mst") THEN $mkey ELSE EMPTY ENDIF } |
リターン式 (OutputDef) | { $vkey key, $mname name, $value, $フラグ } |
key | name | value | フラグ |
---|---|---|---|
1001 | 東京 | 100 | 1 |
1002 | 神奈川 | 200 | 1 |
1004 | 400 | 0 | |
1003 | 静岡 | 0 |
「空」がわかりやすいように、表形式にしています。