Visual Basicの200X年問題を論ず:ITpro

Visual Basicの200X年問題を論ず:ITpro

Yさんが世に広めた「2007年問題」も,団塊世代の再雇用で回避した企業が多いと聞きます。「Visual Basic 6 の2008年問題」の解決策(回避策)も案外,「Visual Basic 6アプリケーションを使い続ける」になるかもしれませんね。

そうかもしれない。日本語が無ければ。

Visual Basic 6(VB6)での文字コードの取り扱いは原則OEMコードが基準となっている。日本語版OSで有ればShift-JISである。VB6の文字列変数型であるString型は確かに内部的にはUNICODE(UNICODE 2.0)で文字列データを保持するが、外部への出力、標準コントロールを使った場合の画面表示であったり、テキストファイルへの入出力では入出力時にOEMコード変換されてしまう。

ここで問題になるのが、Vista、Windows Server 2008で、これらのOSではJIS2004対応を行い、このJIS2004はShift-JISが扱う文字より文字の種類が多いため、Shift-JISに無い文字が、他のアプリケーションやテキストデータで扱われることになる。当然それらのアプリケーションやデータをVB6で扱う可能性(クリップボード経由でデータが渡されることだってある)はあり、その場合にShift-JISで表現できない文字データをVB6で処理してしまうとデータが欠落したり、表示がおかしくなったり、あるいはアプリケーションのクラッシュもあり得る。

また、UNICODE対応のActiveXコントロールを使うことで、Shift-JISで扱い範囲以外の文字を表示させることができる場合もあるが、VB6登場した当時、UNICODEとして認識されていた今の標準多言語領域以外のUNICODE文字が出力データに入ってきた場合に、そのコントロールがどうなるかはやってみるしかない。

Vista, Server 2008上でもとりあえずVB6のアプリケーションは動作をするが、場合によっこれらの問題を起こす可能性がある。そして一番の問題は問題が発生したり、だめだった場合の対処がVB6自身ではできないことだろう。

従って、せっかくサポートされたJIS2004を本格的に扱っていこうとすれば、VB6を使い続けるという選択はあり得ない。そこでは必ずVB.NETへの移行や、Java等のUNICODEをサポートする環境への移行が必要になる。

コメントを残す