QUSRSYSに数多くの、変換テーブルが、AS/400上にあることは気づいていたのですが、これを使用してよいか不明だったのです。 しかし、
「国別言語サポート 計画の手引き」
V2R1M0 N:GC41-9877-00 の 付録G
V2R3M0 N:GC88-5095-02 の 付録 I
に、
付録 図形文字変換テーブル
「次は、AS/400のシステムの変換ライブラリーの一覧表です。テーブルオブジェクトの名前と説明、変換前と変換後の文字セットとコードページの値が示してあります。
これらはの変換テーブルは、ある文字セットとコードページから別の文字セットとコードページにデータを変換するために使われます。データ変換するには、QDCXLATEプログラムを呼んでださい」
とあります。
V3R1の同様のマニュアル(cd-ROM)SC88-5238-00には、QDCXALTEに言及はするものの、このようにはっきり出ておらず、「各国で利用される適用業務の開発
(SC88-5319)
を参照してください。」で終わってました。実は、このマニュアル見つからないのです。あの、変換テーブルを作成した時点では、V3は検索しましたが、V2のマニュアル、見てなかったのです。私のミスです。(ほんとは、すっごくショックです。あの苦労は何だったの?)
最初は、「V3とV2は違うのだ、やはり、使わないべきだろう」、と考えていましたが、よくよく思えば、V2でサポートしていたことをV3で取り消すはずがありません。
そこで、新しくプログラムを作ったところ、難なく動作を確認しました。(V3R1)つまり、私の薦めた、サイトのテーブルは残念ながら、不要となります。
EBCDIC |
→ |
S-JIS |
Q290337897 |
290 から 337 897 |
S-JIS |
→ |
EBCDIC |
Q897337290 |
897 から 337 290 |
が適当と思われます。
上記は、テキストなどをAS/400からPCへ渡す作業を前提と考えています。制御コードなどはすべて、16進数00となっていますので、気をつけてください。自分のテーブルのソースは、ほとんど同じですが、QUSRSYSのテーブルが16進数00に対して、自分のは、16進数
00の変換以外はスペース(16進数20または40)にしている点です。
また、1041への変換テーブルも別にありますが、記号や制御コードの変換の部分がやや特殊なので、まだ、使えるのか不明です。
注意:上記のテーブルは、SBCS半角のことです。漢字変換は問題なく、作動します。
その他の考慮点
オープンフィールド(漢字混在)一括可能です。但し、J
-> E の場合の、SISOが増える点に注意(パラメータ設定を誤ると、QDCXLATEがエラーを出します。)
AS/400上で変換して、PC5250などの転送命令で「無変換」を選ぶと、CR/LFが付きません。(変換すると、付く。)よって、必要であれば、AS/400で、S-JIS用のCR/LF(X'0D',X'0A')をわざと付加してください。尚、上記のテーブルでは、EBCDICX'0D'やX'25'は、
Q290337897ではX'00'となります。
ファイルレコード(フィールド無視)一括変換できますが、数字ゾーンの正数と文字のみです。パック、バイナリ、負数のゾーンはだめでしょう。PC側のソフトのルールにあわせて、あらかじめ、すべて文字タイプで、AS/400でファイルを作成します。たとえば、AS/400のの物理ファイルに、CSV(Column
Separated Value)形式などで、いったん作成後、一括変換してしまう。
ファイルレコード一括(フィールド無視)で、E
-> Jに漢字変換した後、J ->Eで、再び戻した場合、漢字のシフトが狂う可能性があります。たとえば、フィールドが、英数+漢字+漢字+英数の4つだとすると、S-JISへは問題無いですが、それを、今度はそのまま、J
-> Eすると、英数+0E漢字漢字0F+英数となります。これが、問題ならば、J->Eの時に、S-JIS元ファイルを予め、フィールド分解して、個別変換する必要があります。
また、あえて、自分のソースをつけますが、これは、改造自由です。テーブル用ソースメンバー名をQではじめるのは危険ですので、避けてください。
内容は、以下を除き、QUSRSYSのものと上記とおなじです。
- ASCIIJは、Q290337897で変換後の16進数00を、16進数20に変更している点、(ただし、16進数00は変換後も16進数00です)
- EBCIDCJは、Q897337290で変換後の16進数00を、16進数40に変更している点(ただし、16進数00は変換後も16進数00です)
が異なるだけです。ご自由にお使いください。ダウンロードにある、EDTTBLSRCで楽に修正できるはずです。作成は、CRTTBL、削除はDLTTBLです。くれぐれもQで始まる、*TBLを削除しない様気をつけてください。
また、コマンド、DCXLATEは入力ファイルと出力ファイル、変換テーブル名と、変換タイプを指定すると、出力ファイルにデータを落とします。
テーブルの内容確認は、WRKTBLでOPTION5です。内容表示のみの、独立したコマンドはないようです。(V3R1)。
ダウンロードページへ、 |