The setlocale() function
The setlocale()
function is the interface to the program's locale.
In general,
any program that requires the invocation country's conventions
should place a call such as:
   #include <locale.h>
   / ...
... /
   setlocale(LC_ALL, "");
/
   setlocale(LC_ALL, "");
early in the program's execution path.
This causes the program's current locale to change
to the appropriate local version
(if possible),
since LC_ALL
is the macro that specifies the entire locale instead of one category.
The following are the standard categories:
| LC_COLLATE | sorting information | 
| LC_CTYPE | character classification information | 
| LC_MONETARY | currency printing information | 
| LC_NUMERIC | numeric printing information | 
| LC_TIME | date and time printing information | 
| LC_MESSAGES | message language information | 
Any of these macros can be passed as the first argument to
setlocale() to specify just that category.
The setlocale()
function returns the name of the current locale
for a given category
(or LC_ALL)
and serves in an inquiry-only capacity
when its second argument is a null pointer.
Thus, code along the lines of the following
can be used to change
the locale or a portion thereof for a limited duration:
   #include <locale.h>
   / ...
... /
   char
/
   char  oloc;
   /
oloc;
   / ...
... /
   oloc = setlocale(LC_cat, NULL);
   if (setlocale(LC_cat, "new") != 0)
   {
      /
/
   oloc = setlocale(LC_cat, NULL);
   if (setlocale(LC_cat, "new") != 0)
   {
      / use temporarily changed locale
 use temporarily changed locale  /
      (void)setlocale(LC_cat, oloc);
   }
/
      (void)setlocale(LC_cat, oloc);
   }
Most programs will never need this capability.
Next topic: 
Changed functions
Previous topic: 
Locales
© 2003 Caldera International, Inc.  All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003