目次


DB2 UDB バージョン8で英語のOS上にマルチバイト文字セット(MBCS)データベースを設定する

Comments

はじめに

この記事では、英語版のWindowsオペレーティング・システムやAIXオペレーティング・システム上でマルチバイト文字セット (MDBC) データベースに対して実行するアプリケーションのテスト方法を解説します。現在、多くの開発者は、さまざまな言語でデータベース・テストを実施する必要性に直面していますが、各言語に専用のマシン上でテストするためのハードウェア・リソースがなかったり、持ちたくないと考えています。英語版のオペレーティング・システムで、複数の異種データベースに対するテストを実施できるようにすることで、ハードウェアは最小限で済み、コスト削減と効率性の向上にもつながります。

米国テキサス州ダラスにあるDeveloper Technical Support Centerでは、DB2上での複数言語サポートの利用で支援を必要とするほとんどの独立系ソフトウェア・ベンダー (ISV) から、データベースやオペレーティング・システム環境をMBCSサポート用にセットアップする方法について質問が寄せられます。したがって、この記事は、これらISVと同様に、英語版オペレーティング・システム環境でDB2 Universal Database™バージョン8上にMBCSデータベースをセットアップする必要のある開発者やその他の読者を対象としています。この記事の基本ガイドラインは、あらゆるシングル・バイト文字セット (SBCS) 言語環境にも適用できます。

ここでは、WindowsとAIX環境の両方で、MBCSデータベースを作成し、接続して、DB2コマンド・ウィンドウからSQLテストを実施するための詳細を解説します。UTF-8データベースはマルチ言語環境にも使われますが、この記事の範囲外であるため、説明を割愛します。UTF-8には着目に値する利点があることだけ認識しておいてください。この記事の終わりに、UTF-8に関する情報とその他のコード・ページに関連したトピックへのリンクが掲載されています。

この記事を通して、MBCS環境のセットアップ、データベースの作成、SQLテストの実施に日本語の例を使用します。

文字セットのエンコード方式の概要

欧米言語は、発音される音を表す記号として表示されるアルファベット・スクリプトを用いて記述されます。東アジアの言語は、言葉の意味を抽象的な方法で指す表意的な記号を使用して記述されます。表意文字セットは、アルファベット文字セットよりもはるかに大きく、その結果、シングル・バイト文字セット (SBCS) の256文字という制限を克服するために、マルチバイト文字セット (MBCS) サポートが導入されました。

文字数制限の問題に対処するために、2つの方法が採用されました。それは2バイト文字セット (DBCS) とマルチバイト文字セット (MBCS) です。これらの文字セットは、2つのカテゴリーに分類されます。

  • ユニバーサル言語サポート - 多言語サポートを提供する文字セット (UTFとUCS)
  • 単一言語サポート - 各文字セットは特定の言語およびプラットフォーム専用

この記事では、単一言語サポートを扱います。説明には日本語サポートを使用します。

日本語の表示文字は次の2つの方法のいずれかでエンコードできます。

  • Shift-JIS (SJIS) エンコード方式
    SJISはIBM-932コード・セットと、より新しいIBM-943コード・セットに使用されます。これらのコード・セットは、ほとんどのプラットフォームで提供されています。各文字の第1バイトは、その文字のバイト数の判別に使用されます。0x20〜0x7Fと0xA0〜0xDFの値は、多少の例外を除き、ASCIIおよびカタカナ文字のエンコードに使用されます。0x81〜0x9Fと0xE0〜0xFCは、マルチバイト文字の第1バイトとして使用するために予約済みです。JISX0208文字は、0x8140で始まるマルチバイト値にマップされます。マルチバイト文字の第2バイトは、任意の値を持つことができます。
  • 拡張UNIXコード (EUC) エンコード方式。
    IBM-eucJPコード・セットは、UNIXプラットフォームで提供されています。EUCエンコード方式は、1〜4文字セットをサポートできるエンコード・ルール一式を定義します。この複数文字セットのサポートは、データベースに特定のグラフィック文字を保存する予定がある場合には必要です。EUCに基づくコード・セットは、EUCエンコード・ルールに準拠しますが、特定のインスタンスに関連付けられた特定の文字セットも識別します。たとえば、日本語用のIBM-eucJPは、EUCエンコード・ルールに従った日本工業規格 (JIS) 文字のエンコードを指します

