library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


HP OpenVMS

HP OpenVMS
HP C ランタイム・ライブラリ・
リファレンス・マニュアル (上巻)


前へ 次へ 目次 索引



第 10 章
国際化ソフトウェアの開発

この章では,国際化ソフトウェアの典型的な機能と,国際化ソフトウェアを設計および実装するために HP C Run-Time Library (RTL) で提供される機能について説明します。

この章で説明する関数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)』「リファレンス・セクション」を参照してください。

10.1 国際化のサポート

HP C RTL では,アプリケーション開発者が国際化ソフトウェアを作成するための機能が追加されました。 HP C RTL は,ロケール・ファイルから言語とカルチャーに関する情報を読み込んで取得します。

10.1.1 インストール

これらの HP C RTL 機能を使用する場合は,システムにこれらのファイルを提供するために別のキットをインストールする必要があります。『OpenVMS Upgrade and Installation Guide』の付録「Installing OpenVMS Internationalization data kit」を参照してください。

OpenVMS VAX システムでは,セーブ・セット VMSI18N0nn は OpenVMS オペレーティング・システムと同じメディアで提供されます。

OpenVMS Alpha システムでは,セーブ・セットは Layered Product CD で提供されます。名前は,VMSI18N0nn または ALPVMSI18N0n_07nn です。

このセーブ・セットをインストールするには,このセーブ・セット名をキットの名前として使用して,標準的な OpenVMS のインストール手順に従います。複数のロケール・カテゴリをインストールのために選択できます。次のプロンプトに応答することにより,必要な数だけロケールを選択できます。


* Do you want European and US support? [YES]? 
* Do you want Chinese GB18030 support (locale and Unicode converters) [YES]? 
* Do you want Chinese support? [YES]? 
* Do you want Japanese support? [YES]? 
* Do you want Korean support? [YES]? 
* Do you want Thai support? [YES]? 
* Do you want the Unicode converters? [YES]? 

このキットには Installation Verification Procedure も含まれています。キットが正しくインストールされたかどうかを検証するには,このプロシージャを実行することをお勧めします。

10.1.2 Unicode のサポート

OpenVMS Version 7.2 で, HP C ランタイム・ライブラリに Universal Unicode ロケールが追加されました。このロケールは VMSI18N0nn キットではなく, OpenVMS システムに付属しています。 Unicode ロケールの名前は次のとおりです。


   UTF8-20 

VMSI18N0nn キットに付属しているロケールと同様に, Unicode ロケールは SYS$I18N_LOCALE 論理名によって参照される標準的なディレクトリにあります。

UTF8-20 Unicode は,Unicode 標準 V2.0 をベースにしています。 Unicode ロケールでは,ワイド文字エンコーディングとして UCS-4 を使用し,マルチバイト文字エンコーディングとして UTF-8 を使用します。

HP C RTL には,Unicode と他のサポートされる文字セットの間の変換を実行するコンバータも含まれています。コンバータの拡張セットには,UCS-2,UCS-4, UTF-8 の Unicode エンコーディングのためのコンバータが含まれています。 Unicode コンバータは ICONV CONVERT ユーティリティで使用することができ, HP C ランタイム・ライブラリの iconv関数ファミリで使用することもできます。

OpenVMS Version 7.2 では, HP C ランタイム・ライブラリで Microsoft Code Page 437 のための Unicode 文字セット・コンバータが追加されました。

10.2 国際化ソフトウェアの機能

国際化ソフトウェアとは,複数の言語とカルチャーをサポートできるソフトウェアです。国際化プログラムは次のことができなければなりません。

上記の要件を満たすには,アプリケーションで言語,各国の習慣,使用される文字セットに関する何らかの仮定を行うべきではありません。このような各国対応データはすべて,プログラムとは別に定義し,実行時に割り当てるようにしなければなりません。

この章では, HP C を使用して国際化ソフトウェアを作成する方法について説明します。

10.3 HP C を使用した国際化ソフトウェアの開発

HP C 環境では,国際化ソフトウェアを開発するために次の機能が提供されます。

10.4 ロケール

ロケールは異なるカテゴリで構成されており,各カテゴリは国際化環境の 1 つの要素を定義します。 表 10-1 はロケールのカテゴリと,各カテゴリの説明を示しています。

表 10-1 ロケール・カテゴリ
カテゴリ 説明
LC_COLLATE 照合順序に関する情報が格納されている。
LC_CTYPE 文字の分類に関する情報が格納されている。
LC_MESSAGES yes/no プロンプトに対する応答として期待される応答を定義する。
LC_MONETARY 通貨の書式情報が格納されている。
LC_NUMERIC 数値の書式情報が格納されている。
LC_TIME 時刻と日付の情報が格納されている。

提供されるロケールは, SYS$I18N_LOCALE 論理名によって定義されるディレクトリにあります。ロケールのファイル命名規則は次のとおりです。


