0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DataMagic】データ加工やってみた!属性変換で項目タイプを変えてみた

Last updated at Posted at 2025-10-17

はじめに

DataMagic は、色々な機能を備えています。

機能・概要一覧
機能  概要
マッチング 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する
マージ 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする
出力先振り分け 抽出条件に沿って、出力ファイルを振り分ける
数値項目演算 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する
データ抽出 入力データから、指定した条件に合致したデータのみを抽出する
項目入替 入力データの項目を入れ替えて、別のフォーマットで出力する
項目結合 複数の項目を結合して、1つの項目として出力する
項目分割 単一項目を分割して、複数の項目として出力する
全角半角 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する
出力フォーマット指定 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する
入力ソート 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする
属性変換 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する
日付項目演算 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する
関数 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する
マッピング 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する
動的指定 データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる
ユーザ出口変換 データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる
データ挿入 レコード内の任意の項目にユーザ指定の任意の値を挿入できる
仕様書出力 データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる
チュートリアル データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる
カスタムエラー カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる
ステップ実行 入力ファイルの読み込み、抽出、およびデータ変換時に発生した、設定とデータの整合性が取れていないことに起因するエラー(システムエラーや設定値不正ではないもの)をスキップする
コード変換 1バイトコード間、または2バイトコード間で、文字コードを変換する

属性変換ってなんだ :thinking:

製品紹介資料や製品マニュアルを読んでいると、その製品(群)独自の用語が出てきて、「これって一般用語?」と考えることが、たま~にあります。

DataMagic機能説明書 によると、属性変換(機能)とは

入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換できます。目的の数値タイプに変換することで、異なるプラットフォームのデータを容易に扱えます。また、数値タイプを文字列タイプに、文字列タイプを数値タイプに変換できます。

だそうです。しかし

属性の変換は、データ加工情報設定画面―マッピング情報設定画面で設定できます。

なんて :scream_cat: まったく思いつきもしなかった。

いや~、マニュアルって読んでみるもんですね :sweat_smile:
私もまだまだ初心者のようです。

この記事を書くまで、属性変換はず~っと、ご丁寧に変換後の属性で出力用のフォーマット定義を作って、関係線引いてデータ加工してました。

でも、一発モノで属性変換だけなら、マッピング情報設定画面の設定で変えられるのって、定義情報も増えないし、イイですね。

項目タイプ

DataMagic で扱える項目タイプについては、各種マニュアルの色々なところに記されていますが、操作マニュアルの 4.9.1 項目タイプの一覧 に載っている情報が、一番詳しく書かれているかも。

簡易版なら、各種マニュアルの「はじめに」ページに載ってる以下の一覧表ですね。

DataMagicで扱える項目タイプの一覧表

評価版DL141.JPG

今回は、数値:12345 を、私の中ではスタンダードな以下の4つの数値タイプに代入して、属性変換を色々試してみます。

〝9〟(サイン無外部10進数)
符号を持たないゾーン形式の10進数データ形式
〝S〟(サイン付外部10進数)
符号付きのパック形式の10進数データ形式
〝P〟(サイン付内部10進数)
符号付きのゾーン形式の10進数データ形式
〝B〟(バイナリ)
符号付き整数の数値データ形式
バイナリに格納できる値の範囲は以下のとおりです。
  • 2バイト: -32768~32767
  • 4バイト: -2147483648~2147483647
  • 8バイト: -9223372036854775808~9223372036854775807

設定

入力ファイル

今回の入力ファイルを

  • 16進数で表示すると、:arrow_down: こんな感じ

評価版DL142.JPG

  • プレビューで表示すると、:arrow_down: こんな感じ

評価版DL143.JPG

フォーマット定義

今回は、マッピング情報設定画面で設定を編集するので、フォーマット定義は入出力で同じものを使用します。
評価版DL140.JPG

マッピング情報設定画面

マッピング情報設定画面を開いて、以図のように変更。
今回はこの変更を、すべての項目でおこないます。

:one: 属性を変更したい項目を選択
:two: 出力項目情報の中の赤枠のアイテム値を、変更後の値に変える
 (ちなみに図の例では、5バイトのSタイプに変更)

評価版DL144.JPG

出力結果

  • 属性変更なし 評価版DL149.JPG

  • 項目タイプ:9、バイト数:5 へ変更 評価版DL145.JPG

  • 項目タイプ:S、バイト数:5 へ変更 評価版DL146.JPG

  • 項目タイプ:P、バイト数:3 へ変更 評価版DL147.JPG

  • 項目タイプ:B、バイト数:2 へ変更 評価版DL148.JPG

すべての入力項目で、出力結果がすべて変更後の属性になっていることを確認!

補足

属性変換では、 数値タイプを文字列タイプに、文字列タイプを数値タイプに変換できる ようなので、そちらも試してみます。

ちなみに、「どの項目タイプからどの項目タイプに変換できるのか」や「変換時の注意点」などは、操作マニュアルの 4.9.2 項目タイプの変換可否 に組合せの一覧が載っているので、そちらで確認してください。

設定

補足では、以下の条件で設定・処理します

★ 入力データ
1項目目 = -9876
2項目目 = -12345
★ フォーマット定義
1項目目 = 2バイトの Bタイプ(数値タイプ)
2項目目 = 6バイトの Xタイプ(文字タイプ)
★ マッピング情報設定画面の関係線
1項目目(数値タイプ)→ 2項目目(文字タイプ)
2項目目(文字タイプ)→ 1項目目(数値タイプ)

入力ファイル

評価版DL150.JPG

フォーマット定義

評価版DL151.JPG

マッピング情報設定画面

評価版DL152.JPG

出力結果

評価版DL153.JPG

1項目目 = -12345
2項目目 = -09876

で出力されていることが確認できました。

付随情報

本編では、主に PC や Linux で使用される ASCII系の文字コード で作ったデータを使用しましたが、DataMagic は、主に汎用機やオフコンで使用される EBCDIC系の文字コード で作成されたデータも扱うことが出来ます。

フォーマット系のレイアウトで数値を扱う場合、ゾーン部の初期値が 3、出力時の符号部の初期値が 4 (正) 5 (負) と、ASCII系の値になっています。
EBCDIC系の数値データを扱う場合は 〝ゾーン/パック10進数詳細設定〟 で符号部の値を変える必要があります。

評価版DL154.JPG

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?