使用ソフトウェア:DataMagic for Windows Ver.2.2.2
はじめに
こんにちは、メディアフォースの西です。
様々なシステムのデータを加工する際に、日付データの形式が次のように不揃いで困ったことはありませんか?
数日前や数年後など日付を指定してデータを抽出する場合、システムごとに形式が不揃いだと処理も大変ですよね。
DataMagicでは、データ加工実行時に日付データのフォーマットを指定して読み込み、その日付データを演算する【日付項目演算機能】があります。
この機能を使うことで、出力時の日付フォーマットを指定することができます。
本連載記事では、下記パターンの編集方法についてご紹介します。
様々なシステムのデータを加工する際に、日付データの形式が次のように不揃いで困ったことはありませんか?
日付形式 |
---|
2016年1月15日 |
20160115 |
平成28年1月15日 |
H28.01.15 |
2016.01.15 |
数日前や数年後など日付を指定してデータを抽出する場合、システムごとに形式が不揃いだと処理も大変ですよね。
DataMagicでは、データ加工実行時に日付データのフォーマットを指定して読み込み、その日付データを演算する【日付項目演算機能】があります。
この機能を使うことで、出力時の日付フォーマットを指定することができます。
本連載記事では、下記パターンの編集方法についてご紹介します。
- 申込みデータ(固定長ファイル)から申込日の演算を行い、出力時の日付フォーマットを指定して別ファイル(固定長)に出力
事前準備
まずは、変換元となる固定長データを用意します。
上記サンプルデータを「C:\work\SAMPLE3\」に格納してください。("in"というファイル名で保存)
※このサンプルデータは文字コードが"Shift-JIS"の固定長データです
上記サンプルデータを「C:\work\SAMPLE3\」に格納してください。("in"というファイル名で保存)
※このサンプルデータは文字コードが"Shift-JIS"の固定長データです
No. | 氏名 | 申込み日 | 期間 |
---|---|---|---|
01 | 染谷 信吾 | 2014/05/08 | 014 |
02 | 佐藤 真一 | 2014/08/15 | 021 |
03 | 朝倉 草太 | 2015/03/14 | 030 |
04 | 岸 翔太 | 2015/11/30 | 025 |
05 | 石垣 璃奈子 | 2015/12/28 | 010 |
06 | 岡本 麻緒 | 2016/01/06 | 031 |
07 | 高松 恵梨香 | 2016/02/10 | 062 |
手順
データ変換に必要な定義情報を作成します。
データ変換の流れは大きく分けると以下になります。
今回のサンプルファイルはフォーマット形式なので、入力ファイルのフォーマット情報を登録します。
タブボタンの「アダプタ」にある「フォーマット」を指定後、「新規作成」をクリックします。
項目情報の設定は、空行をダブルクリックして表示されるフォーマット情報項目設定画面から行います。

項目名、項目タイプ、繰り返し数、バイト数、小数部桁数は上記フォーマット情報詳細画面に合わせて設定してください。
「ゾーン10進数設定」
「パック10進数設定」
これで、「1.入力ファイル情報の設定」は完了です。
※今回は出力ファイルもフォーマット形式とします。
ID以外の項目設定はStep01~02の手順に沿って、下記画面のようにフォーマット情報を設定します。

これで、「2.出力ファイル情報の設定」は完了です。
ここでは、どのようなタイプの入力ファイルを、どのようなタイプのファイルとして出力するのか、また、どういった条件のデータを出力するかなど、データの変換を行うための条件を設定します。
タブボタンから「データ加工」を指定し、操作メニューから「新規作成」をクリックします。
データ加工情報設定画面が表示されます。
任意のIDを入力し、「入力ファイルアイコン」をダブルクリックします。

<アダプタ別タブ>

これで、入力ファイルの設定は完了です。
入力設定画面の設定が終わると新たに抽出情報が作成されます。
「抽出条件アイコン」をダブルクリックします。
下記画面を参考に設定を行い、[OK]ボタンをクリックして保存します。
※ 今回は、すべてのレコードを抽出する条件としています。

