Discover AS/400

AS/400に関する覚書

CCSIDの話

CCSIDやコードページという言葉は、何度か聞いたことはあると思いますが、正確に理解している方は少ないのではないでしょうか。
CCSIDはあるバージョンから加えられた属性であると思われますが、正確にどのバージョンからかは記憶していません。
(ヘルプを見ていくとV2R3からCCSIDが加わったと推測できます。←あくまでも推測ですが、、、)

日本語環境でAS/400を使用する場合、65535と5035のどちらかを使用します。
早くからAS/400を使用しているユーザーでは、そのまま65535(中身的には5026)で使用しているケースが多いと思いますが、
最近導入したユーザーやERP,WEB系アプリを乗せているマシンでは、5035を使用するといった傾向が見受けられます。

マニュアルを読んでも内容の理解ができないので、自分なりに検証を行い理解を深めてみました。
(これ以降の記事はすべて日本語環境において記述しています)

まず、システムで属性としてCCSID、コードページ、文字識別コードの設定する場所を探してみましょう。

■図1)CCSIDに関連する設定値■
No 設定場所(OBJ) 設定パラメータ  
1 システム値 コード化文字セット識別コード QCCSID 65535
5035
2 グラフィック文字セットおよびコード・ページ QCHRID 1172-290
1172-1027
3 文字識別コード制御 QCHRIDCTL *DEVD
*SYSVAL
*JOBCCSID
*CHRIDCTL
4 ファイル属性(DB) コード化文字セット識別コード CCSID 5026
5035
5 ファイル属性(PRTF) グラフィック文字セットおよびコード・ページ CHRID *DEVD
*SYSVAL
*JOBCCSID
*CHRIDCTL
 
1172-290
1172-1027
6 スプール属性 文字識別コード (図形文字セット、コード・ページ) CHRID *DEVD
1172-290
1172-1027
7 JOB属性 コード化文字セット識別コード CCSID 65535
5035
8 JOB属性 省略時のコード化文字セット識別コード   5026
5035
9 JOB属性 文字識別コード制御 CHRIDCTL *DEVD
*JOBCCSID
10 DEVD
(TYPE=5555,5553)
文字識別コード CHRID *KBDTYPE
*SYSVAL
1172-290
1172-1027
11 エミュレータ ホストコードページ   930日本語英数カナ
930日本語英数カナ拡張
939日本語英数小文字拡張
1390日本語英数カナ拡張
1399日本語英数小文字拡張

大体、このような属性が見つかるかと思います。これだけの個所で設定があると、何処でどのように関連するかがかなり複雑なので、わかる範囲でどのように関連しているかを検証してみました。


【実験1:エミュレータの設置とDEVDの関係】

エミュレータの「ホストコードページ」に連動して、DEVDの「文字識別コード」は自動的に書き換わるようです。
結果は、以下のようになりました。
エミュレータ「ホストコードページ」 DEVD「文字識別コード」
930日本語英数カナ 1172-290
930日本語英数カナ拡張 1172-290
939日本語英数小文字拡張 1172-1027
1390日本語英数カナ拡張 1172-290
1399日本語英数小文字拡張 1172-1027

以上の結果で、AS/400の画面記述上では、小文字主体の文字コードとカナ主体の文字コードの2種類しかないことがわかります。


【実験2:エミュレータ設定とJOBのCCSIDとDBのCCSIDの関係】

今度は、エミュレータの「ホストコードページ」の設定とJOBの「CCSID」とDBの「CCSID」との関係について、小文字の表示・入力、カナの表示・入力について検証してみました。
エミュレータ「ホストコードページ」 JOB CCSID 5026のDBの表示 5026のDBへ入力 5035のDBの表示 5035のDBへ入力 小文字でのコマンド入力の認識
カナ 小文字 カナ 小文字 カナ 小文字 カナ 小文字
930日本語英数カナ 65535 × × × × ×
5035 × × × × × × ×
930日本語英数カナ拡張 65535 × × ×
5035 × × × × ×
939日本語英数小文字拡張 65535 × ×
5035

○:Ctrl+F3の切替なしに可能、△:Ctrl+F3の切替をすれば可能になった、×:不可  


システム値CCSID=65535で設定していて、DBに小文字を持っていないユーザーではエミュレータのコードページの設定はどれを使用しても問題ないことがわかります。

また冒頭で述べた「ERP,WEB系アプリを乗せているマシンでは、5035を使用するといった傾向が見受けられます。」
の理由としてDBのCCSIDが5035であったり、DBに小文字が含まれる事による理由であることがわかります。

あと、65535(5026)のCCSIDでは同一DB上に小文字とカナが混在することはできないと勘違いしているユーザーが多い(*1)ですが、
この実験からそれは誤解だということがわかります。エミュレータの「ホストコードページ」を930日本語英数カナ拡張にすることにより可能です。
(*1)ユーザーへデモをしててもそのようなことを伺います。

上記の表で「小文字のコマンド入力の認識」という列がありますが、OS/400が英語圏のCCSIDでは小文字でのコマンド入力が可能であることがわかります。
ちなみにカナ系のホストコードページでの小文字入力ではEBCIDICのコードマッピングの違いにより認識できないようです。
以下の図での水色部分が小文字にマッピングされている範囲です。

■図2)CCSID=5026のANKのテーブル■
5026.jpg


■図3)CCSID=5035のANKのテーブル■
5035.jpg


【実験3:1390,1399のコードページを試してみる】

IBMの資料では93xは旧JISで139xは新JISということのようです。
93xで表示できなかった以下のような文字がエミュレータ上で表示できるようになったようです。
NEWJIS.jpg
気をつけないといけないのは、5400-L10などのLAN直結プリンターでホストコードページを139xを設定できないプリンターがあります。
入力したものが印刷できないことが発生してしまわないように環境をすべて確認してから使用したほうが良いでしょう。

以下の画面の例では、コマンドラインで入力後に実行キーを押して、入力と表示(メッセージ上でも表示されている)が認識されていることがわかります。
1399.jpg


【考察】

マニュアルで調べたわけではありませんが、今回の実験から以下の表のような関係が成り立つかと思います。
エミュレータ「ホストコードページ」 AS「コードページ」 表示CCSID
930日本語英数カナ 290(カナ主体) 932(旧JIS)
930日本語英数カナ拡張 290(カナ主体) 932(旧JIS)
939日本語英数小文字拡張 1027(小文字主体) 932(旧JIS)
1390日本語英数カナ拡張 290(カナ主体) 943(新JIS)
1399日本語英数小文字拡張 1027(小文字主体) 943(新JIS)

HOME : TOP

Category

Archive