誤った使い方として CCSID 5026 環境では、正しい英小文字を入力することはできない。
5250 エミュレータで確かに英小文字を入力して、表示することができているって ?
そのように見えるかも知れないが、それは5026 環境の中だけで英小文字に見えているだけで
基本的には、それは正しい英小文字ではなく誤りである。
CCSID
を正しく理解されない、最も多い誤りのひとつであるが、ここではそのことを
実際にHEXコードを調べて証明してみよう。
CCSID 5026環境 + 930 日本語英数カナ で入力したデータ・ベースのダンプ・リストが
次のとおりである。
BUMON5026 : CCSID = 5026 のデータ・ベース ( JOBCCSID 5026 での表示 )
0001アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ FFFF8888888888888899999999999999AA 0001123456789ACDEF0123456789ADEF23 0002abcdefghijklmnopqrstuvwxyz FFFF666666667777777789ABBBBBBB4444 00022345678912345678BBB34567890000
次に CCSID 5035環境 + 939 日本語英数小文字拡張 で入力したデータ・ベースのダンプ・リストが
次のとおりである。
BUMON5035: CCSID = 5035 のデータ・ベース ( JOBCCSID 5026 での表示 )
0001アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ FFFF566666666777777777888888999999 0001923456789012345678ABCDEFABCDEF 0002abcdefghijklmnopqrstuvwxyz FFFF888888888999999999AAAAAAAA4444 0002123456789123456789234567890000
この2つのデータ・ベースのダンプを比較してみると
同じように見た目は アイウエオ .... や abcdefg ... と表示されているものの
内部の HEX コードは異なっていることがわかる。
また CCSID 5026 のデータ・ベースを JOBCCSID = 5035 の環境下で表示させてみると
BUMON5026: CCSID = 5026 のデータ・ベース ( JOBCCSID 5035 での表示 )
0001abcdefghiテナニヌネ jklmnopqrノフヘホst FFFF8888888888888899999999999999AA 0001123456789ACDEF0123456789ADEF23 0002イウエオカキクケサシスセソタチツトハミヤユヨラリルレ FFFF666666667777777789ABBBBBBB4444 00022345678912345678BBB34567890000
また CCSID 5035 のデータ・ベースを JOBCCSID = 5035 の環境下で表示させてみると
BUMON5035: CCSID = 5035 のデータ・ベース ( JOBCCSID 5026 での表示 )
0001 abcdefgh[ijklmnopコqサシスセノr ハヒフ FFFF566666666777777777888888999999 0001923456789012345678ABCDEFABCDEF 0002アイウエオカキクケタチツテトナニヌネヘホマミムメモヤ FFFF888888888999999999AAAAAAAA4444 0002123456789123456789234567890000
となる。つまり HEX コードは当然、どのような環境下においても一定の値であるが
表示される値は 英小文字中に半角カナが入り混じるようになってしまい
誤った表示になっていることがわかる。
ただし JOBCCSID 5026 で Ctl+F3キーを押して CCSID = 5035 のデータ・ベースを
表示すると
BUMON5035:
0001アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホ FFFF566666666777777777888888999999 0001923456789012345678ABCDEFABCDEF 0002abcdefghijklmnopqrstuvwxyz FFFF888888888999999999AAAAAAAA4444 0002123456789123456789234567890000
のようにして 5035 のデータ・ベースを正しく表示することができる。
つまり Ctrl + F3キーによる操作は表示だけを一次変更しているのである。
しかし当然、 DSPJOB で調べてみても JOBCCSID は 5026 のままである。
ある大手特約店の SE は 「Ctrl + F3キーを押すと CCSID が 5035 に変更される、と
習いました」と告げたことがあったが キー・ボード操作によって JOBの CCSID が
簡単に変わったら大変なことである。
このように大手特約店のSEでも CCSID に対する理解は非常に浅い。
さて正しい英小文字はどちらであろうか ?
それには英語環境 CCSID = 37 で、実際に入力してみたデータ・ベース : BUMON37 を
表示してみるとわかる。
BUMON37: CCSID = 37 のデータ・ベース ( JOBCCSID 37 での表示 )
0002abcdefghijklmnopqrstuvwxyz FFFF888888888999999999AAAAAAAA4444 0002123456789123456789234567890000
これでおわかりのように正しい英小文字は a = 0x81 であることがわかる。
つまり
CCSID : 5035 環境で ホスト・コードページ 939 で
入力された英小文字が正しい英小文字である。
ことが証明されたのである。
確かに CCSID 5026 環境でも英小文字は入力/表示することはできるのだが
それはあくまでも閉じられた 5026 環境の中だけで、英小文字として
表現されるだけであって、他の環境との互換性はないことがこれでわかる。
例えば 入力された英小文字を ASCII や Unicode に変換しようとするなら
元の英小文字は CCSID 5035 環境において入力されたものでなくてはならない。
逆に
半角カナ文字も他の CCSID と互換性のとれる正しい半角カナを作成するには
CCSID 5026 で作成されなければならない。
ことがわかる。
これが一般的に言われる、
半角カナ優先には 5026, 英小文字優先には 5035 が必要である。
といわれる由縁である。
時間はかかったがご理解は得られたであろうか ?
5026 では正しい半角カナ・コードを入力することはできるが正しい英小文字コードを
入力することはできない。
逆に 5035 では正しい英小文字コードを入力することはできるが正しい半角カナ・コードを
入力することはできない。
正しい半角カナ・コードと正しい英小文字コードを入力することができる CCSID は
存在しない。
もし、そのようなCCSID が存在すると仮定すると 5026 と 5035 を区別して使い分ける必要も
ないし、日本語では Unicode も必要でなくなるだろう。
5026 と 5035 は、このような違いがあるので正しく使い分けすることが必要になってくるのである。
CCSID 5026 と 5035 のちがいをこのように解説した記述は IBM マニュアルやサイトのどこにも
見当たらない。
特に特約店SE 諸氏においては CCSID を真に理解している技術者はほとんどいない。
このように検証を行なって初めて CCSID の違いを明確に認識することができる。
最後にもう一度、重要なことをまとめてみると、
ということを覚えていて欲しい。