|
≫ |
|
|
|
HP OpenVMS HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)
メッセージ・カタログからメッセージを取得します。
形式
#include <nl_types.h>
char *catgets (nl_catd catd, int
set_id, int msg_id, const char *s);
関数バリアント
catgets関数には,
_catgets32および
_catgets64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.9 節を参照してください。
引数
catdメッセージ・カタログ記述子。この記述子は,
catopen の呼び出しが正常終了したときに返されます。
set_id整数のセット識別子。
msg_id整数のメッセージ識別子。
sメッセージを取得できないときに関数から返されるデフォルトのメッセージ文字列を指すポインタ。
説明
catgets関数は,メッセージ・カタログ catd から, set_id と
msg_id によって示されるメッセージを取得します。メッセージは
nl_catd構造体のメッセージ・バッファに格納されます。
catgets を再び呼び出すと,格納されているメッセージは上書きされます。メッセージ文字列を保存する必要がある場合は,プログラムで別の場所にコピーしてください。
戻り値
x
|
取得したメッセージを指すポインタ。
|
s
|
デフォルト・メッセージ文字列を指すポインタ。関数が要求されたメッセージをカタログから取得できなかったことを示します。指定された引数の組み合わせ (
set_d, msg_id) がオープンされているカタログで既存のメッセージを表さない場合は,この条件が発生することがあります。また,エラーが発生したことを示す場合もあります。エラーが発生した場合は,この関数は
errno
を次のいずれかの値に設定します。
- EBADF---カタログ記述子が不正です。
- EVMSRR---OpenVMS I/O 読み込みエラー。 OpenVMS エラー・コードは
vaxc$errno
に格納されています。
|
例
#include <nl_types.h>
#include <locale.h>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <unixio.h>
/* This test makes use of all the message catalog routines. catopen */
/* opens the catalog ready for reading, then each of the three */
/* messages in the catalog are extracted in turn using catgets and */
/* printed out. catclose closes the catalog after use. */
/* The catalog source file used to create the catalog is as follows: */
/* $ This is a message file
* $
* $quote "
* $ another comment line
* $set 1
* 1 "First set, first message"
* 2 "second message - This long message uses a backslash \
* for continuation."
* $set 2
* 1 "Second set, first message" */
char *default_msg = "this is the first message.";
main()
{
nl_catd catalog;
int msg1,
msg2,
retval;
char *cat = "sys$disk:[]catgets_example.cat"; /*Force local catalog*/
char *msgtxt;
char string[128];
/* Create the message test catalog */
system("gencat catgets_example.msgx catgets_example.cat") ;
if ((catalog = catopen(cat, 0)) == (nl_catd) - 1) {
perror("catopen");
exit(EXIT_FAILURE);
}
msgtxt = catgets(catalog, 1, 1, default_msg);
printf("%s\n", msgtxt);
msgtxt = catgets(catalog, 1, 2, default_msg);
printf("%s\n", msgtxt);
msgtxt = catgets(catalog, 2, 1, default_msg);
printf("%s\n", msgtxt);
if ((retval = catclose(catalog)) == -1) {
perror("catclose");
exit(EXIT_FAILURE);
}
delete("catgets_example.cat;") ; /* Remove the test catalog */
}
|
このサンプル・プログラムを実行すると,次の結果が生成されます。
First set, first message
second message - This long message uses a backslash for continuation.
Second set, first message
|
|