strfmon man page on SunOS

Man page or keyword search:  
man Server   20652 pages
apropos Keyword Search (all sections)
Output format
SunOS logo
[printable version]

strfmon(3C)		 Standard C Library Functions		   strfmon(3C)

NAME
       strfmon - convert monetary value to string

SYNOPSIS
       #include <monetary.h>

       ssize_t strfmon(char *restrict s, size_t maxsize,
	   const char *restrict format...);

DESCRIPTION
       The strfmon() function places characters into the array pointed to by s
       as controlled by the string pointed to by format. No more than  maxsize
       bytes are placed into the array.

       The  format  is	a character string that contains two types of objects:
       plain characters, which are simply copied to  the  output  stream,  and
       conversion  specifications,  each  of  which results in the fetching of
       zero or more arguments which are converted and formatted.  The  results
       are  undefined  if  there are insufficient arguments for the format. If
       the format is exhausted while arguments remain,	the  excess  arguments
       are simply ignored.

       A conversion specification consists of the following sequence:

	   o	  a % character

	   o	  optional flags

	   o	  optional field width

	   o	  optional left precision

	   o	  optional right precision

	   o	  a  required conversion character that determines the conver‐
		  sion to be performed.

   Flags
       One or more of the following optional flags can be specified to control
       the conversion:

       =f	 An  =	followed  by a single character f which is used as the
		 numeric fill character. The fill  character  must  be	repre‐
		 sentable in a single byte in order to work with precision and
		 width counts. The default numeric fill character is the space
		 character.  This  flag	 does  not  affect field width filling
		 which always uses the space character. This flag  is  ignored
		 unless a left precision (see below) is specified.

       ^	 Do  not  format the currency amount with grouping characters.
		 The default is to insert the grouping characters  if  defined
		 for the current locale.

       + or (	 Specify  the style of representing positive and negative cur‐
		 rency amounts. Only one of `+' or `(' may  be	specified.  If
		 `+'  is  specified,  the locale's equivalent of + and `−' are
		 used. If `(' is  specified,  negative	amounts	 are  enclosed
		 within	 parentheses.  If  neither  flag is specified, the `+'
		 style is used.

       !	 Suppress the currency symbol from the output conversion.

       −	 Specify the alignment.	 If this flag is  present  all	fields
		 are   left-justified (padded to the right) rather than right-
		 justified.

   Field Width
       w    A decimal digit string w specifying a minimum field width in bytes
	    in	which  the  result  of	the conversion is right-justified  (or
	    left-justified if the flag `−' is specified). The default is zero.

   Left Precision
       #n    A `#' followed by a decimal digit string n specifying  a  maximum
	     number  of	 digits	 expected  to  be formatted to the left of the
	     radix character. This option can be used to  keep	the  formatted
	     output  from  multiple calls to the strfmon() aligned in the same
	     columns. It can also be used to fill unused positions with a spe‐
	     cial  character as in $***123.45. This option causes an amount to
	     be formatted as if it has the number of digits specified by n. If
	     more  than n digit positions are required, this conversion speci‐
	     fication is ignored. Digit positions in excess of those  actually
	     required  are  filled with the numeric fill character (see the =f
	     flag above).

	     If grouping has not been suppressed with the `^' flag, and it  is
	     defined  for the current locale, grouping separators are inserted
	     before the fill characters (if any) are added.  Grouping  separa‐
	     tors  are not applied to fill characters even if the fill charac‐
	     ter is a digit.

	     To ensure alignment, any characters appearing before or after the
	     number  in	 the formatted output such as currency or sign symbols
	     are padded as necessary with space characters to make their posi‐
	     tive and negative formats an equal length.

   Right Precision
       .p      A  period  followed  by a decimal digit string p specifying the
	       number of digits after the radix character. If the value of the
	       right  precision	 p  is	zero, no radix character appears. If a
	       right precision is not included, a  default  specified  by  the
	       current	locale	is used. The amount being formatted is rounded
	       to the specified number of digits prior to formatting.

   Conversion Characters
       The conversion characters and their meanings are:

       i    The	 double argument is formatted according to the locale's inter‐
	    national   currency	 format	 (for  example,	 in  the  U.S.A.:  USD
	    1,234.56).

       n    The	 double	 argument  is  formatted  according  to	 the  locale's
	    national currency format (for example, in the U.S.A.: $1,234.56).

       %    Convert  to	 a % no argument is converted.	 The entire conversion
	    specification must be %%.

   Locale Information
       The LC_MONETARY category of the program's locale affects	 the  behavior
       of  this	 function including the monetary radix character (which may be
       different from the numeric radix character affected by  the  LC_NUMERIC
       category),  the	grouping  separator, the currency symbols and formats.
       The international currency symbol should be in conformance with the ISO
       4217: 1987 standard.

RETURN VALUES
       If  the total number of resulting bytes (including the terminating null
       byte) is not more than  maxsize, strfmon() returns the number of	 bytes
       placed  into  the  array pointed to by s, not including the terminating
       null byte. Otherwise, −1 is returned, the contents  of  the  array  are
       indeterminate, and errno is set to indicate the error.

ERRORS
       The strfmon() function will fail if:

       ENOSYS	 The function is not supported.

       E2BIG	 Conversion stopped due to lack of space in the buffer.

USAGE
       The  behavior  of  strfmon() in an SUSv3-conforming application differs
       from its behavior in a non-conforming application as follows:

	   o	  With the conversion 'i', strfmon() uses information  set  to
		  int_p_cs_precedes,   int_n_cs_precedes,  int_p_sep_by_space,
		  int_n_sep_by_space, int_p_sign_posn, and int_n_sign_posn  of
		  the  current locale instead of p_cs_precedes, n_cs_precedes,
		  p_sep_by_space,     n_sep_by_space,	  p_sign_posn,	   and
		  n_sign_posn, respectively.

	   o	  With the conversion 'i', strfmon() uses the fourth character
		  of the string set to int_curr_symbol of the  current	locale
		  instead     of    a	 space	  forint_p_sep_by_space	   and
		  int_n_sep_by_space.

	   o	  When	 the   value   of   p_sep_by_space,    n_sep_by_space,
		  int_p_sep_by_space, or int_n_sep_by_space is set to 2 in the
		  current locale, strfmon() separates the currency symbol from
		  the  sign  string  by a space, if adjacent; otherwise, strf‐
		  mon() separates the sign string from the value by a space.

EXAMPLES
       Example 1 A sample output of strfmon().

       Given a locale for the U.S.A.  and  the	values	123.45,	 −123.45,  and
       3456.781:

       ┌────────────────────────────────────────────────────────────────────┐
       │    Conversion		 Output			 Comments	    │
       │  Specification							    │
       ├────────────────────────────────────────────────────────────────────┤
       │	%n		   $123.45	    default formatting	    │
       │			  -$123.45				    │
       │			 $3,456.78				    │
       ├────────────────────────────────────────────────────────────────────┤
       │       %11n		   $123.45	right align within an 11    │
       │			  -$123.45	     character field	    │
       │			 $3,456.78				    │
       ├────────────────────────────────────────────────────────────────────┤
       │       %#5n		   $123.45     aligned columns for values   │
       │			  -$123.45	       up to 99,999	    │
       │			 $3,456.78				    │
       ├────────────────────────────────────────────────────────────────────┤
       │      %=*#5n		$***123.45	 specify a fill character   │
       │		       -$***123.45				    │
       │			$*3,456.78				    │
       ├────────────────────────────────────────────────────────────────────┤
       │      %=0#5n		$000123.45     fill characters do not use   │
       │		       -$000123.45	grouping even if the fill   │
       │			$03,456.78	   character is a digit	    │
       ├────────────────────────────────────────────────────────────────────┤
       │      %^#5n		   $123.45	  disable the grouping	    │
       │			  -$123.45		separator	    │
       │			  $3456.78				    │
       ├────────────────────────────────────────────────────────────────────┤
       │     %^#5.0n		    $123	 round off to whole units   │
       │			   -$123				    │
       │			   $3457				    │
       ├────────────────────────────────────────────────────────────────────┤
       │     %^#5.4n		  $123.4500	  increase the precision    │
       │			 -$123.4500				    │
       │			 $3456.7810				    │
       ├────────────────────────────────────────────────────────────────────┤
       │      %(#5n		   123.45	   use an alternative	    │
       │			 ($123.45)	      pos/neg style	    │
       │			$3,456.78				    │
       ├────────────────────────────────────────────────────────────────────┤
       │      %!(#5n		   123.45	  disable the currency	    │
       │			  (123.45)		  symbol	    │
       │			  3,456.78				    │
       └────────────────────────────────────────────────────────────────────┘

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │CSI			     │Enabled			   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Interface Stability	     │Standard			   │
       ├─────────────────────────────┼─────────────────────────────┤
       │MT-Level		     │MT-Safe with exceptions	   │
       └─────────────────────────────┴─────────────────────────────┘

       Th strfmon() function can be used safely in multithreaded applications,
       as long as setlocale(3C) is not called to change the locale.

SEE ALSO
       localeconv(3C), setlocale(3C), attributes(5), standards(5)

SunOS 5.10			  24 Jan 2008			   strfmon(3C)
[top]

List of man pages available for SunOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net