Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ setlocale(3) — NEWS-os 4.2.1R

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ctype(3)

mblen(3)

SETLOCALE(3)  —  NEWS-OS Programmer’s Manual

名称

setlocale − locale 環境の設定

形式

#include <locale.h>
 char ∗setlocale(category, locale)
int category;
char ∗locale;

解説

多国語対応されたプログラムは、 実行時に、メッセージの言語や文字コードなどのカテゴリを 適当な環境に設定しなければ、正しく動作しません。 この実行時の環境を「locale」と呼びます。

setlocale は、引数 category で指定されたカテゴリに 関する locale 環境を設定します。

カテゴリ名は <locale.h> で定義されていて、 次の意味を持っています。

LC_ALL
以下のすべてのカテゴリを同時に変更する時に用います。

LC_CTYPE
文字コードに関するカテゴリです。 文字の分類を行う ctype(3) マクロなどに影響します。

LC_NUMERIC
数値の表現に関するカテゴリです。例えば、小数点として 「.」の代わりに「,」を用いるなど。

LC_TIME
日付や時刻の表現に関するカテゴリです。

LC_COLLATE
文字列の順序に関するカテゴリです。

LC_MONETARY
金額の表現に関するカテゴリです。

LC_MESSAGES
メッセージに関するカテゴリです。

引数 locale は文字列で、 例えば setlocale(LC_CTYPE, locale) を実行するためには、 /usr/lib/locale/LC_CTYPE の下にその名前のファイルまたは ディレクトリが存在しなければなりません。

locale が "" (空文字列) の場合、 category に等しい環境変数の値を locale 名として使用します。 例えば、setlocale(LC_CTYPE, "") に対しては、 環境変数 LC_CTYPE の値です。 その環境変数が存在しない場合、 環境変数 LANG の値を使用します。 この環境変数も存在しない場合は、 $HOME/.userinfo に書かれた LC_CTYPE または LANG の値を使用します。 これも存在しない場合は、 /etc/sysinfo に書かれた LC_CTYPE または LANG の値を使用します。 これも存在しない場合は、 locale の値として "C" が用いられます。

setlocale は、実際に設定した locale の値の文字列を指すポインタを返します。 locale を設定できなかった時は、NULL ポインタを返します。 この場合、locale 環境は元のままで変更されません。

カテゴリが LC_ALL の場合、 locale を設定できないカテゴリがひとつでも存在すると、 すべての locale 環境が元のままで変更されず、 setlocale は NULL ポインタを返します。

locale が 0 (NULL ポインタ) の場合、 setlocale は、現在そのカテゴリに設定されている locale の値の 文字列を指すポインタを返します。 locale の変更は行われません。

setlocale を実行する前は、 "C" という locale がデフォルトとして設定されています。

関連ファイル

/usr/lib/locale/category/locale

/etc/sysinfo

$HOME/.userinfo

関連事項

ctype(3), mblen(3)

注意事項

NEWS-OS 4.0 では、LC_CTYPE だけが、 ctype(3) マクロや mblen(3) など、いくつかのライブラリ関数に影響を与えます。他のカテゴリにつ いては、今後、対応する関数が順次用意される予定です。

NEWS-OS 3.x の set_syscode(3J) は、 setlocale を呼びだすように変更されました。 したがって、環境変数 SYS_CODE ではなく、 環境変数 LC_CTYPE または LANG の値を参照します。例えば、 set_syscode(0) は setlocale(LC_CTYPE, "") と同じ動作をします。ただし、 set_syscode が、<ctype.h> で定義されている _sys_code の値を返すことは変更さ れていません。この _sys_code は、 setlocale によって設定されます。

NEWS-OSRelease 4.2.1R

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026