はじめに
セゾンテクノロジーが提供するDataSpider Servista(以下、DataSpider)は、GUI操作だけで多種多様なシステム間データ連携を実現できる強力なEAI/データ統合プラットフォームです。1
しかし、メインフレームとのデータ連携を試みた際に「文字コードの壁」に直面することがあります。DataSpiderの文字コード変換機能は、実行基盤であるJava 21がサポートするエンコーディングに準拠しています。2 日立KEIS、富士通JEF、NEC JIPS、BIPROGY(旧ユニシス)LETS-Jなどのメインフレーム固有の漢字コードはカバーされておらず、そのままでは変換できません。
「DataSpiderのノーコード開発の恩恵を受けつつ、レガシーなメインフレームのデータもスムーズに取り込みたい」
このような課題のスマートな解決策として、BIPROGYのデータ変換ツール「DTR/J」があります。3
DTR/JをDataSpiderに組み込むことで、Java標準では扱えないメインフレーム漢字コードをDataSpider上で変換できるようになります。この記事では、DTR/Jのセットアップ手順から、DataSpider上でメインフレーム漢字コードを変換するスクリプトを開発する一連の流れを解説します。
この記事はユーザー視点の検証記事であり、メーカーの公式見解ではありません。
対象読者
- DataSpiderでメインフレーム連携を担当している方
- メインフレームの漢字コード変換に悩んでいるエンジニア
DTR/Jとは
DTR/JはBIPROGYのデータ変換ツールDTRのファミリー製品です。
DTRIIやDTR/LinuxがOSで稼働するプログラムであるのに対し、DTR/JはJavaのライブラリであり、JavaプログラムからDTRの機能を利用できるようにしました。
DTR/Jでは以下のキャラクタセットを提供しています。
| キャラクタセット名 | 説明 | シフトコード有無 |
|---|---|---|
| DTR_LETSJ | BIPROGY LETS-J 漢字コードとASCII 半角コード | ○ |
| DTR_LETSJ_K | BIPROGY LETS-J 漢字コード(2 バイト文字のみ) | × |
| DTR_JB7 | BIPROGY JB7 漢字コードとEBCDIC 半角コード | ○ |
| DTR_JB7_K | BIPROGY JB7 漢字コード(2 バイト文字のみ) | × |
| DTR_JB8 | BIPROGY JB8 漢字コードとEBCDIC 半角コード | ○ |
| DTR_JB8_K | BIPROGY JB8 漢字コード(2 バイト文字のみ) | × |
| DTR_JEF | 富士通JEF 漢字コードとEBCDIC 半角コード | ○ |
| DTR_JEF_K | 富士通JEF 漢字コード(2 バイト文字のみ) | × |
| DTR_KEIS | 日立KEIS 漢字コードとEBCDIC 半角コード | ○ |
| DTR_KEIS_K | 日立KEIS 漢字コード(2 バイト文字のみ) | × |
| DTR_JIPS | 日電JIPS 漢字コードとEBCDIC 半角コード | ○ |
| DTR_JIPS_K | 日電JIPS 漢字コード(2 バイト文字のみ) | × |
| DTR_JIPSE | 日電JIPS(E)漢字コードとEBCDIC 半角コード | ○ |
| DTR_JIPSE_K | 日電JIPS(E)漢字コード(2 バイト文字のみ) | × |
| DTR_IBM | IBM 漢字コードとEBCDIC 半角コード | ○ |
| DTR_IBM_K | IBM 漢字コード(2 バイト文字のみ) | × |
| DTR_SJIS | シフトJIS 漢字コードとASCII 半角コード | - |
| DTR_EUC | EUC 漢字コードとEUC 半角コード | - |
シフトコード有無
○ :漢字(2 バイト文字)とANK: Alphabet, Numerical digit, Katakana(1 バイト文字)がシフトコードで区切られる
× :漢字のみ
- :漢字とANK がシフトコードで区切られることなく混在する
さらにDTR/Jでは外字ファイルを用いて、既存のキャラクタセットに外字変換を追加した新たなキャラクタセット名を追加できます。この機能を利用することでIBM漢字コードのようにバリエーションがあるものにも対応できます。