language_country_codeset.locale 

ただし,

10.5 setlocale 関数による国際化環境の設定

アプリケーションでは,実行時に setlocaleを呼び出すことにより国際化環境を設定します。国際化環境は次のいずれかの方法で設定します。

setlocale関数の構文は次のとおりです。


char *setlocale(int category, const char *locale) 

ただし,

アプリケーションで setlocale関数を呼び出さなかった場合は,デフォルト・ロケールは C ロケールになります。この場合,このようなアプリケーションは現在のロケールで情報を使用する関数を呼び出すことができます。

論理名の使用によるロケールの指定

setlocale関数を呼び出すときに, locale 引数として "" を指定した場合,関数はいくつか論理名を調べて,指定されたカテゴリのロケール名を判断します。

国際化環境を定義するためにユーザが設定できる論理名は数多くあります。

ユーザが定義する論理名の他に,システム・スタートアップ時に設定される多くのシステム単位の論理名があり,これらの論理名はシステムのすべてのユーザのデフォルトの国際化環境を定義します。

setlocale関数は,最初にユーザ定義論理名を確認し,そのような論理名が定義されていない場合は,システム論理名を確認します。

10.6 メッセージ・カタログの使用

国際化ソフトウェアの重要な要件は,ユーザの独自の言語でユーザと通信できなければならないということです。メッセージング・システムを導入することにより,プログラム・メッセージをプログラム・ソースと別に作成し,実行時にプログラムにリンクすることができます。

メッセージはメッセージ・テキスト・ソース・ファイルに定義され, GENCAT コマンドを使用してメッセージ・カタログにコンパイルされます。メッセージ・カタログは, HP C RTL で提供される関数を使用してプログラムからアクセスできます。

カタログに格納されているメッセージにアクセスするために提供される関数は次のとおりです。

メッセージ・カタログの作成の詳細については, OpenVMS システムのドキュメントの GENCAT コマンドの説明を参照してください。

10.7 異なる文字セットの取り扱い

HP C RTL では,ASCII でエンコーディングされた Portable Character Set を含む数多くの状態独立コードセットおよびコードセット・エンコード方式がサポートされます。状態依存コードセットはサポートされません。サポートされるコードセットは次のとおりです。

10.7.1 charmap ファイル

コードセット内の文字は charmap ファイルに定義されています。弊社が提供する charmap ファイルは, SYS$I18N_LOCALE 論理名によって定義されるディレクトリにあります。 charmap ファイルのファイル・タイプは .CMAP です。

10.7.2 コンバータ関数

HP C RTL では異なる文字セットをサポートするだけでなく,文字をあるコードセットから別のコードセットに変換するための次のコンバータ関数も提供しています。

10.7.3 コードセット・コンバータ・ファイルの使用

コードセット・コンバータのファイル命名規則は次のとおりです。


fromcode_tocode.iconv 

ただし,fromcode はソース・コードセットの名前であり, tocode は文字の変換先のコードセットの名前です。

コードセット・コンバータをシステムに追加するには, SYS$I18N_ICONV という論理名によって示されるディレクトリにコンバータ・ファイルをインストールします。

コードセット・コンバータ・ファイルは,テーブル・ベースの変換ファイルとして実装することができ, OpenVMS 共用可能イメージとして作成されたアルゴリズム・ベースのコンバータ・ファイルとして実装することもできます。

テーブル・ベースの変換ファイルの作成

テーブル・ベースのコードセット・コンバータ・ファイルを作成するには,次の手順を実行します。

  1. ソース・コードセットの文字とターゲット・コードセットの文字の対応関係を記述したテキスト・ファイルを作成します。このファイルの形式については, OpenVMS New Features Manual の DCL コマンド ICONV COMPILE を参照してください。このコマンドはこのようなファイルを処理し,コードセット・コンバータ・テーブル・ファイルを作成します。

  2. ステップ 1 で作成したファイルを論理名 SYS$I18N_ICONV によって示されるディレクトリにコピーします。この操作を実行するための特権が必要です。

アルゴリズム・ベースの変換ファイルの作成

共用可能イメージとして実装されたアルゴリズム・ベースのコードセット・コンバータ・ファイルを作成するには,次の操作を実行します。

  1. コードセット・コンバータを実装する C ソース・ファイルを作成します。 API はパブリック・ヘッダ・ファイル <iconv.h>に次のように指定されています。

  2. コードセット・コンバータを構成するモジュールを OpenVMS の共用可能イメージとしてコンパイルおよびリンクします。その場合,ファイル名が上記の規則に従っているかどうか確認されます。

  3. 上記のステップで作成されたファイルを SYS$I18N_ICONV という論理名によって示されるディレクトリにコピーします。この操作を実行するための特権が必要です。

追加注意事項


前へ 次へ 目次 索引