これで、データの抽出条件の設定は完了です。
「出力ファイルアイコン」をダブルクリックします。

<アダプタ別タブ>

これで、出力ファイルの設定は完了です。
抽出条件と出力条件を結び、「マッピングアイコン」をダブルクリックします。
まず、下記画面の参考に、入力項目と出力項目のマッピング線を結びます。

出力側(右側)ツリーの項目「期間満了日」を選択し、出力情報設定エリアの[追加]ボタンをクリックすると、出力情報設定画面が表示されます。

種別に" 日付演算" を選択し、「演算式」に【$INAME(申込日)+$INAME(期間) day】と入力し、[OK]ボタンをクリックして保存します。

出力側(右側)ツリーの項目「期間満了日」を選択し、画面下の[出力フォーマット]で設定します。
「形式」の一覧から" 日付" を選択し、「フォーマット」に【EEYY年MM月DD日】と入力してください。
その後[OK]ボタンをクリックします。

これで、「3.データ加工情報の設定」は完了です。


実行するとデータ実行画面が画面が表示されるので、出力ファイル生成モードを確認し実行ボタンをクリックします。
正常終了したら出力ファイルを確認してください。

※ 出力ファイル生成モード
正常終了したら出力ファイルを確認してください。
出力されたファイルを確認します。
「申込日」に「期間」が加算され、フォーマットが【平成XX年XX月XX日】の「期間満了日」が出力されていることがわかります。

データ変換の流れは大きく分けると以下になります。
- 入力ファイル情報の設定
- 出力ファイル情報の設定
- データ加工情報の設定
Step01
まずは、「1.入力ファイル情報の設定」を行いましょう。今回のサンプルファイルはフォーマット形式なので、入力ファイルのフォーマット情報を登録します。
タブボタンの「アダプタ」にある「フォーマット」を指定後、「新規作成」をクリックします。

Step02
フォーマット情報詳細画面が起動したら、下記画面を参考に「ID」「項目情報」を設定し、適用ボタンをクリックして保存します。項目情報の設定は、空行をダブルクリックして表示されるフォーマット情報項目設定画面から行います。


項目名 | 設定値 | 説明 |
---|---|---|
ID | 「SAMPLE3_IN」 | 登録したフォーマット情報を識別するためのIDを指定します |
固定長/可変長 | 「固定長」 | 今回のデータは固定長のため、固定長を指定します。 |

「ゾーン10進数設定」
項目名 | 説明 |
---|---|
ゾーン部 | 変換データのゾーン符号 |
符号部 - 入力時の扱い | 入力時に使用する変換データのゾーン10進数の符号を指定します。 |
符号部 - 出力時の扱い | 出力時に使用する変換データのゾーン10進数の符号を指定します。 |
「パック10進数設定」
項目名 | 説明 |
---|---|
符号部 - 入力時の扱い | 入力時に使用する変換データのパック10進数の符号を指定します。 |
符号部 - 出力時の扱い | 出力時に使用する変換データのパック10進数の符号を指定します。 |
これで、「1.入力ファイル情報の設定」は完了です。
Step03
次に、「2.出力ファイル情報の設定」を行います。※今回は出力ファイルもフォーマット形式とします。
ID以外の項目設定はStep01~02の手順に沿って、下記画面のようにフォーマット情報を設定します。

項目名 | 説明 |
---|---|
ID | 今回はフォーマットIDを【SAMPLE3_OUT】とします。 |
これで、「2.出力ファイル情報の設定」は完了です。
Step04
入出力ファイル情報の設定が終わったら「3.データ加工情報の設定」を行います。ここでは、どのようなタイプの入力ファイルを、どのようなタイプのファイルとして出力するのか、また、どういった条件のデータを出力するかなど、データの変換を行うための条件を設定します。
タブボタンから「データ加工」を指定し、操作メニューから「新規作成」をクリックします。

Step05
まず、入力ファイルの設定を行います。データ加工情報設定画面が表示されます。
任意のIDを入力し、「入力ファイルアイコン」をダブルクリックします。

