日付の演算をしたい

OrangeLab. 運営チーム
作成日時: - 更新日時:
Avatar

使用ソフトウェア:DataMagic for Windows Ver.2.2.2
以下のリンクより、当Tipsのサンプルスクリプトがダウンロード可能です。
是非ダウンロード頂き、ご活用ください。

日付の演算をしたい

はじめに

こんにちは、メディアフォースの西です。

様々なシステムのデータを加工する際に、日付データの形式が次のように不揃いで困ったことはありませんか?

日付形式
2016年1月15日
20160115
平成28年1月15日
H28.01.15
2016.01.15

数日前や数年後など日付を指定してデータを抽出する場合、システムごとに形式が不揃いだと処理も大変ですよね。

DataMagicでは、データ加工実行時に日付データのフォーマットを指定して読み込み、その日付データを演算する【日付項目演算機能】があります。
この機能を使うことで、出力時の日付フォーマットを指定することができます。

本連載記事では、下記パターンの編集方法についてご紹介します。
  • 申込みデータ(固定長ファイル)から申込日の演算を行い、出力時の日付フォーマットを指定して別ファイル(固定長)に出力
<処理イメージ>

事前準備

まずは、変換元となる固定長データを用意します。
上記サンプルデータを「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

手順

データ変換に必要な定義情報を作成します。
データ変換の流れは大きく分けると以下になります。
  1. 入力ファイル情報の設定
  2. 出力ファイル情報の設定
  3. データ加工情報の設定

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)実行時のパラメータで指定する動的値を基点とした演算を行うことができます。
  • 日付演算の説明


参照値
$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(秒)
常に「数値」に続けて使用します。

今回ご紹介した変換の定義情報は、下記リンクにてダウンロードできます。評価版モジュールもダウンロード可能なので、合わせて試用をご検討ください。

サンプルデータファイル

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

コメント