第1セット、文字セット0 (CS0) は、常にASCII文字セットを含みます。他のセットすべては、最上位ビット (MSB) が1に設定されていなければならず、文字のエンコードには何バイトでも使えます。さらに、セット内のすべての文字は、次の特性があります。

  • 同じバイト数を使ってエンコードされる
  • 表示桁幅が同じ (固定幅の端末上の桁数)

第3セット (CS2) の全文字は、先頭に常に制御文字SS2 (Single-Shift 2, 0x8E) が付きます。EUCに準拠するコード・セットは、第3セットの識別以外にはSS2制御文字を使用しません。第4セット (CS3) の全文字は、先頭に常に制御文字SS3 (Single-Shift 3, 0x8F) が付きます。EUCに準拠するコード・セットは、第4セットの識別以外にはSS3制御文字を使用しません。

以下は、EUCでサポートされるさまざまなコード・セットのフォーマットです。

CS0 - 0xxxxxxx
CS1 - 1xxxxxxx or 1xxxxxxx 1xxxxxxx or 1xxxxxxx 1xxxxxxx 1xxxxxxx
CS2 - 10001110 1xxxxxxx or 10001110 1xxxxxxx 1xxxxxxx or 10001110 1xxxxxxx 1xxxxxxx 1xxxxxxx
CS3 - 10001111 1xxxxxxx or 10001111 1xxxxxxx 1xxxxxxx or 10001111 1xxxxxxx 1xxxxxxx 1xxxxxxx

環境設定

サーバー機能を備えたDB2 UDBエディションをインストールしたとして、環境設定を続けます。環境設定は、使用するオペレーティング・システムによって異なります。まず、Windows上での設定プロセスを説明し、続いてAIXの場合を説明します。

注:以下の説明は、DB2コマンド・ウィンドウからテストするための環境設定に適用されます。DB2コマンド・ウィンドウ・セッションからではなく、アプリケーションからテストするために環境を設定するのであれば、以下の環境設定ステップは適用されません。代わりに、DB2コマンド・ウィンドウから次のコマンドを実行する必要があります。

db2set DB2CODEPAGE=<codepage of your application>

テスト完了時にDB2CODEPAGE環境変数を元の状態にリセットすることを強く推奨します。変数を有効にしたまま終えると、問題になる場合があります。変数を無効にするには、次のように入力します。

db2set DB2CODEPAGE=

DB2CODEPAGEを使用予定であれば、「MBCSデータベースの作成」をスキップできます。

Windows上での構成

Windowsで構成するには、まずDB2メッセージ・ファイル・セットをインストールし、続いてコード・ページ変換ファイル・セットをセットアップする必要があります。

DB2メッセージのインストール
DB2コマンドまたはステートメントの実行後に、DB2がエラー、警告、情報メッセージを表示できるようにするには、希望する各国語のDB2メッセージ・ファイル・セットがインストールされる必要があります。言語グループに基づいて、DB2にはさまざまなディストリビューションがあるため、インストールCD-ROMに希望の言語が入っていることを確かめる必要があります。Windowsでは、ある言語の特定のメッセージ・セットをDB2インストール時に追加するオプションがあります。バージョン7では、1つの言語しかインストールできませんが、バージョン8では、複数言語をインストールするオプションがあります。この新機能は、複数の言語環境間での切り替えを予定している場合は、特に優れた機能です。インストール時だけが、特定の言語用のDB2メッセージをインストールできる唯一の機会です。インストール・プロセスでは、標準インストールではなくカスタム・インストールを選ぶ必要があります。

DB2のメッセージ・ファイル・セットをインストールし終えると、DB2コマンドやSQLステートメントの実行後に、DB2のエラー、警告、あるいは情報メッセージが表示されます。以下は英語メッセージの例です。

C:\PROGRA~1\SQLLIB\BIN>db2 "connect to jpdb"
SQL0332N  There is no available conversion for the source 
code page "1252" to the target code page "943".  Reason Code "1".  
SQLSTATE=57017

MBCSデータベースを作成して稼動させるために特定の言語のDB2メッセージをインストールしなければならない、というわけではありません。単に、好みの言語でメッセージを表示できるという利便性が得られるにすぎません。

