日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

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


目次 索引




メッセージ・カタログをオープンします。

形式

#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 である。


1この置換では,ロケール名が language_territory.codeset @mode という形式であるものと解釈される。

oflag 引数が NL_CAT_LOCALE に設定されている場合は, LC_MESSAGES カテゴリに対して定義されている現在のロケールを使用して, %L,%l,%t,%c 置換フィールドの置換を判断します。 oflag 引数が 0 に設定されている場合は, LANG 環境変数の値をロケール名として使用して,これらのフィールドの置換を判断します。 NL_CAT_LOCALE の使用は XPG4 仕様に準拠していますが, XPG3 との互換性を維持するために 0 という値が存在することに注意してください。また, catopenでは LANG 環境変数の値を使用しますが,この値を使用してプログラムのロケールを設定できるかどうかの確認は行いません。つまり, catopensetlocale呼び出しで,この値が有効なロケール引数として機能するかどうかを確認しません。

置換値が定義されていない場合は,空文字列に置換されます。

先頭のコンマまたは 2 つの隣接するコンマ (,,) は %N の指定に相当します。次の例を参照してください。

DEFINE NLSPATH ",%N.CAT,SYS$COMMON:[SYSMSG.%L]%N.CAT" 

この例では, catopenは次の場所をここに示した順に検索します。

  1. name (カレント・ディレクトリ)

  2. name.cat (カレント・ディレクトリ)

  3. SYS$COMMON:[SYSMSG.locale_name]name.cat


戻り値

x メッセージ・カタログ・ファイル記述子。呼び出しが正常終了したことを示します。この記述子は catgets および catclose の呼び出しで使用されます。
(nl_catd)-1    エラーが発生したことを示します。 errno は次のいずれかの値に設定されます。

  • EACCES---特権が不十分であるか,ファイル保護違反が発生したか,ファイルが現在別のユーザによってロックされています。

  • EMFILE---プロセス・チャネル・カウントを超過しました。

  • ENAMETOOLONG---メッセージ・カタログの完全なファイル指定が長すぎます。

  • ENOENT---要求されたメッセージ・カタログを見つけることができませんでした。

  • ENOMEM---空きメモリが不足しています。

  • ENOTDIR--- name 引数の一部が有効なディレクトリでありません。

  • EVMSERR--- errno のどの値にも一致しないエラーが発生しました。 vaxc$errno の値を確認してください。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.