# 出力情報の設定

出力情報の設定内容の詳細については、「DataMagic リファレンスマニュアル」のマッピング情報（出力情報）について記載されている個所を参照してください。

(1) 関数を利用した抽出および演算

出力項目として、入力項目、固定値またはクエリ値を定義できます。

それぞれに対して関数を利用して、データを抽出および変換できます。

DataMagicには、入力データの内容によって出力データの内容を処理する機能として関数機能があります。現在用意されている関数は以下のとおりです。関数の詳細については「DataMagic リファレンスマニュアル」を参照してください。

複数の関数を指定して、関数の処理結果を次の関数に入力できます。これを関数の多段指定といいます。関数を多段で指定する形式については、「DataMagic リファレンスマニュアル」を参照してください。

表3.5 関数の一覧

関数名 | 説明
--- | ---
CALC_MONTHS | 引数で指定した日付を、月単位で加減算した日付に変換します。
CHK_LENB | 文字列長が指定したサイズの範囲内のデータかどうかをチェックし、指定の文字列を返します。
COALESCE | 引数に含まれる項目の最初の「非空文字」を返します。
DISPLAY_TO_Z | 符号付数字（COBOL DISPLAY 形式）から数字文字列に変換します。
FORMAT_DATE | 対象の文字列を、引数に指定した日付の形式に変換します。
FORMAT_NUM | 対象の文字列を、引数に指定した数値形式に変換します。
IF | 条件にマッチした場合、対応する結果を返します。マッチする条件がない場合、デフォルト値を返します。
ITOM | Iタイプのデータを文字データに変換します。
JULIANDAY | マッピングされた文字列を、日付として対応するユリウス日に変換します。また、引数に日付を指定した場合は、その日付をユリウス日に変換します。
LENB | データのバイト数を取得します。また、それを利用して、CSVの項目数が指定された項目数と一致しているかをチェックできます。
MATCH_REG | マッピングされた文字列が指定した条件に合致するかどうかを判定し、判定結果に従って別の文字列に変換します。
REPLACE_DB | 引数で指定したSQLを発行してDBテーブルを検索し、検索結果の値に置換します。
REPLACE_REG | 引数で指定した文字列を検索し、別の文字列に置換します。
SEQNO | 引数で指定した規則に基づき、シーケンシャルな番号を出力します。
SUBSTR | 引数で指定したバイト数の文字列を切り出します。
TO_INCODE | 対象文字列を、引数に指定した方法で入力文字コードに変換します。外字およびユーザテーブルコードは使用できません。 DataMagic Desktopグレードの場合は、TO_INCODE関数は使用できません。
Z_TO_DISPLAY | 数字文字列から符号付数字（COBOL DISPLAY 形式）に変換します。

= 備考 =

関数の設定はマッピング情報設定画面の出力情報設定画面で行います。

それぞれの関数で処理対象となるデータは、マッピング情報設定画面（出力情報）で指定した「開始位置」と「出力サイズ」から変換実行時に取得された入力データです。また、関数処理で返された値は出力項目の値として出力されます。

図3.18 関数処理フロー

(2) 数値演算および日付演算

入力項目が数値タイプまたは日付タイプの場合、出力結果としてそれぞれの項目の演算結果を定義できます。

(3) クエリ値に対して実行するSQLを指定

画面3.18 出力情報設定画面

仮想テーブル設定で設定された仮想テーブルのクエリ値に対して実行するSQLを指定できます。仮想テーブルの作成方法については、「仮想テーブルの設定」を参照してください。

仮想テーブルから値を取得するには、データ加工情報設定の出力情報の出力情報設定画面にて"クエリ値"を選択し、SQL文を指定します。「クエリ値」は任意のSQL文の指定ができますが、検索条件により複数の値が条件に合致した場合は、最初に合致したレコードの値を返します。また、検索条件に合致したレコードがなかった場合の動作を、出力情報設定画面における「未ヒット時の挙動」の設定で、エラーとするか、もしくはエラーとせずに空文字データとして扱うのかを選択できます。

(4) 仮想クエリの注意

- クエリ値に指定したSQL文については、その妥当性チェックは行われません。そのため、不正な設定の場合は変換エラーとなります。

- クエリ値へのSQLの実行で、値が浮動小数となる場合は、小数部9桁にて値を返却します。そのためその数値レイアウトを指定したい場合は出力フォーマットを設定してください。

- 固定クエリのSQL文で、SELECTするカラムを複数指定した場合、一番目に指定したカラムの値を返却します。

- 仮想テーブル名、仮想テーブル項目名をSQL文で指定する場合、両端を[]で囲んでください。固定クエリでSQL文を指定する際、仮想テーブル名、仮想テーブル項目名の両端が[]で囲まれていない場合の動作は保証されません。

  例） select [col1] from [vt]

- 仮想テーブルにバイナリタイプとして取り込んだ項目をWHERE句に指定する際、その比較対象がバイナリ以外の場合、正しく仮想テーブルからデータを取得できません。

- クエリ値における“$VAR”、“$INUM”、“$INAME”、“$DNUM”、“$DSTR”、“$MINUM”、“$RCOUNT”の指定は、値として展開されます。仮想テーブルの列名としては扱われません。また、指定できる最大数は999です。DM_REC_COUNTの指定は、仮想テーブルのレコード番号として展開されます。

(5) 共通コンポーネントを利用した変換処理

出力項目の設定では、DataMagicのデータ加工で共通で使用できる処理（共通コンポーネント）を利用して、データを抽出および変換できます。

共通コンポーネントを使用するときは、出力情報設定画面で共通コンポーネントを選択し、共通コンポーネントIDを指定します。

共通コンポーネントでは、使用頻度が高い処理をテンプレートを提供しています。

共通コンポーネントIDの設定については、「共通コンポーネント情報の設定」を参照してください。

画面3.19 出力情報設定画面（共通コンポーネントを指定）

共通コンポーネントとして作成した処理は、共通コンポーネントIDとして登録します。出力設定では、その共通コンポーネントIDを指定して、データの抽出と変換を実行します。

マッピング情報設定画面の出力情報設定画面では、共通コンポーネントIDの処理に対して、引数を最大5個設定できます。

画面3.20 出力情報設定画面（共通コンポーネントの引数を指定）

(6) ユーザ出口プログラムを使用した変換の設定

ユーザが作成したユーザ出口プログラムを設定できます。

ユーザ出口プログラムの作成方法については、「ユーザ出口プログラムの作成」を参照してください。