日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
catopen |
メッセージ・カタログをオープンします。
#include <nl_types.h>nl_catd catopen (const char *name, int oflag);
name
オープンするメッセージ・カタログの名前。oflag
int型のオブジェクトであり,カタログ・ファイルの検索で,現在のプログラムのローケルの LC_MESSAGES カテゴリのロケール・セットを使用するのか,論理名 LANG を使用するのかを指定します。
catopen関数は,name によって示されるメッセージ・カタログをオープンします。name にコロン (:),左角括弧 ([),左山括弧 (<) のいずれかが含まれている場合や,name が論理名として定義されている場合は,name はカタログの完全なファイル指定であると解釈されます。
これらの文字が含まれていない場合, catopenは, name が既存のカタログ・ファイルを指す論理名であると解釈します。name が論理名でない場合は,論理名 NLSPATH を使用して,メッセージ・カタログのファイル指定を定義します。NLSPATH はユーザのプロセスで定義されます。NLSPATH 論理名が定義されていない場合や, NLSPATH によって指定されるどのコンポーネントでもメッセージ・カタログをオープンできない場合は, SYS$NLSPATH 論理名を使用してメッセージ・カタログ・ファイルを検索します。
NLSPATH と SYS$NLSPATH はどちらもコンマ区切りのテンプレート・リストです。 catopen関数は各テンプレートを使用してファイル指定を作成します。たとえば,NLSPATH は次のように定義することができます。
DEFINE NLSPATH SYS$SYSROOT:[SYS$I18N.MSG]%N.CAT,SYS$COMMON:[SYSMSG]%N.CAT
この例では, catopenはまず,ディレクトリ SYS$SYSROOT:[SYS$I18N.MSG] から指定されたカタログを検索します。指定されたカタログが見つからない場合は,ディレクトリ SYS$COMMON:[SYSMSG] を検索します。カタログ名は,%N を catopenに渡された名前に置き換え,接尾語 .cat を追加することにより作成されます。%N は置換フィールドと呼ばれます。次の置換フィールドは有効です。
フィールド 意味 %N catopen に渡された name を置き換える。 %L 1 ロケール名を置き換える。 ロケール名で使用されているピリオド (.) とアットマーク記号 (@) は,下線 (_) 文字に置き換えられる。
たとえば,ロケール名が "zh_CN.dechanzi@radical" の場合は, ZH_CN_DECHANZI_RADICAL に置換される。
%l 1 ロケール名の language の部分を置き換える。たとえば, en_GB.ISO8859-1 というロケール名で language の部分は en である。 %t 1 ロケール名の territory の部分を置き換える。たとえば, en_GB.ISO8859-1 というロケール名で territory の部分は GB である。 %c 1 ロケール名の codeset 名を置き換える。たとえば, en_GB.ISO8859-1 というロケール名で codeset 名は ISO8859-1 である。
oflag 引数が NL_CAT_LOCALE に設定されている場合は, LC_MESSAGES カテゴリに対して定義されている現在のロケールを使用して, %L,%l,%t,%c 置換フィールドの置換を判断します。 oflag 引数が 0 に設定されている場合は, LANG 環境変数の値をロケール名として使用して,これらのフィールドの置換を判断します。 NL_CAT_LOCALE の使用は XPG4 仕様に準拠していますが, XPG3 との互換性を維持するために 0 という値が存在することに注意してください。また, catopenでは LANG 環境変数の値を使用しますが,この値を使用してプログラムのロケールを設定できるかどうかの確認は行いません。つまり, catopenは setlocale呼び出しで,この値が有効なロケール引数として機能するかどうかを確認しません。
置換値が定義されていない場合は,空文字列に置換されます。
先頭のコンマまたは 2 つの隣接するコンマ (,,) は %N の指定に相当します。次の例を参照してください。
DEFINE NLSPATH ",%N.CAT,SYS$COMMON:[SYSMSG.%L]%N.CAT" |
この例では, catopenは次の場所をここに示した順に検索します。
x メッセージ・カタログ・ファイル記述子。呼び出しが正常終了したことを示します。この記述子は catgets および catclose の呼び出しで使用されます。 (nl_catd)-1 エラーが発生したことを示します。 errno は次のいずれかの値に設定されます。
- EACCES---特権が不十分であるか,ファイル保護違反が発生したか,ファイルが現在別のユーザによってロックされています。
- EMFILE---プロセス・チャネル・カウントを超過しました。
- ENAMETOOLONG---メッセージ・カタログの完全なファイル指定が長すぎます。
- ENOENT---要求されたメッセージ・カタログを見つけることができませんでした。
- ENOMEM---空きメモリが不足しています。
- ENOTDIR--- name 引数の一部が有効なディレクトリでありません。
- EVMSERR--- errno のどの値にも一致しないエラーが発生しました。 vaxc$errno の値を確認してください。
目次 | 索引 |
|