DataMagic技術コラム Vol.23
〈共通コンポーネント:日付変換機能拡張編〉
はじめに
DataMagic技術コラムVol.22では共通コンポーネントの利用方法について紹介しました。
今回および次回のTIPSでは、DataMagic Ver.3.1.9で新たに提供する共通コンポーネントについて紹介します。
DataMagicでは多様な入力データを任意の形式に変換することが可能ですが、想定外の入力に対して空文字を出力したい場合、IF関数だけでは対処が困難な場合があります。この問題について、共通コンポーネントを用いて解決する方法を説明します。
本TIPSを利用するには、DataMagicがコンピュータにインストールされていることが条件となります。DataMagicの入手先やインストール方法などについては、別稿の「DataMagicをインストールする」を参照してください。
本TIPSで紹介するSAISON_FORMAT_DATE_OR_NULL共通コンポーネントはDataMagic Ver.3.0.0以上であれば、現在使用中のDataMagicをアップデートせずに追加出来ます。
また、今後もお客様から頂いた要望を元に共通コンポーネントの拡充を実施させて頂く予定です。
FORMAT_DATE関数利用時における課題
DataMagicでは、日付変換の方法として以下の2つの方法を用意しています。
- 「出力フォーマット」の「形式」で「日付」形式を選択する方法
- FORMAT_DATE関数を使用する方法
それぞれの特徴については以下のとおりです。
日付変更方法の特徴

日付変換処理においてFORMAT_DATE関数は利用範囲が広い機能なのですが、上記のとおり空文字の入力に対して空文字を出力できないという問題があります。
実際の運用を想定したユースケースを用いて、本件の課題を解消していきます。
ユースケース
日時の入力データを「YYYY/MM/DD HH12:MI:SS 午前|午後」の形式で出力したい。
ただし、入力データが空文字の場合は空文字として出力したい。
フォーマット説明
YYYY | :西暦年(4桁) |
MM | :月(01~12) |
DD | :日(01~31) |
HH12 | :時間(01~12) |
MI | :分(00~59) |
SS | :秒(00~59) |
午前|午後 | :「午前」もしくは「午後」 |
「出力フォーマット」の「日付」形式を用いた場合
日付形式のフォーマットには「午前」「午後」を出力するフォーマットが存在しないため、ユースケースを実現することは出来ません。

FORMAT_DATE関数を用いた場合
FORMAT_DATE関数で加工したデータを更に加工することが出来るため、他の関数を組み合わせることでユースケースを実現することが可能です。
ただしFORMAT_DATE関数では入力データが空文字の場合、加工実施日付が出力されるため、IF関数を用いたデータ加工テクニックが必要となりデータ加工手順が煩雑になります。
FORMAT_DATE関数を用いたユースケース実現方法について、以下に実装例を説明します。
データ加工遷移イメージ


以上のように、FORMAT_DATE関数では入力データが空文字の場合に空文字を返却することができないので、IF関数を用いる必要があり、手順がやや複雑になります。利用頻度が多い場合、複雑な処理を毎回記述することとなり保守性の低下に繋がります。
本コラムでは、この問題点について解消可能な共通コンポーネントを紹介します。
共通コンポーネントを用いたデータ変換
「FORMAT_DATE関数利用時における課題」で例示したデータ加工処理を、共通コンポーネントを使用して実装する例を以下に説明します。

サンプルデータを用いた動作確認
「共通コンポーネントを用いたデータ変換」で例示したデータ加工処理を動作させる手順について説明します。
手順1 - 変換対象データとスクリプトファイルを用意する
最初に入力データ(”in.txt” ファイル)とデータ変換処理のスクリプトファイル(”sample23.igen” ファイル)を用意します。上記からsample23.zipをダウンロードし、DataMagicが導入されているPCの下記のフォルダに保存します。
C:\work\sample23\(“in.txt”と”sample23.igen”を保存)
今回のTIPSでは日付文字列の入力データを使用します。
入力データ

