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


OpenVMS マニュアル


 

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

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

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_idmsg_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 


目次 索引

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