コード・ページ変換ファイル・セットのセットアップ
環境設定の次のステップは、選んだ言語によって異なります。この記事の例では、日本語環境を設定します。日本語へのコード・ページ変換を処理するようにWindows環境を設定するには、Windowsマシン上の「Regional Options (地域)」オプションの設定をいくつか変更する必要があります。

  1. Start」→「Settings」→「Control Panel」をクリックし、「Regional Options」をクリックします。すると図1に示すポップアップ・ダイアログ・ボックスが表示されます。
  2. ダイアログボックスの最上部で、ロケールに「Japanese」を選択します。ロケールは、数値、通貨、時刻、日付、およびテキストの入力に使用する言語に影響します。
  3. ダイアログボックスの最下部で、「Set default」をクリックし、続いて「OK」をクリックします (図2参照)。この指定により、アプリケーションはWindowsのメニューやダイアログには影響を与えずに、母国語でメニューやダイアログを表示できます。
  4. Regional Options」ダイアログ・ボックスで「OK」をクリックすると、図3に示すダイアログが表示されます。
  5. 大抵の場合、マシン上にすでにファイルを持っているので、「Yes」をクリックし、それらをハード・ディスクにインストールします。ドライブ上にファイルがない場合、WindowsインストールCD-ROMの挿入を促すプロンプトが表示されます。
  6. ファイルがインストールされた後にオペレーティング・システムに対してレジストリー変更が実施されるため、データベースの作成を開始する前にマシンをリブートする必要があります。

AIX上での構成

AIXを構成するには、最初にDB2メッセージ・ファイルをインストールし、続いてコード・ページ変換ファイル・セットをセットアップします。]

DB2メッセージのインストール
AIXでは、DB2メッセージは、インストールCD-ROM上のdb2setupか、SMIT経由でインストールします。db2setupは、DB2メッセージ・ファイル・セットなどのDB2コンポーネントをインストールする実行形式プログラムです。Windows上と同様に、DB2コマンドまたはSQLステートメントの実行後に、エラー、警告、情報メッセージを表示するために、DB2はこれらメッセージをAIX上で提供します。DB2のインストール後、いつでも追加の言語ファイル・セットを追加でき、現行の言語環境に相関するDB2メッセージを表示できます。

バージョン7と8の両方とも複数の言語メッセージ・ファイル・セットをインストールでき、ある言語環境から別の言語環境へ切り替える必要がある場合に、柔軟性を提供しています。DB2はLANG環境変数の変更を検知すると、自動的にメッセージ・ファイル・セットを切り替えます。デフォルトでは、英語のメッセージがインストールされます。

設定したい環境にデータベースの特定言語を合わせる必要はありません。たとえば、日本語データベースを稼動させるために、DB2用の日本語メッセージ・ファイル・セットをインストールする必要は必ずしもありません。DB2は日本語メッセージ・ファイルが見つからないときは、英語メッセージを使用します。

コード・ページ変換ファイル・セットのセットアップ
次のステップでは、ソース・コード・ページからMBCSコード・ページへのコード・ページ変換を可能にする、オペレーティング・システム特有のファイル・セットを持っているかどうかを調べます。次のコマンドを実行して出力結果を確かめることにより、これらのファイル・セットがインストールされているかどうかを確認できます。

lslpp -l | grep bos.loc.pc.Ja_JP (for SJIS)
bos.loc.pc.Ja_JP      4.3.3.0  COMMITTED  Base System Locale PC Code Set

lslpp -l | grep bos.loc.iso.ja_JP
bos.loc.iso.ja_JP      4.3.3.0  COMMITTED  Base System Locale ISO Code

見てのとおり、日本語ファイル・セットはインストール済みであり、新たにファイル・セットをインストール必要はありません。AIX 4.3.3インストールCD-ROMセットからファイル・セットをインストールするためのコマンドの例を、次に示します。

installp -acgNqwX -d /dev/cd0 -f File 2 >&&;1

File:

    bos.loc.iso.ja_JP         4.3.3.0
    bos.loc.pc.Ja_JP          4.3.3.0

ファイル・セットを適用した後、LANG環境変数をその言語タイプに設定する必要があります。次のコマンドは、特定の日本語言語環境に使用するコマンドです。

$export LANG=Ja_JP

ファイル・セットがインストールされ、LANG環境変数が正しく設定されていることを確認してください。これら要件が満たされてない場合、MBCSデータベースに接続しようとすると、次のエラーが発生します。

