# マッピング情報（出力情報）

(1) 出力情報設定項目

種別

出力される項目の種類を指定します。

選択した項目によって、設定する項目が異なります。

入力項目

  : 入力側の項目です。

数値演算

  : 数値演算式です。

クエリ値

  : 仮想テーブルのクエリ値、動的クエリ値です。

共通コンポーネント

  : 出力情報に共通コンポーネントを使用します。

固定値

  : 出力側に挿入される固定文字列、実行時引数で指定する動的文字列の番号、日付文字列、時間文字列です。

日付演算

  : 日付演算式です。

ユーザ出口プログラム

  : ユーザ出口プログラムです。

項目名

追加する入力側の項目名を指定します。

開始位置

項目を何バイト目から出力するのかを指定します。

“1”～”99999”で指定してください。省略不可です。

出力サイズ

項目を開始位置から何バイト出力するのかを指定します。

“1”～”99999”で指定してください。省略時は、開始位置からすべて出力されます。

関数

マッピングされた入力側の項目値に対して実行する関数を指定してください。

設定可能な関数は、以下の表を参照してください。

表2.39 関数の一覧

関数名 | 説明
--- | ---
CALC_MONTHS | 引数で指定した日付を、月単位で加減算した日付に変換します。
CHK_LENB | 文字列長が指定したサイズの範囲内のデータかどうかをチェックし、指定の文字列を返します。
COALESCE | 引数に含まれる項目の最初の「非空文字」を返します。
DISPLAY_TO_Z | 符号付数字（COBOL DISPLAY 形式）から数字文字列に変換します。
FORMAT_DATE | 引数で指定した日付の形式（例　YYYY/MM/DD）に変換します。
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 形式）に変換します。

注意

関数を複数の行で指定して、関数の処理結果を次の関数の入力にできます。これによって、関数であるパターンの文字を統一してから、その処理結果から関数で別の文字に置き換えるなど、1つの関数の処理でできなかった変換ができます。

なお、複数の関係線を同時に関数の入力としては使用できません。

関数一覧

設定可能な関数の一覧が表示されます。

関数一覧ヘルプ

関数一覧で選択した関数の説明が表示されます。

区分

出力データの区分。

“固定文字列”、“動的文字列（実行時引数)”、“日付”、“時間”、“固定バイナリ値”、または“動的バイナリ値”が選択できます。

選択した区分によって、「値」に設定する内容が異なります。

値（固定値選択時）

「区分」で選択した固定値の値を設定します。

内容については以下の表を参考にしてください。出力情報設定の固定値に日付および時間を指定した場合、処理が実行された日付および時間で出力されます。

表2.40 区分と値

区分 | 内容
--- | ---
固定文字列 | 1～9999バイト以内で指定してください。制御文字が使用できます。
動的文字列 （実行時引数） | 動的文字列番号を指定します。“01”～”20”で指定してください。指定した項目はデータ加工実行コマンド（utled）実行時の-dstrXXパラメータに対応します。対応するパラメータが省略されていた場合には、半角スペース1個が採用されます。 例）　動的文字列の“01”を固定値として指定しておき、以下のデータ加工実行コマンド（utled）を実行すると、指定した動的文字列出力項目にabcが出力されます。 utled -i sample -dstr01 abc
日付 | 255バイト以内で指定してください。書式はY、M、Dで指定します。それ以外の文字はすべてそのまま出力されます。また、書式は右詰で変換され、書式の文字列が連続している場合は左から確定していきます。 例1）　今日はYYYY年MM月DD日です　→　今日は2004年05月18日です 例2）　今日はYYYYYY年M月D日です　→　今日は200404年5月8日です
時間 | 255バイト以内で指定してください。書式はH、M、Sで指定します。それ以外の文字はすべてそのまま出力されます。また、書式は右詰で変換され、書式の文字列が連続している場合は左から確定していきます。 例1）　現在時刻はHH時MM分SS秒です　→　現在時刻は12時34分56秒です 例2）　現在時刻はHHHH時M分S秒です　→　現在時刻は1212時4分6秒です
固定バイナリ値 | 16進文字列を2～9998文字で指定してください。 固定バイナリ値は、項目タイプがIタイプのみ設定できます。
動的バイナリ値 | 動的バイナリ番号を指定します。“01”～“20”で指定してください。指定したバイナリ値はデータ加工実行コマンド（utled）実行時の-dstrXXパラメータに対応します。対応するパラメータが省略されていた場合には、1バイト分の0x00が採用されます。 動的バイナリ値は、項目タイプがIタイプのみ設定できます。 例）　動的バイナリ値の01を固定値として指定しておき、以下のデータ加工実行コマンド（utled）を実行すると、指定した動的文字列出力項目に123が出力されます。 utled -i sample -dstr01 123