項目名 | 説明 |
---|---|
ID | 今回はデータ加工情報IDを【SAMPLE3】とします。 |
Step06
入力設定画面のアダプタ別タブを設定し、[OK]ボタンをクリックして保存します。<アダプタ別タブ>

項目名 | 説明 |
---|---|
形式 | どのようなタイプの入力の形式を行うか選択します。 今回は【フォーマット】を選択します。 |
ID | フォーマットIDを設定します。Step02で作成した【SAMPLE3_IN】を設定します。 |
ファイル名 | 入力ファイルを指定します。事前準備で用意した【C:\work\SAMPLE3\in】を設定します。 |
数値バイトオーダ | 入力ファイルの数値バイトオーダを選択します。 |
入力0レコードの扱い | 入力データの0レコードだった場合の動作を選択します。 |
これで、入力ファイルの設定は完了です。
Step07
次に、データの抽出条件の設定を行います。入力設定画面の設定が終わると新たに抽出情報が作成されます。
「抽出条件アイコン」をダブルクリックします。

Step08
抽出条件設定画面が表示されます。下記画面を参考に設定を行い、[OK]ボタンをクリックして保存します。
※ 今回は、すべてのレコードを抽出する条件としています。

これで、データの抽出条件の設定は完了です。
Step09
次に、出力ファイルの設定を行います。「出力ファイルアイコン」をダブルクリックします。

Step10
出力設定画面のアダプタ別タブを設定し、[OK]ボタンをクリックして保存します。<アダプタ別タブ>

項目名 | 説明 |
---|---|
形式 | どのようなタイプの入力の形式を行うか選択します。今回は【フォーマット】を選択します。 |
ID | フォーマットIDを設定します。Step03で作成した【SAMPLE3_OUT】を設定します。 |
数値バイトオーダ | 出力ファイルの数値バイトオーダを選択します。 |
出力先指定 | 出力先の指定方法を選択します。今回は、"固定値"を指定します。ファイル名には、出力ファイルの絶対パスまたは相対パスで設定します。今回、出力ファイル名は【C:\work\SAMPLE3\out】とします。 |
出力ファイルの切り替え | 出力ファイルの切り替えを行うかどうかを選択します。 |
出力ファイルが0バイトの場合削除する | 出力ファイルが0バイトだったとき、出力ファイルを削除する場合に選択します。 |
これで、出力ファイルの設定は完了です。
Step11
次に、入力ファイル・出力ファイルの項目間のマッピング処理を定義します。抽出条件と出力条件を結び、「マッピングアイコン」をダブルクリックします。

Step12
マッピング情報設定画面が表示されます。まず、下記画面の参考に、入力項目と出力項目のマッピング線を結びます。

Step13
次に、入力項目「申込日」の値に入力項目「期間」の値を足して、出力項目「期間満了日」に変換する設定を行います。出力側(右側)ツリーの項目「期間満了日」を選択し、出力情報設定エリアの[追加]ボタンをクリックすると、出力情報設定画面が表示されます。

種別に" 日付演算" を選択し、「演算式」に【$INAME(申込日)+$INAME(期間) day】と入力し、[OK]ボタンをクリックして保存します。

Step14
次に、出力項目「期間満了日」が【平成XX年XX月XX日】となるように、日付フォーマットを登録します。出力側(右側)ツリーの項目「期間満了日」を選択し、画面下の[出力フォーマット]で設定します。
「形式」の一覧から" 日付" を選択し、「フォーマット」に【EEYY年MM月DD日】と入力してください。
その後[OK]ボタンをクリックします。

Step15
最後に、データ加工情報設定画面の適用をクリックします。これで、「3.データ加工情報の設定」は完了です。

Step16
それでは実行してみましょう。データ加工情報設定画面上部の実行をクリックします。
実行するとデータ実行画面が画面が表示されるので、出力ファイル生成モードを確認し実行ボタンをクリックします。
正常終了したら出力ファイルを確認してください。