$ db2 "connect to jpdb"
SQL0332N  There is no available conversion for the source code page "819" to
the target code page "943".  Reason Code "1".  SQLSTATE=57017

言語環境を定期的に切り替える場合、db2 terminateを実行し、古いLANG環境を記憶しているかもしれない既存のバックエンド・プロセスを停止してから、データベースに接続する必要があります。

MBCSデータベースの作成

MBCSデータベースを作成するタイミングには、特定の言語に合わせて環境を対応させる前か後という選択肢があります。最初にデータベースを作成したい場合、CREATE DATABASEコマンド実行時に、補足情報を提供する必要があります。後で作成する場合は、DB2は言語環境からデフォルトのコード・ページを採用します。

ここでは、日本語言語環境を有効にする前に、日本語データベースを作成します。

db2 "create database jpdb using codeset IBM-943 territory JP"

CODESETキーワードは、DB2に対して、日本語コード・ページであるコード・ページ943を使って、データベースを作成するように指示します。

言語環境がセットアップされてからデータベースを作成する場合、あるいはdb2setを使用してDB2CODEPAGE環境変数を指定のコード・ページに設定した場合 (「環境設定」参照)、単に次のコマンドを入力するだけで済みます。

db2 "create database jpdb"

日本語環境が設定されているので、DB2はWindows上でIBM-943というコード・セットを使用して日本語データベースを作成することがわかります。AIXでは、DB2はLANG環境変数を参照して、データベースのコード・ページを判断します。DB2CODEPAGEが設定されていると、DB2は (AIXで) LANG環境変数を調べたり、(Windowsで) オペレーティング・システムのコード・ページを調べる代わりに、このDB2環境変数に基づいたコード・ページでデータベースを作成します。

DB2では多くのコード・セットが提供されるため、選択したプラットフォームで正しいコード・ページを使ったデータベースを作成できます。表1は、サポートされる日本語コード・セットを示しています。

表1. サポートされる日本語コード・ページ

コードページグループコードセット地域ID国/地域コードロケールOS国名/地域名
932D-1IBM-932JP81-OS2日本
942D-1IBM-942JP81-OS2日本
943D-1IBM-943JP81-OS2日本
954D-1IBM-9eucJPJP81ja_JPAIX日本
943*D-1IBM-943JP81Ja_JPAIX日本
954D-1eucJPJP81ja_JP.eucJPHP日本
5,039D-1SJISJP81ja_JP.SJISHP日本
954D-1eucJPJP81ja_JP.eucJPHP日本
954D-1eucJPJP81jaSCO日本
954D-1eucJPJP81ja_JPSCO日本
954D-1eucJPJP81ja_JP.EUCSCO日本
954D-1eucJPJP81ja_JP.eucJPSCO日本
954D-1eucJPJP81jaSun日本
943D-1IBM-943JP81Ja_JP.PCKSun日本
954D-1EUC_JPJP81ja_JPLinux日本
943D-1IBM-943JP81-WIN日本
930D-1IBM-930JP81-HOST日本
939D-1IBM-939JP81-HOST日本
5,026D-1IBM-5,026JP81-HOST日本
5,035D-1IBM-5,035JP81-HOST日本
1,390D-1-JP81-HOST日本
1,399D-1-JP81-HOST日本
1394**D-1-JP81--日本

*AIX 4.3以上ではコード・ページは943です。AIX 4.2またはそれ以前のAIXを使用する場合は、コード・ページは932です。
**コード・ページ1394は、コード・ページ1394からDB2 Unicodeデータベースへデータを移動するLOADまたはIMPORTユーティリティー、あるいはDB2 Unicodeデータベースからコード・ページ1394へエクスポートするEXPORTユーティリティーだけで使用できます。詳細は、バージョン7.2 FixPak 4の『リリース情報』の「データ管理ユーティリティー手引きおよび解説書」セクションを参照してください。

コード・セットの完全なリストについては、「リソース」を参照してください。

意図したコード・ページをデータベースが使用しているか確かめるには、次のコマンドを使用して、データベース構成ファイル照会します。

db2 "get database configuration for <database name >"<database name>

出力の上部に、言語とコード・ページ関連のリストがあります。

Database territory                          = JP
Database code page                          = 943
Database code set                           = IBM-943
Database country code                       = 81

データベースを接続して基本SQLテストを実施する

データベースへの接続
次の例は、DB2サーバー上のDB2コマンド・ウィンドウからローカルにデータベースに接続する方法を示しています。