注意

設定された固定値は一度入力側の漢字コード種に変換された上で、改めて出力側の漢字コード種に変換されます。そのため、入力側の「漢字コード種」に存在しない文字が固定値として設定された場合、固定値が異なるコードやデフォルトコードに変換されて出力されることがあります。

サンプル

「区分」で“日付”または“時間”を選択した場合に表示されます。

「値」に入力する書式の参考としてください。

演算式

「種別」で“数値演算”または“日付演算”を選択した場合に指定します。

表2.41 数値演算式

項目 | 内容
--- | ---
数字 | 特定の10進数値を表現するのに使用します。
左かっこと 右かっこ | 演算に優先順位をつけるために使用します。
四則演算記号 | +（プラス）を加算に使用します。 -（マイナス）を減算に使用します。 *（アスタリスク）を乗算に使用します。 /（スラッシュ）を除算に使用します。
$INAME() | かっこ内に項目名を指定します。指定した項目の値に変換されます。 繰り返し番号を指定するときは「,（カンマ）」で区切って記述します。 繰り返し番号を省略時、または数字以外が指定されたときには、1が採用されます。入力設定の「形式」が“CSV”のID指定なしの場合は$INAMEは指定できません。$INUMを使用してください。 例）　$INAME(item1,1) 階層フォーマット形式で条件にグループを指定した場合は、「&レコード名&項目名」の形式で指定します。 例） $INAME(&RECORD&item1,1) Excel情報の場合は、項目名を指定します。項目名に「Sheet」を指定した場合は入力シート名、それ以外はExcel情報で設定した項目名を示します。
$INUM() | かっこ内に項目No.を指定します。 Excel情報の場合は、"1"～"10000"で指定してください。 上記以外の管理情報の場合は、"1"～"1000"で指定してください。指定した項目の値に変換されます。 例）　$INUM(2)
$DNUM | 動的数値番号を指定します。“01”～”20”で指定してください。指定した項目はデータ加工実行コマンド実行時の-dnumXXパラメータに対応します。 対応するパラメータが省略されていた場合には、0が採用されます。 例）$DNUM01を指定しておき、以下のデータ加工実行コマンド（utled）を実行すると数値演算の動的数値指定個所に123が使用されます。 utled -i sample -dnum01 123
$MINUM() | かっこ内にマッチングファイルのマッチング番号と項目No.を「,（カンマ）」で区切って指定します。指定したマッチングファイルの項目の値に変換されます。 例）$MINUM(1,2) Excel情報の場合は、「$MINUM(マッチング番号,項目No.)」の形式で指定します。項目No.は、マッピング画面で表示される入力項目の順番です。
$LEN() | かっこ内に項目名を指定します。指定した項目の出力サイズに変換されます。繰り返し番号を指定するときは「,（カンマ）」で区切って記述します。 繰り返し番号を省略時、または数字以外が指定されたときには、1が採用されます。 $LENはフォーマット形式へ出力する場合のみ指定できます。 例） $LEN(item1)
$LENNUM() | かっこ内に項目番号を指定します。“1”～“1000”で指定してください。 指定した項目の出力サイズに変換されます。 $LENNUMはマルチフォーマット形式または、階層フォーマット形式へ出力する場合のみ指定できます。 例）$LENNUM(2)
$RCOUNT | 入力ファイルの現在のレコード数に変換されます。
$ACOUNT | 入力ファイルとマッチングファイルで複数レコードがヒットした場合を含む現在の総レコード数に変換されます。
$HCOUNT() | かっこ内にマッチングファイルのマッチング番号を指定します。“1”～”101”で指定してください。入力ファイル1レコードに対しマッチングファイルでヒットした現在のレコード数に変換されます。入力ファイルのレコードが変わるたびにカウンターがリセットされます。 例）$HCOUNT(2)
$GCOUNT | 入力ファイルの現在のグループレコード数に変換されます。 $GCOUNTは、階層フォーマット形式の場合のみ指定できます。
$VAR() | かっこ内に変数名を指定します。指定した変数の値に変換されます。 例）$VAR(item1)