手順2 – データ加工処理を実行する
手順1で取得したスクリプトファイル(”sample23.igen” ファイル)をインポートし、追加されたデータ加工処理SAMPLE23を実行します。
共通コンポーネントのインポート手順及び実行手順については別稿の「DataMagic技術コラム Vol.22 Appendix〈共通コンポーネントのインポート手順および実行手順〉」を参照してください。
手順3 – 結果を確認する
実行が完了すると、出力設定において指定されたC:\work\sample23\に“out.txt”というファイルが出来ているのでテキストエディタで内容を確認して下さい。
入出力データ
変換結果の日付フォーマットはYYYY/MM/DD HH12:MI:SS 午前|午後

SAISON_FORMAT_DATE_OR_NULLの使用方法
本TIPで紹介したSAISON_FORMAT_DATE_OR_NULLはDataMagic Ver.3.0.0以上であればデータ加工に使用出来ます。
SAISON_FORMAT_DATE_OR_NULLの利用方法については、共通コンポーネントのインポート後、共通コンポーネント情報一覧からSAISON_FORMAT_DATE_OR_NULLをダブルクリックすることで確認できます。

共通コンポーネントをご利用の際は以下の赤枠の説明をご確認ください。

共通コンポーネントは[データ加工情報設定]の[マッピング情報設定]で設定できます。
設定方法については「共通コンポーネントを用いたデータ変換」の説明をご確認ください。
最後に
今回紹介したSAISON_FORMAT_DATE_OR_NULL共通コンポーネントのエクスポートファイルは下記のリンクよりダウンロードいただけます。「サンプルデータを用いた動作確認」のsample23.zipを使用せずに共通コンポーネントのみの追加をご希望される場合は以下をご利用ください。
DataMagicをお持ちでない方
本製品に関心のある方は、ぜひ、DataMagic評価版をダウンロードしてお試しください。
- 評価版は無償で60日間ご利用いただけます。
- 評価版のお申し込み後、90日間の技術サポートを無償でご利用いただけます。
DataMagic コラム一覧
- DataMagic for Windows インストール編
- DataMagic Manager インストール編
- “早い、安い、簡単”が魅力「DataMagic」のススメ
- Vol.1 〈文字コード変換:EBCDIC⇔Shift_JIS編〉
- Vol.2 〈文字コード変換:外字コード編〉
- Vol.3 〈文字コード変換:Unicode(UTF-8)編〉
- Vol.4 〈データ変換:パック⇔ゾーン編〉
- Vol.5 〈固定長⇒CSV データ変換編〉
- Vol.6 (番外編)HUB+DataMagic連携事例
- Vol.7 〈流通BMS⇒CSV変換編〉
- Vol.8 〈マッチング処理編〉
- Vol.9 〈全角⇔半角変換編〉
- Vol.10 〈DBテーブルデータ抽出編〉
- Vol.11 〈データ補正編〉
- Vol.12 〈文字列置き換え編〉
- Vol.13 (番外編)DataMagic導入事例
- Vol.14 〈データソート・ファイル分割編〉
- Vol.15 〈データ集計編〉
- Vol.16 〈ファイルマージ編〉
- Vol.17 〈HULFT定義一括登録編〉
- Vol.18 (番外編)HULFT-WebFiletransfer+DataMagic連携事例
- Vol.19 (導入事例編)弊社利用事例
- Vol.20 〈データマスキング編〉
- Vol.21 〈DB移行編〉
- Vol.22 〈共通コンポーネント:EBCDIC系コードの置き換え編〉
- Vol.22 Appendix 〈共通コンポーネントのインポート手順および実行手順〉
- Vol.23 〈共通コンポーネント:日付変換機能拡張編〉
- Vol.24 〈お客様要望を解決!:不正データがあってもデータ加工できる共通コンポーネント編〉