db2 "connect to <database name>"

リモート・データベースに接続するには、userおよびusingキーワードを使用する必要があります。

db2 "connect to <database name> user <user id> using <password>"

基本SQLテストの実施
insertやselectステートメントなどのSQLテストを実施するには、キーボードから画面へMBCSデータを入力できなければなりません。この記事の例では、英語版のキーボードを使用して、MBCSテキスト入力操作を実施します。ここでも、日本語を使用してその実施方法を示します

Windows
Windowsの場合、DB2コマンド・ウィンドウ・セッションを開いて次のようにタイプする必要があります。

chcp <code page >

chcpはWindows特有のコマンドです。「change code page」の略で、DB2コマンド・ウィンドウ・セッションでMBCS文字の入力と検索を処理できるように、実行する必要があります。サンプルでは、コード・ページを932に変えました。これは943コード・ページのデータベース用の入力として機能することが実証されています。

chcpコマンドを実行した後、MBCSデータベースのテストを開始できます。Windows画面の右端下に、次のようなアイコンが表示されます。

日本語アイコン
英語アイコン

これらアイコンのいずれか1つが表示され、英語と日本語の入力ロケールを切り替えることができます。もう1つ別の入力ロケールを使用している場合、そのロケールに適切なアイコンが表示されます。ただし、英語のアイコンは、上記と同様のまま残ります。英語以外のアイコンが表示されることを確認してください。英語のアイコンが表示された場合、アイコンをクリックすると、次のリストで英語以外の設定値を選択できます。

これらアイコンのいずれか1つが表示され

アクティブなエディターがあり、使用する言語の表示に必要なフォントがサポートされていれば、次の示すものによく似たダイアログ・ツールボックスも表示されます。このツールボックスは、自分のWindows画面の右下端に位置します。

アクティブなエディターがあり

正しい文字セットを入力できるように、ツールボックスを設定する必要があります。たとえば、日本語には、片仮名や平仮名などのいくつかの文字セットがあります。ツールボックスから次のアイコンをクリックし、好みの文字セットを選択します。

正しい文字セットを入力できるように

それでは、日本語データベースに接続した後で、いくつかの操作を実施してみましょう。まず、文字ストリングを挿入可能な表を作成してみます。

db2 "create table jptbFl (name varchar(20))"

まだ日本語文字を使用してないので、入力は現在英語です。行を表に挿入してみます。

まだ日本語文字を使用してないので
まだ日本語文字を使用してないので

上記ステップを実施してから、メモ帳などの任意のエディターを使用して、文字をタイプしてコピーし、DB2コマンド・ウィンドウ・セッション上のinsertステートメントに貼り付けます。エディター内では、日本語特有の文字の入力ができるように、必ずフォントを選択してください。

DB2コマンド・ウィンドウからinsertを実行した結果は、次のとおりです。
では、表からselectを実施します。

AIX

AIXでは、MBCSデータベースでSQLステートメントをテストするもっとも簡単な方法は、Windowsマシンからデータベースに接続する方法です。これには、Windows上で稼動するDB2クライアントを持ち、サーバー上に存在するMBCSデータベースをカタログできなければなりません。それには、DB2クライアント構成アシスタントを介して実施することを推奨します。このアシスタントは、データベースのカタログ・プロセス全体を通して、ユーザーをステップごとにガイドするGUIツールです。このプロセスが完了すれば、あたかもDB2サーバーにローカルに位置しているかのように、クライアントWindowsマシンからSQLステートメントを入力できます。

結論

MBCSデータベースの操作という新たなチャレンジは、自分たちの問題に対して迅速なソリューションを必要とする開発者にいつも任されています。この記事の目標は、MBCSデータベースの設定と稼動のスキルを広げることで具体的な問題に取り組めるように、高度な内容を提供して、開発者の日常を少しばかり楽にすることでした。テクニカル・サポート担当者として、わたしたちは常に読者のみなさまからのフィードバックに関心を持ち、今後もみなさまから提供されるあらゆる質問、課題、修正に積極的に取り組む所存です。MBCSデータベースに関する詳細については、下記のオンライン・リソースを参照してください。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=326399
ArticleTitle=DB2 UDB バージョン8で英語のOS上にマルチバイト文字セット(MBCS)データベースを設定する
publish-date=11262004