※:数値演算式に「<（小なり）」「>（大なり）」「"（ダブルクォーテーション）」「'（シングルクォーテーション）」「&（アンパサンド）」は指定できません。

= 備考 =

以下のように、可変長データのデータ長を保持できない場合には、$LENや$LENNUMを使用して任意の項目にデータ長を保持できます。

- 出力側の「デリミタ値」を設定せずに出力する場合

- 「可変長の項目参照」で出力する場合

総合的な数値演算の例を以下に示します。

「($INAME(item1,1)+$INAME(item2,2))*$DNUM02」

この式の意味は、「項目名item1（繰り返し番号1）と項目名item2（繰り返し番号2）の値を足してそれに動的数値02の値をかけた値」となります。

注意

- 四則演算式が含まれる指定内容の場合、出力形式はFタイプからの変換形式に従います。そのため、フォーマット形式ならば9タイプ、Pタイプ、Sタイプなどの数値タイプを指定するか、または29バイト以上確保した文字タイプを指定することをお勧めします。なお、四則演算式が含まれない指定内容（「1」、$INUM(1)など）の、入力データのタイプは、数字指定は9タイプ、項目名（番号）指定はその項目のタイプとなります。

- 数値は、整数部19 桁以内、小数部9 桁以内で指定してください。超えた値を指定すると、エラーとなります。

  計算結果の整数部が19 桁を超えた場合、変換エラーとなります。

  計算結果の小数部が9 桁を超えた場合、超えた部分は切り捨てられます。

表2.42 日付演算式

項目 | 内容
--- | ---
基点 | 基点となる日付を指定します。
日付リテラル | “YYYY/MM/DD hh:mm:ss”の形式で指定します。時刻は省略可能で、省略した場合は“00:00:00”とみなされます。
today、now | データ加工開始日時を表します。すべてのレコードに対して同一の値になります。
tomorrow | todayの24時間後を表します。
yesterday | todayの24時間前を表します。
$INAME() | 入力項目の値を参照します。項目値によって、基点としても数値としても使用できます。 かっこ内に項目名を指定します。繰り返し番号を指定するときは「,（カンマ）」で区切って記述します。繰り返し番号を省略時、または数字以外が指定されたときには、1が採用されます。入力の「形式」がCSVのID指定なしの場合は$INAMEは指定できません。$INUMを使用してください。 例）　$INAME(item1,1) 階層フォーマット形式で条件にグループを指定した場合は、「&レコード名&項目名」の形式で指定します。 例）　$INAME(&RECORD&item1,1)
$INUM() | かっこ内に項目No.を指定します。 Excel情報の場合は、"1"～"10000"で指定してください。 上記以外の管理情報の場合は、"1"～"1000"で指定してください。指定した項目の値に変換されます。 例）　$INUM(2)
$DNUM | 動的数値の値を参照します。値によって、基点としても数値としても使用できます。 動的数値番号を付加して、“$DNUM01”～“$DNUM20”の形で指定してください。 指定した項目はデータ加工実行コマンド（utled）実行時の-dnumXXパラメータに対応します。対応するパラメータが省略されていた場合には、0が採用されます。
$MINUM() | マッチングファイルの項目の値を参照します。項目値によって、基点としても数値としても使用できます。 かっこ内にマッチングファイルのマッチング番号と項目No.を「,（カンマ）」で区切って指定します。指定したマッチングファイルの項目の値に変換されます。 例）$MINUM(1,2)
$DSTR | 動的文字列の値を参照します。値によって、基点としても数値としても使用できます。 動的文字列番号を付加して、“$DSTR01”～“$DSTR20”の形で指定してください。指定した項目はデータ加工実行コマンド（utled）実行時の-dstrXXパラメータに対応します。対応するパラメータが省略されていた場合には、半角スペース1個が採用されます。
$VAR() | かっこ内に変数名を指定します。指定した変数の値に変換されます。 例） $VAR(item1)
演算 | 日付データの加減算を行います。
+（プラス） -（マイナス） | 日付データの加算と減算を行います。 日数・時間の前に付けて使用します。
ago | 「-（マイナス）」と同様に日付データの減算を行いますが、日数、時間の後に付けて使用します。
next | 「+1」と同じです。
last | 「-1」と同じです。
数値 | 数値を指定します。常に「単位」を付けて使用します。
単位 | 常に「数値」に続けて使用します。以下のものが使用できます。 year（年）、month（月）、fortnight（2週）、week（週）、day（日）、 hour（時）、minute（分）、second（秒）

