catgets() - プログラム・メッセージの読み取り

標準

標準/拡張機能 C/C++ 依存項目

XPG4
XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

#define _XOPEN_SOURCE
#include <nl_types.h>

char *catgets(nl_catd catd, int set_id, int msg_id, const char *s);

機能説明

catgets() 関数は、catd が示すメッセージ・カタログ から set_id セットの msg_id メッセージを読み取ろうとします。catd 引数は、catopen() への以前の呼び出しで戻された メッセージ・カタログ記述子です。s 引数は、catgets() が識別メッセージを検索できない 場合に、この関数が戻すことになるデフォルトの メッセージ・ストリングを示します。

メッセージ送信元ファイルが gencat コマンドで 処理されるときに、これらのファイルの作成に 使用された CODESET が結果のメッセージ・カタログに 保管されます。catgets() 関数はこの CODESET 値を調べて、この値が 現行ロケールの CODESET 値と異なるかどうかを確認します。この値が異なった場合、catgets() は iconv() 関数を 使って、メッセージ・カタログからのメッセージ・テキストを 現行ロケールのコード・セットに変換します。デフォルトのメッセージ・ストリングは、この変換の影響を 受けません。iconv() が 2 つの CODESET で指定された変換を サポートしない場合、デフォルトのメッセージ・ストリングが 戻されます。

戻り値

識別メッセージが正常に検索されると、catgets() は NULL 終了のメッセージ・ストリングを含む内部バッファー・エリア を指すポインターを戻します。

正常に実行されなかった場合、catgets() は s を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
EBADF
catd 引数が、読み取り用にオープンされた 有効なメッセージ・カタログ記述子ではありません。
EINTR
読み取り操作がシグナルの受信のため終了し、データが何も転送されませんでした。
z/OS®UNIX サービスの特殊な動作:
エラー・コード
説明
EINVAL
いくつかの理由で戻されることがあります。
  • catd で識別されたメッセージ・カタログが 有効なメッセージ・カタログではありません。あるいはこの メッセージ・カタログが破壊されました。メッセージ・カタログが z/OSUNIX gencat コマンドを使用して作成 されたものかどうかを確認してください。
  • iconv() は、メッセージ・カタログのコード・セット と現行ロケールのコード・セットとの間の変換をサポートしません。メッセージ・カタログが作成されたときのコード・セットを チェックするには、メッセージ・カタログのオフセット 28 の コード・セット名を調べてください。
ENOMSG
set_id と msg_id で識別されたメッセージが メッセージ・カタログにありません。

関連情報