# 共通コンポーネントで使用できるコンポーネント

コンポーネントとは、データ加工で実行する処理の単位のことです。コンポーネントの種類を選択し共通コンポーネント情報として作成します。共通コンポーネント情報を作成しておき、出力設定、抽出条件、後処理で共通コンポーネントIDに該当する処理を実行できます。

表5.1 コンポーネントの種類

コンポーネント名 | 処理の内容 | 使用目的
--- | --- | ---
日付 | データ加工開始時点の日付に変換します。いつ呼び出されても、同じ日付を基に文字列を返却します。 | 特定の日付フォーマットを標準化し、出力を統一するために使用します。
時間 | データ加工開始時点の時間に変換します。データ加工が終了するまでの間は、同じ時刻を基に文字列を返却します。 | 特定の時刻フォーマットを標準化し、出力を統一するために使用します。
固定文字列 | 固定文字列を返却します。 | 特定の文字列で出力を統一し、かつ変更を容易にするために使用します。
固定数字文字列 | 固定数字文字列を返却します。 | 特定の数字文字列で出力を統一し、かつ変更を容易にするために使用します。
関数 | 第1層で使用する場合は、マッピングされた項目に対して関数を実行し値を返却します。第1層でマッピングが必要な関数を使用してマッピングされていない場合はエラーになります。第2層以降は、直前のコンポーネントの戻り値が、直前のコンポーネントの返却文字列で指定された引数に上書きされます。それ以外の引数は、直前のコンポーネントの引数が引き継がれます。 | 複数の関数を使用する処理を共通化する目的で使用します。
仮想クエリ | 仮想テーブルへのクエリ実行と同じ処理を実行します。引数は5個（ARG1～ARG5）使用できます。仮想テーブルは使用できません。 | 関数だけでは実現できない処理、特にselect case、数値演算、日付演算を使用する処理を提供します。
初期処理用の仮想クエリでは、“;”を区切ってSQL文（DDL、DML）をいくつでも記述できます。SQL文は、記述した順番に実行されます。 複数のSQLを記載した場合、返却文字列は最後の値を返却したSQL文の値が使用されます。 | 初期処理用コンポーネントで仮想テーブルとそのデータを作成し、コンポーネントで使用します。
Luaスクリプト | Luaスクリプトを使用して、変換処理を実行します。 | 独自で処理を作成するために使用します。

さらに、共通コンポーネントでは、「SAISON_」のプレフィックスを付けたテンプレートを提供しています。

「SAISON_」プレフィックス付きテンプレートは今後アップデートされる場合がありますので、編集して使用する場合は別名にコピーしたものを編集してご利用ください。

表5.2 共通コンポーネントのテンプレート

共通コンポーネントID | 処理の内容
--- | ---
SAISON_BEFORE_DATE | 入力日付がデータ加工実行日付以前の場合TRUEを、そうでない場合FALSEを返却します。
SAISON_CHECKLEN | 入力文字列が指定文字数以下であることをチェックします。正常時は空文字、超過時はエラーメッセージを返却します。マルチバイト文字、および異体字も1文字として計算します。 出力されるエラーメッセージは以下のとおりです。 [エラーメッセージ]
    項目("引数2")の最大文字数は"引数1"ですが、"入力データの文字数"文字が入力されています：入力データ("入力データ")
※赤字部分は該当するデータに置き換えて出力されます。
SAISON_DATE_CHECK | 入力文字列がYYYY/MM/DD形式の日付文字列の場合TRUEを、そうでない場合FALSEを返却します。
SAISON_FORMAT_DATE_OR_NULL | 指定された日付フォーマットにしたがって、対象文字列を変換します。対象文字列が空文字または空白文字（タブおよび改行を含む）のみの場合、空文字を返却します。
SAISON_M10W21 | モジュラス10 ウェイト2・1分割のチェックディジットを計算します。
SAISON_MTOI | 16進文字列をバイナリ値に変換します。先頭に"0X"や"0x"が存在した場合、読み飛ばして16進文字列部分のみを変換します。接頭辞は"0X", "0x", 無しのみ対応しています。これ以外の接頭辞、および16進文字列以外が入力された場合は動作保証対象外となります。
SAISON_PACK2NUMSTR | サイン付内部10進数を数字文字列に変換します。数値部もしくは符号部が不正な値の場合、空文字を返却します。
SAISON_PAD | 指定された文字列を指定されたサイズに達するまで繰り返してパディングします。
SAISON_REPLACE_HEX | 入力文字列内に引数1で指定した16進数文字列が存在した場合、引数2の16進数文字列に置換します。
SAISON_REPLACE_REG | REPLACE_REGの拡張版です。置換文字列にUTF-8の16進数文字列(\xHH)の指定が可能です。
SAISON_STRLEN | 入力文字列の文字数を取得します。マルチバイト文字も1文字と計算します。異体字も1文字と計算します。
SAISON_SUBSTR | 入力文字列の指定した文字数の位置から、指定した文字数の文字列を取得します。
SAISON_TOLOWER | 入力文字列の英大文字を英小文字に変換します。
SAISON_TOUPPER | 入力文字列の英小文字を英大文字に変換します。

(1) SAISON_CHECKLENの用法

「SAISON_CHECKLEN」を使用することで任意の文字列の文字数超過を検出することが可能ですが、文字数超過時にデータ加工処理をエラーにする手順がやや複雑であるため、その実装例を説明します。

以下の実装例では、入力文字数の超過を検知し、詳細メッセージを表示させてエラー終了します。

1. SAISON_CHECKLENの戻り値を受け取る変数を作成

SAISON_CHECKLENの第二引数として受け取るエラーメッセージの代入先となる変数を作成します（説明では変数名を「ERR_COUNTOVER」としています）。

SAISON_CHECKLENは正常時に空文字を返す仕様のため、チェック対象の文字列が複数あっても代入先となる変数は1つでよいです（用途に応じて複数の変数を用意してもよいです）。

画面5.7 データ加工情報設定画面（変数を作成した例）

2. 「変数代入設定」で文字数超過のチェック結果を「ERR_COUNTOVER」変数に代入

データ加工情報設定画面で変数代入アイコンをダブルクリックします。

画面5.8 データ加工情報設定画面（変数代入アイコンをダブルクリック）

変数代入設定画面が表示されます。

この例では、複数項目に対するチェック結果を同一の「ERR_COUNTOVER」変数に代入しています。

複数項目でエラーが発生した場合、そのすべてのエラーメッセージが連結されて「ERR_COUNTOVER」変数に代入されます。

すでに変数に値が代入されている可能性がある「ERR_COUNTOVER」変数に対してさらに値を代入する場合は、既存変数に文字列が連結されるようにしてください。

画面5.9 変数代入設定画面

3. 「カスタムエラー条件」を使用して、「ERR_COUNTOVER」変数が空文字でない場合にエラー終了するよう設定

この例では、文字数超過でエラーが検出された場合は、「ERR_COUNTOVER」変数にエラーメッセージが代入されます。

その内容を詳細メッセージとして出力し、処理をエラー終了します。

画面5.10 データ加工情報設定画面（カスタムエラー条件を設定）