注意

$DNUMまたは$DSTRを基点とした場合、日付の入力フォーマット指定の有無に関わらず、自動判定による日付データの読み込み処理が適用されます。

= 備考 =

- 基点は日付演算式中に必ず1 回だけ指定します。

  基点同士の演算の場合は、関数JULIANDAYを使用します。関数JULIANDAYについては、「DataMagic　操作マニュアル」を参照してください。

- 演算は複数回記述できます。

- 「ago」は複数回使用できません。

  ｢tomorrow｣または｢yesterday｣と、｢ago｣を同時に指定した場合は、以下のように解釈します。（today が 2008/07/25 の場合）

  表2.43 日付演算の例

  日付演算式 | 結果 | 解釈内容
  --- | --- | ---
  tomorrow 1 day ago | 2008/7/23 | tomorrow = today +1 day と 1day で 2 day の ago となる
  yesterday 1 day ago | 2008/7/25 | yesterday = today -1 day と 1dayで 0 day の ago となる

- タイムゾーンの補正は行いません。常にローカル時間で計算されます。

- 演算の単位に和暦（年、月、日、週、時、分、秒）の指定はできません。

  指定した場合の動作を保証しません。

- 時刻を含む基点の直後に「-」を使用することはできません。「ago」を使用してください。

- 「変数代入設定」で「日付演算」を実施する場合に、演算結果として出力されるデータは年月日までです。

- 「変数代入設定」の「日付演算」では、時分秒に対して演算を行うことはできません。

  指定した場合の動作を保証しません。

= 備考 =

日付演算例:

2007/10/1

→2007/10/1 00:00:00

$INAME(koumoku1,1) +1 month +2 day

→「$INAME(koumoku1,1)」で表される日時の1か月と2日後

「$INAME(koumoku1,1) next month +2 day」としても同じです。

today +3 day -1 hour 30 minute ago

→「today」で表される日時の3日と1時間30分前の時刻

「today +3 day 1 hour ago -30 minute」としても同じです。

$DSTR01 + $DNUM01 day

→ “utled -i sample -dstr 2007/10/01 -dnum01 1”と実行した場合は、「2007/10/01 +1 day」と同じになります。

参照値一覧

演算式に使用可能な値の一覧が表示されます。

クエリ値区分

「種別」で“クエリ値”を選択した場合に指定します。

“固定文字列”および”動的文字列（実行時引数）”から選択してください。

クエリ値（クエリ値区分に“固定文字列”を選択した場合）

SQL文を指定します。項目名やテーブル名に2バイト文字が含まれる場合は[]（角かっこ）で囲んでください。

注意

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

例） select ［col1］ from ［vt］

クエリ値（クエリ値区分に“動的文字列（実行時引数）”を選択した場合）

“01”～“20”の番号を指定します。

仮想テーブル名

仮想テーブル設定で設定された仮想テーブル名が表示されます。

SQL文のテーブル名をこの一覧から選択できます。

項目名

「仮想テーブル名」で指定された仮想テーブル設定の項目名が表示されます。

SQL文のSELECT句、WHERE句で指定する項目をこの一覧から選択します。

参照値一覧（クエリ値選択時）

SQL文のSELECT句、WHERE句で指定する項目をこの一覧から選択します。

