1
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?

はじめに

おはよう〇○〇〇〇君、バッタもんです
今回はメインフレーム連携の鍵となるEBCDIC系のコード、特に2バイト文字の変換について、レガシーシステム(IBMのメインフレームやオフコン)からの移行に適した、DataSpider、HULFT Square、DataMagicによる文字コード変換の差について書き残します

NタイプとMタイプの違い

コード変換(特に固定長フォーマット)において重要な役割を果たすレガシー系ファイルフォーマットの項目タイプには、2バイト文字を扱うものとして、NタイプとMタイプがあります
DataMagicのマニュアルでは、これら2つのタイプは以下のように定義されています

DataMagic 操作マニュアル(抜粋)
N(2バイト表示文字)
 2バイトコード(※)のみの(シフトコードがない)文字データ形式。
 1バイトコードが含まれていてはいけません。2バイトコード(※)以外の
 マルチバイトコードは扱えません。
(中略)
 注※ 3バイト以上で構成される文字は含まない、2バイトで1文字を表記する文字コードのことです。

M(可変長文字)
1バイトコードと2バイトコードが混在する文字データ形式です。

シフトコード(シフトイン・シフトアウト区切り文字)について

EBCDIC 2 バイト文字セット (DBCS) テキストは、1 バイト文字から 2 バイト文字への遷移を区切るために、シフトイン・シフトアウト (SOSI) バイトを使用してエンコードされます。

0x0E(Shift-Out/SO): これ以降は「2バイト(漢字)モード」の開始
0x0F(Shift-In/SI) : これ以降は「1バイト(英数カナ)モード」への復帰

文字タイプと製品・サービスの対応

2バイトコードを含む、文字タイプごとの対応状況を表にしました

文字タイプ シフトコード DataSpider HULFT Square DataMagic
  M   あり   〇    〇   〇
  N   なし   ✖    ✖   〇

EBCDIC系の2バイト文字コードを変換する際は、製品・サービスがどの項目タイプ(シフトコード有無)に対応しているかを確認しましょう

Appendix

DataSpiderやHULFT Squareがサポートするエンコード

サポートするエンコードについて、DataSpiderのマニュアルに以下の記載があります

Java SE Runtime Environment 8でサポートされているエンコードを指定する
詳細は、「Supported Encodings」
https://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html
を参照

今回のテーマに沿って「japanese」で検索すると16個見つかりますが、そのうち、以下のいずれかをDataSpiderで使用すると、EBCDICおよびIBM漢字の文字コード変換ができます

 Cp930:日本語の漢字とカタカナ、4370UDCを混ぜた5026のスーパーセット
 Cp939:日本語の漢字とローマ字、4370UDCを混ぜた5035のスーパーセット

Cp930は半角カナ、Cp939は英小文字も使え、どちらを使うかは、入力データによりますが、今回はCp939を使います

Canonical Name for java.nio API Canonical Name for java.io API and java.lang API Alias or Aliases Description
x-IBM930 Cp930 ibm-930 ibm930 930 cp930 Japanese Katakana-Kanji mixed with 4370 UDC, superset of 5026
x-IBM939 Cp939 ibm-939 cp939 ibm939 939 Japanese Latin Kanji mixed with 4370 UDC, superset of 5035

Cp930/Cp939は、日本語文字項目にシフトコードを伴うことを前提としたコード体系で、
DataSpiderでCp930/Cp939を扱う際に、この条件が満たされていない場合、正しい文字コード変換ができません
また、IBM以外の漢字コード(富士通、日立、NECなど)はサポートしていません

DataSpiderを使ったEBCDICコードの変換手順(固定長アダプター使用)

①グローバルリソース(HULFT Squareはデータ形式リソース)の作成

固定長読み取りフォーマット定義を、固定長ウィザードで作成します
フィールドの定義は、エンコードに「Cp939」を直接入力します

image.png

image.png

②スクリプトの作成

固定長ファイル読み取りとCSVファイル書き込みのアイコンを置いて線でつなぎます

image.png

固定長ファイル読み取りのエンコードも「Cp939」を直接入力します
改行コードは「NONE」を選択します

image.png

プレビューも「Cp939」を直接入力して ▼ を押します

image.png

スクリプト実行結果(ヘダーを追加しました)

image.png

今回はCp939を使いましたが、Cp930も同じ要領で文字コード変換ができます

おわりに

最後までお読みいただき、ありがとうございます
今回は、EBCDIC系2バイトコードの変換と、DataSpiderによる文字コード変換の手順をご紹介しました
...
...
...
なお、このデータは自動的に消滅💣...しませんが、皆様の成功をお祈りします

バッタもん

1
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
1
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?