※ 出力ファイル生成モード
パラメータ | 説明 |
---|---|
新規作成 | 指定した出力ファイルを新規に作成します。すでに同じ名前のファイル名が存在する場合は、エラーになります。 |
置き換え | 指定したファイルと置き換え(上書き)ます。 |
追加 | 指定した既存のファイルに出力データを追加します。 |
正常終了したら出力ファイルを確認してください。
Step17
Step10で指定した「C:\work\SAMPLE3\」に"out"というファイルが出力されます。出力されたファイルを確認します。
「申込日」に「期間」が加算され、フォーマットが【平成XX年XX月XX日】の「期間満了日」が出力されていることがわかります。

No. | 氏名 | 申込み日 | 期間 | 期間満了日 |
---|---|---|---|---|
01 | 染谷 信吾 | 2014/05/08 | 014 | 平成26年05月22日 |
02 | 佐藤 真一 | 2014/08/15 | 021 | 平成26年09月05日 |
03 | 朝倉 草太 | 2015/03/14 | 030 | 平成27年04月13日 |
04 | 岸 翔太 | 2015/11/30 | 025 | 平成27年12月25日 |
05 | 石垣 璃奈子 | 2015/12/28 | 010 | 平成28年01月07日 |
06 | 岡本 麻緒 | 2016/01/06 | 031 | 平成28年02月06日 |
07 | 高松 恵梨香 | 2016/02/10 | 062 | 平成28年04月12日 |
さいごに
いかがでしょうか?
今回は入力ファイルの値で演算を行いましたが、その他にもデータ加工開始日時やデータ加工実行コマンド(utled)実行時のパラメータで指定する動的値を基点とした演算を行うことができます。

参照値
基点
演算
数値
単位
今回ご紹介した変換の定義情報は、下記リンクにてダウンロードできます。評価版モジュールもダウンロード可能なので、合わせて試用をご検討ください。
今回は入力ファイルの値で演算を行いましたが、その他にもデータ加工開始日時やデータ加工実行コマンド(utled)実行時のパラメータで指定する動的値を基点とした演算を行うことができます。
- 日付演算の説明

参照値
$INAME() | 入力項目の値を参照します。項目値によって、基点としても数値としても使用できます。括弧内に項目名を指定します。 |
$INUM() | 入力項目の値を参照します。項目値によって、基点としても数値としても使用できます。括弧内に項目No.を指定します。 |
$DNUM | 動的数値の値を参照します。値によって、基点としても数値としても使用できます。動的数値番号を付加して、”$DNUM01”~”$DNUM20”の形で指定します。データ加工実行コマンド(utled)実行時の-dnumXX パラメータに対応します。 |
$MINUM() | マッチングファイルの項目の値を参照します。項目値によって、基点としても数値としても使用できます。括弧内にマッチングファイルのマッチング番号と項目No. を「,(カンマ)」で区切って指定します。 |
$DSTR | 動的文字列の値を参照します。値によって、基点としても数値としても使用できます。動的文字列番号を付加して、”$DSTR01”~”$DSTR20”の形で指定します。データ加工実行コマンド(utled)実行時の-dstrXX パラメータに対応します。 |
$VAR() | 括弧内に変数名を指定します。指定した変数の値に変換されます。 |
基点
日付リテラル | YYYY/MM/DD hh:mm:ss の形式で指定します。時刻は省略可能で、省略した場合は”00:00:00”とみなされます。 |
today、now | データ加工開始日時を表します。すべてのレコードに対して同一の値になります。 |
tomorrow | today の24 時間後を表します。 |
yesterday | today の24 時間前を表します。 |
演算
+(プラス) -(マイナス) |
日付データの加算と減算を行います。日数・時間の前に付けて使用します。 |
ago | 「-(マイナス)」と同様に日付データの減算を行いますが、日数、時間の後に付けて使用します。 |
next | 「+1」と同じです。 |
last | 「-1」と同じです。 |
数値
数値を指定します。常に「単位」をつけて使用します。 |
単位
year(年) month(月) fortnight(2 週) week(週) day(日) hour(時) minute(分) second(秒) |
常に「数値」に続けて使用します。 |
今回ご紹介した変換の定義情報は、下記リンクにてダウンロードできます。評価版モジュールもダウンロード可能なので、合わせて試用をご検討ください。
コメント