表2.44 クエリ値設定（SQL雛形表示）

機能分類 | SQL文 | 機能説明
--- | --- | ---
集計 | select max([column_name]) from [table_name] | 指定した項目（値）の最大値を取得します。
select min([column_name]) from [table_name] | 指定した項目（値）の最小値を取得します。
select sum([column_name]) from [table_name] | 指定した項目（値）の合計を取得します。
select count([column_name]) from [table_name] | テーブルの総レコード数を取得します。
平均 | select avg([column_name]) from [table_name] | 指定した項目（値）の平均を取得します。
レコード数 | select count([column_name]) from [table_name] | 指定した項目（値）の行数を取得します。
条件あり集計 | select max([column_name]) from [table_name] where [column_ name] = 'value' | 指定した項目（値）の最大値を取得します。（条件指定）
select min([column_name]) from [table_name] where [column_ name] = 'value' | 指定した項目（値）の最小値を取得します。 （条件指定）
select sum([column_name]) from [table_name] where [column_ name] = 'value' | 指定した項目（値）の合計を取得します。（条件指定）
条件あり平均 | select avg([column_name]) from [table_name] where [column_ name] = 'value' | 指定した項目（値）の平均を取得します。
条件ありレコード数 | select count([column_name]) from [table_name] where [column_ name] = 'value' | 指定した項目（値）の行数を取得します。（条件指定）
先読み | select [column_name] from [table_name] where dm_rec_count = (select dm_rec_count from [table_name] where [column_name]='value' order by dm_rec_count)+1 | 指定した項目の次の行を取得します。
ダミーテーブル演算 | select hex('value') | valueの16進データを取得します。

表2.45 仮想テーブルクエリ値設定（動的指定可能変数）

項目 | 内容
--- | ---
$VAR() | かっこ内に変数名を指定します。指定した変数の値に変換されます。 例） $VAR(item1)
$INAME() | かっこ内に項目名を指定します。指定した項目の値に変換されます。 繰り返し番号を指定するときは「,（カンマ）」で区切って記述します。繰り返し番号を省略時、または数字以外が指定されたときには、1が採用されます。 入力の「形式」が“CSV”のID指定なしの場合は$INAMEは指定できません。$INUMを使用してください。 例）　$INAME(item1,1)
$INUM() | かっこ内に項目No.を指定します。“1”～”999”で指定してください。指定した項目の値に変換されます。 例）　$INUM(2)
$DNUM | 動的数値番号を指定します。“01”～”20”で指定してください。指定した項目はデータ加工実行コマンド実行時の-dnumXXパラメータに対応します。対応するパラメータが省略されていた場合には、0が採用されます。 例）　$DNUM01を指定しておき、以下のデータ加工実行コマンド（utled）を実行すると数値演算の動的数値指定個所に123が使用されます。 utled -i sample -dnum01 123
$DSTR | 動的文字列の値を参照します。値によって、基点としても数値としても使用できます。 動的文字列番号を付加して、“$DSTR01”～“$DSTR20”の形で指定してください。指定した項目はデータ加工実行コマンド（utled）実行時の-dstrXXパラメータに対応します。対応するパラメータが省略されていた場合には、半角スペース1個が採用されます。
$MINUM() | かっこ内にマッチングファイルのマッチング番号と項目No.を「,（カンマ）」で区切って指定します。指定したマッチングファイルの項目の値に変換されます。 例）$MINUM(1,2)
$RCOUNT | 入力ファイルの現在のレコード数に変換されます。

未ヒット時の挙動

該当データが0の場合の挙動を選択できます。

「種別」で共通コンポーネントを指定した場合の指定内容

表2.46 「種別」で共通コンポーネントを指定した場合の指定内容

指定項目 | 内容
--- | ---
項目名 | 追加する項目を選択します。
ID | ［参照］ボタンをクリックして表示される共通コンポーネント情報選択画面で、共通コンポーネントIDを指定します。 指定した共通コンポーネントIDを取得できない場合は、エラーになります。
コメント | 共通コンポーネント情報のコメントが表示されます。
引数 | 共通コンポーネント情報の引数です。共通コンポーネント情報の内容から、必要な数だけ表示されます。