検証環境
以下の環境で検証しました。
- OS: Windows
- DataSpider Servista 5.0.1
- DTR/J 1R8H
DTR/J配備
最初にDTR/JをDataSpiderに配備します。
DTR/Jの実体はjarファイルdtr.jarです。
このファイルを以下のパスに格納します。
<導入ディレクトリ>\server\system\common\lib
DataSpiderサービスを再起動します。
以下はDTR/J配備の確認方法です。
- DataSpider Studioにログインします。
- コントロールパネルを開きます。
- 「DataSpiderServerの設定」を開きます。
- 「全般」タブが表示されていることを確認します。
- システムプロパティのjava.class.path欄にdtr.jarが存在することを確認します。
漢字コード出力
シフトJISのCSVファイルをBIPROGYメインフレームの漢字コードLETS-Jに変換します。
最初に入力ファイルとしてエフティーアドニャンのプロフィールをまとめたCSVファイルを作成し、シフトJISで保存します。
名前,エフティーアドニャン
属性,ファイルの妖精
役割,ファイルの転送を見守る
好きな食べ物,ちらし寿司
好きな花,蝋梅
好きなスポーツ,バドミントン
話し方,語尾にニャンを付ける
検証用に親しみやすいサンプルデータを使用しています。エフティーアドニャンはファイルの転送を見守るファイルの妖精という架空の自作キャラクターです。私のアイコン画像のキャラクターです。
DataSpider Studioでスクリプト「エフティーアドニャンSJIS2LETSJ」を作成します。
デザイナのスクリプトキャンパスで以下のコンポーネントを配置します。
Start
↓
CSVファイル読み込み処理
- ファイル:/data/ftadnyan.csv
- エンコード:Shift_JIS
- 最初の行は値として取得しない:チェックしない
↓
CSVファイル書き込み処理
- ファイル:/data/ftadnyan_letsj.csv
- エンコード:DTR_LETSJ
- 1行目に列名を挿入:チェック
↓
End
変換前と変換後の相違を強調するために入力ファイルはヘッダーなし、出力ファイルはヘッダーありとしました。
スクリプトを実行すると、正常終了し、ファイルftadnyan_letsj.csvが出力されます。
DTR/Jを配備していない場合、DTR_LETSJというエンコードをJava 21でサポートしていないため、スクリプト実行は「java.io.UnsupportedEncodingException」でエラーになります。
出力されたファイルをシフトJISで開いても文字化けします。
菟ケ猯ワ二,菟テヘ二
菟フセチー二,菟・ィ・ユ・ニ・」。シ・「・ノ・ヒ・罕・
菟ツータュ二,菟・ユ・。・、・・ホヘナタコ二
菟フ苴・菟・ユ・。・、・・ホナセチォシ鬢・・
菟ケ・、ュ、ハソゥ、ルハェ二,菟、チ、鬢キシハ二
菟ケ・、ュ、ハイヨ二,菟マケヌ゚二
菟ケ・、ュ、ハ・ケ・ン。シ・ト二,菟・ミ・ノ・゚・ネ・・
菟マテ、キハ二,菟ク・ヒ・ヒ・罕ユ、ア、・・
LETS-Jへの変換はDataSpider Studioのプレビュー機能で確認できます。
- デザイナでスクリプト「エフティーアドニャンSJIS2LETSJ」を開きます。
- CSVファイル書き込み処理のプロパティを開きます。
- 「必須設定」タブのプレビューをクリックします。
プレビュー画面右下の「表示キャラクタセット」がDTR_LETSJとなっており、DTR_LETSJで読み込んだ値が表示されています。
表示キャラクタセットのプルダウンでShift_JISに変更するとテキストエディタで開いた場合と同じ文字化けで表示されます。

JEF出力
今度は富士通JEF漢字コードに変換します。
スクリプト「エフティーアドニャンSJIS2LETSJ」をコピーし、「エフティーアドニャンSJIS2JEF」にリネームします。
CSVファイル書き込む処理のプロパティを開き、以下のように修正します。
- ファイル:/data/ftadnyan_jef.csv
- エンコード:DTR_JEF
スクリプトを実行すると、正常終了し、ファイルftadnyan_jef.csvが出力されます。
JEF漢字コードとEUC-JPは重なるものも多いため、エディタからEUC-JPで開くと文字化けしつつも多くの文字が読めます。
(項目)k(値)
(名前)k(エフティーアドニャン)
(属性)k(ファイルの妖精)
(役割)k(ファイルの転送を見守る)
(好きな食べ物)k(ちらし寿司)
(好きな花)k(c鞠潯
(好きなスポーツ)k(バドミントン)
(話し方)k(語尾にニャンを付ける)
DataSpider Studioのデザイナのプレビュー機能で表示すると表示キャラクタセットはDTR_JEFとなり、正常に表示されます。

漢字コード入力
漢字コードを入力する場合も出力の場合と構造は同じです。
上で出力したftadnyan_letsj.csvをUTF-8に変換するスクリプト「エフティーアドニャンLETSJ2UTF8」を作成します。
デザイナのスクリプトキャンパスで以下のコンポーネントを配置します。
Start
↓
CSVファイル読み込み処理
- ファイル:/data/ftadnyan_letsj.csv
- エンコード:DTR_LETSJ
- 最初の行は値として取得しない:チェック
↓
CSVファイル書き込み処理
- ファイル:/data/ftadnyan_utf8.csv
- エンコード:UTF-8
- 1行目に列名を挿入:チェック
↓
End
スクリプトを実行すると、正常終了します。出力されたファイルftadnyan_utf8.csvはUTF-8になっています。
おわりに:レガシーとモダンをシームレスにつなぐ
メインフレームとのデータ連携において、エンジニアを長年悩ませてきた「文字コードの壁」。モダンなEAIツールであればあるほど逆にメーカー固有のメインフレーム漢字コードをサポートしていない傾向があります。
この記事で紹介した DataSpider × DTR/J の組み合わせは、その問題をシンプルに解決するアプローチです。
- jarファイルを1つ配備するだけで、DataSpiderからメインフレーム漢字コードを指定できるようになる
- 独自コンポーネントを開発することなく、標準の読み込み/書き込み処理(ノーコード)のまま直感的に連携処理を開発できる
- DataSpider Studioのプレビュー機能により、確認もGUI上で完結する
メインフレームに眠るレガシーデータを、モダンなデータ基盤やクラウドへ解放するための「最小工数・最大効果」な一手として、ぜひアーキテクチャの選択肢に加えてみてください。レガシーを足かせにせず、資産として活かす連携処理を、スマートに構築していきましょう。
We Are Hiring!
-
DataSpider Servista
https://www.saison-technology.com/service/product/lineup/dataspider/ ↩ -
java 21サポートされるエンコーディング
https://docs.oracle.com/javase/jp/21/intl/supported-encodings.html ↩ -
データ変換DTR
https://www.biprogy.com/solution/service/dtr.html ↩
