一連の CCSID
の話で何故、ここまで CCSID
を詳しく解説しなければならないかというと,
近年 CCSID
を 5026 ではなく 5035 や、とりわけ 1399 に変更する動きが出てきているのに
起因しているせいもある。
Windows や他のプラットフォームとの連携
近年は IBM System i といえども System i の中だけで完結して終わるものではなく
他のサーバー、特に Windows とのデータ交換の必要性があり、日常でも
Windows プラットフォーム用に System i のデータを変換することは日常化している。
例えば、System i のデータを MS-Excel 形式にダウンロードしたり、MS-Excel のデータを
System i にアップロードしたりもする。
かつて流行った C/S モデルによってデータを入力しているユーザーもあるだろう。
自社の System i の CCSID
環境だけですべてが完結する時代ではなくなったのである。
国際言語とグローバル化
また近年の System i の Web化事情も、どのようにして Web化するか? だけではなく
国際言語化を無視しては語れない事情が出てきている。
円高を背景に(最近は円安に振れてきてはいるが、それでも円高である)
国内産業の主力工場はすでに海外へシフトしている。
日本国内の本社から海外の工場へ指示したり、海外の工場での生産コントロールの
仕組みを日本の本社で開発して海外の IBM System i に導入する試みも始まっている。
地球はグローバル化しており国内だけの企業と言えども取引先の影響を無視するわけには
いかなくなっているはずである。
言語を変換するために複数の CCSID を扱う機会は今後さらに増えていくことになるだろう。
前置きが長くなったが、ここでは CCSID を変換するための API を簡単に紹介することとする。
ご存知、IBM 系は EBCDIC
と呼ばれるコード体系で構成されており、
Windows, UNIX, Linux は ASCII
と呼ばれるコード体系である。
従って、System i ( EBCDIC
) <--> Windows,UNIX ,Linux ( ASCII
) の変換は
API : QDCXLATE
を使用することになる。
QDCXLATE
の使用方法はこのサイトにも詳しく紹介されている。
ただし QDCXLATE
による文字コード変換のために使用するテーブルは
QSYS/QEBCDIC
, QSYS/QASCII
だけでなく QUSRSYS/QTCPASC
, QUSRSYS/QTCPEBC
も用意されている。
これらのテーブルおよび変換は特殊文字には必ずしも正しく対応していない部分もあるので、
使用の前には必ず精緻な検査が必要である。
すべての CCSID どうしが変換可能であるか、というとそうではない。
ただし多くの CCSID どうしの変換を可能にする API が iconv
である。
iconv
は IBM System i 独自のAPI ではなく、UNIX 一般に知られている API であるので
このサイトにも使い方は詳しく紹介されているものの、一般的になWebサイトで
使用サンプルを調べることができる。
しかし多くのサンプルは他のサイトを意味も理解もなくコピーしただけのものであることが多い。