.\" Japanese Version Copyright (c) 2001 NAKANO Takeo all rights reserved.
.\" Translated Thu Fri 08 2001 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
.\"
-.\"WORD: numeric fill character ¿ôÃÍËä¤áʸ»ú
-.\"WORD: grouping character ¥°¥ë¡¼¥×²½Ê¸»ú
-.\"WORD: left precision º¸ÀºÅÙ
-.\"WORD: right precision º¸ÀºÅÙ
-.\"WORD: radix (character) ´ð¿ôÅÀ(ʸ»ú)
-.\"WORD: conversion character ÊÑ´¹Ê¸»ú
-.\"WORD: international currency format ¹ñºÝÄ̲ߥե©¡¼¥Þ¥Ã¥È
-.\"WORD: national currency format ¹ñÆâÄ̲ߥե©¡¼¥Þ¥Ã¥È
+.\"WORD: numeric fill character 数値埋め文字
+.\"WORD: grouping character グループ化文字
+.\"WORD: left precision 左精度
+.\"WORD: right precision 左精度
+.\"WORD: radix (character) 基数点(文字)
+.\"WORD: conversion character 変換文字
+.\"WORD: international currency format 国際通貨フォーマット
+.\"WORD: national currency format 国内通貨フォーマット
.\"
.TH STRFMON 3 2000-12-05 "Linux" "Linux Programmer's Manual"
-.SH ̾Á°
-strfmon \- ¶â³Û¤ÎÃͤòʸ»úÎó¤ËÊÑ´¹¤¹¤ë
-.SH ½ñ¼°
+.SH 名前
+strfmon \- 金額の値を文字列に変換する
+.SH 書式
.B #include <monetary.h>
.sp
.BI "ssize_t strfmon(char *" s ", size_t " max ", const char *" format ,
.B "...);"
-.SH ÀâÌÀ
+.SH 説明
.BR strfmon ()
-´Ø¿ô¤Ï¡¢»ØÄꤵ¤ì¤¿¿ôÎ̤ò
+関数は、指定された数量を
.I format
-¤Ç»ØÄꤵ¤ì¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Ë¤·¤¿¤¬¤Ã¤ÆÀ°·Á¤·¡¢
-·ë²Ì¤ò¥µ¥¤¥º
+で指定されたフォーマットにしたがって整形し、
+çµ\90æ\9e\9cã\82\92ã\82µã\82¤ã\82º
.I max
-¤Îʸ»úÇÛÎó
+の文字配列
.I s
-¤Ë½ñ¤¤³¤à¡£
+に書きこむ。
.PP
.I format
-Ãæ¤ÎÄ̾ï¤Îʸ»ú¤Ï¡¢ÊÑ´¹¤µ¤ì¤º¤Ë¤½¤Î¤Þ¤Þ
+中の通常の文字は、変換されずにそのまま
.I s
-¤Ë¥³¥Ô¡¼¤µ¤ì¤ë¡£ÊÑ´¹»ØÄê¤Ï \(aq%\(aq ʸ»ú¤Ç»Ï¤Þ¤ë¡£
-¤³¤Îľ¸å¤Ë¤Ï¡¢°Ê²¼¤Î¥Õ¥é¥°¤ò 0 ¸Ä°Ê¾å³¤±¤ë¤³¤È¤¬¤Ç¤¤ë¡£
+にコピーされる。変換指定は \(aq%\(aq 文字で始まる。
+この直後には、以下のフラグを 0 個以上続けることができる。
.TP
.BI = f
-1 ¥Ð¥¤¥Èʸ»ú
+1 バイト文字
.I f
-¤ò¿ôÃÍËä¤áʸ»ú (numeric fill character) ¤Ë¤¹¤ë
-(º¸ÀºÅ٤ȶ¦¤ËÍѤ¤¤ë¡£°Ê²¼¤ò»²¾È)¡£
-»ØÄꤵ¤ì¤Ê¤¤¤È¡¢¥¹¥Ú¡¼¥¹Ê¸»ú¤¬ÍѤ¤¤é¤ì¤ë¡£
+を数値埋め文字 (numeric fill character) にする
+(左精度と共に用いる。以下を参照)。
+指定されないと、スペース文字が用いられる。
.TP
.B ^
-¸½ºß¤Î¥í¥±¡¼¥ë¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤Ç¤¢¤í¤¦¥°¥ë¡¼¥×²½Ê¸»ú (grouping character)
-¤ò°ìÀڻȤï¤Ê¤¤¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥°¥ë¡¼¥×²½¤Ï͸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£
+現在のロケールで定義されているであろうグループ化文字 (grouping character)
+を一切使わない。デフォルトではグループ化は有効になっている。
.TP
-.BR ( " ¤Þ¤¿¤Ï " +
-( ¥Õ¥é¥°¤Ï¡¢Éé¤Î¿ôÃͤò³ç¸Ì¤Ç³ç¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
-+ ¥Õ¥é¥°¤ÏÉä¹æ¤ò¥Ç¥Õ¥©¥ë¥È¤Î¤è¤¦¤Ë¼è¤ê°·¤¦¤³¤È¤ò°ÕÌ£¤¹¤ë
-(¤¹¤Ê¤ï¤Á¿ôÃͤÎÁ°¤Ë¥í¥±¡¼¥ë¤ÎÉä¹æ¥Þ¡¼¥¯¤¬ÃÖ¤«¤ì¤ë¡£
-Î㤨¤ÐÀµ¤Ê¤é¤Ê¤Ë¤â¤Ê¤¯¡¢Éé¤Ê¤é \(aq\-\(aq ¤òÃÖ¤¯¡¢¤Ê¤É)¡£
+.BR ( " または " +
+( フラグは、負の数値を括弧で括ることを意味する。
++ フラグは符号をデフォルトのように取り扱うことを意味する
+(すなわち数値の前にロケールの符号マークが置かれる。
+例えば正ならなにもなく、負なら \(aq\-\(aq を置く、など)。
.TP
.B !
-Ä̲ߥ·¥ó¥Ü¥ë¤ò¾Êά¤¹¤ë¡£
+通貨シンボルを省略する。
.TP
.B \-
-¤¹¤Ù¤Æ¤Î¥Õ¥£¡¼¥ë¥É¤òº¸µÍ¤á¤Ë¤¹¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ï±¦µÍ¤á¡£
+すべてのフィールドを左詰めにする。デフォルトは右詰め。
.LP
-¼¡¤Î°ÌÃ֤ˤϡ¢¥Õ¥£¡¼¥ë¥É¤ÎÉý¤ò»ØÄê¤Ç¤¤ë¡£
-10 ¿Ê¤Î¿ôÃÍʸ»úÎó¤Ç¡¢¥Õ¥£¡¼¥ë¥É¤ÎºÇ¾®Éý¤ò¥Ð¥¤¥Èñ°Ì¤Ç»ØÄꤹ¤ë¡£
-¥Ç¥Õ¥©¥ë¥È¤Ï 0¡£
-·ë²Ì¤¬¤³¤ÎÉý¤è¤ê¤â¶¹¤¯¤Ê¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
-ÉÔÂʬ¤¬¥¹¥Ú¡¼¥¹¤ÇËä¤á¤é¤ì¤ë
-(º¸µÍ¤á¥Õ¥é¥°¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ðº¸Â¦¤¬Ëä¤á¤é¤ì¤ë)¡£
+次の位置には、フィールドの幅を指定できる。
+10 進の数値文字列で、フィールドの最小幅をバイト単位で指定する。
+デフォルトは 0。
+結果がこの幅よりも狭くなった場合には、
+不足分がスペースで埋められる
+(左詰めフラグが指定されていなければ左側が埋められる)。
.LP
-¼¡¤Î°ÌÃ֤ˤϡ¢"#" ¤Ë 10 ¿Ê¿ôÃÍʸ»úÎó¤ò³¤±¤¿·Á¼°¤Ç¡¢
-º¸ÀºÅÙ (left precision) ¤ò»ØÄê¤Ç¤¤ë¡£
-Ä̲ߤδð¿ôÅÀ (radix) ¤è¤êº¸Â¦¤Î¿ôÃͤηå¿ô¤¬¤³¤Î»ØÄê¤è¤ê¾®¤µ¤¤¾ì¹ç¤Ï¡¢
-¿ôÃÍËä¤áʸ»ú¤Çº¸Â¦¤¬Ëä¤á¤é¤ì¤ë¡£
-¤³¤Î¥Õ¥£¡¼¥ë¥ÉÉý¤Î»ØÄê¤Ç¤Ï¡¢¥°¥ë¡¼¥×²½Ê¸»ú¤Ï¥«¥¦¥ó¥È¤µ¤ì¤Ê¤¤¡£
+次の位置には、"#" に 10 進数値文字列を続けた形式で、
+左精度 (left precision) を指定できる。
+通貨の基数点 (radix) より左側の数値の桁数がこの指定より小さい場合は、
+数値埋め文字で左側が埋められる。
+このフィールド幅の指定では、グループ化文字はカウントされない。
.LP
-¼¡¤Î°ÌÃ֤ˤϡ¢"." ¤Ë 10 ¿Ê¿ôÃÍʸ»úÎó¤ò³¤±¤¿·Á¼°¤Ç¡¢
-±¦ÀºÅÙ (right precision) ¤ò»ØÄê¤Ç¤¤ë¡£
-À°·Á¤µ¤ì¤ë¿ôÃͤϡ¢À°·ÁÁ°¤Ë¤³¤Î·å¿ô¤Ë´Ý¤á¤é¤ì¤ë¡£
-¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥«¥ì¥ó¥È¥í¥±¡¼¥ë¤Î
+次の位置には、"." に 10 進数値文字列を続けた形式で、
+右精度 (right precision) を指定できる。
+整形される数値は、整形前にこの桁数に丸められる。
+デフォルトではカレントロケールの
.I frac_digits
-¤È
+と
.I int_frac_digits
-¤Î»ØÄê¤òÍѤ¤¤ë¡£
-±¦ÀºÅÙ¤¬ 0 ¤Î¾ì¹ç¤Ï¡¢´ð¿ôÅÀʸ»ú (radix character) ¤Ï°õ»ú¤µ¤ì¤Ê¤¤
-(¤³¤³¤Ç¤Î´ð¿ôÅÀʸ»ú¤Ï
+の指定を用いる。
+右精度が 0 の場合は、基数点文字 (radix character) は印字されない
+(ここでの基数点文字は
.B LC_MONETARY
-¤ÇÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢
+で定義されており、
.B LC_NUMERIC
-¤Î»ØÄê¤È¤Ï°Û¤Ê¤Ã¤Æ¤¤¤Æ¤â¤è¤¤)¡£
+の指定とは異なっていてもよい)。
.LP
-ºÇ¸å¤Ë¡¢ÊÑ´¹»ØÄê¤ÏÊÑ´¹Ê¸»ú (conversion character)
-¤Ç½ªÎ»¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
-ÊÑ´¹Ê¸»ú¤Ë¤Ï°Ê²¼¤Î 3 ¤Ä¤¬¤¢¤ë¡£
+最後に、変換指定は変換文字 (conversion character)
+で終了しなければならない。
+変換文字には以下の 3 つがある。
.TP
.B %
-(¤³¤Î¾ì¹ç¤Ï»ØÄêÁ´ÂΤ¬ "%%" ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£)
-·ë²Ì¤Îʸ»úÎó¤Ë \(aq%\(aq ʸ»ú¤ò½ñ¤¤³¤à¡£
+(この場合は指定全体が "%%" でなければならない。)
+結果の文字列に \(aq%\(aq 文字を書きこむ。
.TP
.B i
.I double
-·¿¤Î°ú¤¿ô¤Ò¤È¤Ä¤¬¡¢
-¥í¥±¡¼¥ë¤Î¹ñºÝÄ̲ߥե©¡¼¥Þ¥Ã¥È (international currency format)
-¤òÍѤ¤¤ÆÊÑ´¹¤µ¤ì¤ë¡£
+型の引き数ひとつが、
+ロケールの国際通貨フォーマット (international currency format)
+を用いて変換される。
.TP
.B n
.I double
-·¿¤Î°ú¤¿ô¤Ò¤È¤Ä¤¬¡¢
-¥í¥±¡¼¥ë¤Î¹ñÆâÄ̲ߥե©¡¼¥Þ¥Ã¥È (national currency format)
-¤òÍѤ¤¤ÆÊÑ´¹¤µ¤ì¤ë¡£
-.SH ÊÖ¤êÃÍ
+型の引き数ひとつが、
+ロケールの国内通貨フォーマット (national currency format)
+を用いて変換される。
+.SH 返り値
.BR strfmon ()
-´Ø¿ô¤Ï¡¢·ë²Ì¤Îʸ»úÎ󤬽ªÃ¼¤Î NULL ¥Ð¥¤¥È¤ò´Þ¤á¤ÆÇÛÎó
+関数は、結果の文字列が終端の NULL バイトを含めて配列
.I s
-¤Ë¼ý¤Þ¤Ã¤¿¾ì¹ç¤Ë¤Ï¡¢
+に収まった場合には、
.I s
-¤Ë½ñ¤¤³¤Þ¤ì¤¿Ê¸»ú¿ô¤òÊÖ¤¹¡£NULL ¥Ð¥¤¥È¤Ïʸ»ú¿ô¤ËÆþ¤é¤Ê¤¤¡£
-¤½¤ì°Ê³°¤Î¾ì¹ç¤Ë¤Ï¡¢
+に書きこまれた文字数を返す。NULL バイトは文字数に入らない。
+それ以外の場合には、
.I errno
-¤Ë
+に
.B E2BIG
-¤òÀßÄꤷ¤Æ \-1 ¤òÊÖ¤¹¡£
-¤³¤Î¾ì¹ç¤ÎÇÛÎó¤ÎÆâÍƤÏ̤ÄêµÁ¤Ç¤¢¤ë¡£
-.SH ½àµò
-POSIX.1-2001 ¤Ë¤Ï¤Ê¤¤¡£
-¾¤Î¤¤¤¯¤Ä¤«¤Î¥·¥¹¥Æ¥à¤Ë¸ºß¤¹¤ë¡£
-.SH Îã
+を設定して \-1 を返す。
+この場合の配列の内容は未定義である。
+.SH 準拠
+POSIX.1-2001 にはない。
+他のいくつかのシステムに存在する。
+.SH 例
.in +4n
.nf
.fi
.in
-¤Î¤è¤¦¤Ê´Ø¿ô¥³¡¼¥ë¤Î½ÐÎϤϡ¢¥ª¥é¥ó¥À¤Î¥í¥±¡¼¥ë¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ê½ÐÎϤˤʤ롣
+のような関数コールの出力は、オランダのロケールでは以下のような出力になる。
.in +4n
[ fl **1234,57] [ NLG **1 234,57]
.in
-(fl ¤Ï "florijnen" ¤Î°Õ¡£NLG ¤Ï Netherlands Guilder¡£)
-¥°¥ë¡¼¥×²½Ê¸»ú¤òÍѤ¤¤ë¤ÈÈó¾ï¤Ë½¹¤¯¤Ê¤ë¡£
-Ʊ»þ¤Ë´Ö°ã¤¤¤Ê¤¯º®Íð¤Î¸¶°ø¤Ë¤â¤Ê¤Ã¤Æ¤·¤Þ¤¦¤À¤í¤¦¡£
-¤³¤ì¤Ï¿ôÃͤÎȾʬ°Ê²¼¤ÎÉý¤Ç¤¢¤ë¤Ù¤¤À¤¬¡¢
-¿ôÃͤÈƱ¤¸¤À¤±¤ÎÉý¤ò¼è¤Ã¤Æ¤·¤Þ¤¦¤«¤é¤Ç¤¢¤ë¡£
-¤Ò¤É¤¤¤³¤È¤Ë¡¢ "fl" ¤ÎÁ°¸å¤Ë¤Ï¥¹¥Ú¡¼¥¹¤¬Æþ¤Ã¤Æ¤·¤Þ¤¤¡¢
-¤Þ¤¿ "NLG" ¤ÎÁ°¤Ë¤Ï 1 ¤Ä¡¢¸å¤Ë¤Ï 2 ¤Ä¤Î¥¹¥Ú¡¼¥¹¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¡£
-¤³¤ì¤Ï¥í¥±¡¼¥ë¥Õ¥¡¥¤¥ë¤Î¥Ð¥°¤Ç¤¢¤í¤¦¡£
-¥¤¥¿¥ê¥¢¡¦¥ª¡¼¥¹¥È¥é¥ê¥¢¡¦¥¹¥¤¥¹¡¦¥Ý¥ë¥È¥¬¥ë¤Î
-³Æ¥í¥±¡¼¥ë¤Ç¤Î·ë²Ì¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
+(fl は "florijnen" の意。NLG は Netherlands Guilder。)
+グループ化文字を用いると非常に醜くなる。
+同時に間違いなく混乱の原因にもなってしまうだろう。
+これは数値の半分以下の幅であるべきだが、
+数値と同じだけの幅を取ってしまうからである。
+ひどいことに、 "fl" の前後にはスペースが入ってしまい、
+また "NLG" の前には 1 つ、後には 2 つのスペースが置かれている。
+これはロケールファイルのバグであろう。
+イタリア・オーストラリア・スイス・ポルトガルの
+各ロケールでの結果は以下のようになる。
.in +4n
[ L. **1235] [ ITL **1.235]
.br
[ **1234$57Esc] [ **1.234$57PTE ]
.in
-.SH ´ØÏ¢¹àÌÜ
+.SH 関連項目
.BR setlocale (3),
.BR sprintf (3),
.BR locale (7)