Serial Tutorial C (22) : Library C Standar – locale.h

Header locale berguna untuk mengatur informasi lokasi tertentu
Variabel :

struct lconv

Makro :

NULL
LC_ALL
LC_COLLATE
LC_CTYPE
LC_MONETARY
LC_NUMERIC
LC_TIME

Fungsi :
localeconv();
setlocale();

Variabel dan Definisinya

struktur lconv berisi variabel-variabel berikut :

char *decimal_point;
 char *thousands_sep;
 char *grouping;
 char *int_curr_symbol;
 char *currency_symbol;
 char *mon_decimal_point;
 char *mon_thousands_sep;
 char *mon_grouping;
 char *positive_sign;
 char *negative_sign;
 char int_frac_digits;
 char frac_digits;
 char p_cs_precedes;
 char p_sep_by_space;
 char n_cs_precedes;
 char n_sep_by_space;
 char p_sign_posn;
 char n_sign_posn;

Makro LC_ di deskripsikan di keterangan tentang setlocale dibawah. NULL adalah nilai dari suatu konstanta pointer null

setlocale

Deklarasi

char *setlocale(int category, const char *locale);

Mengatur atau membaca lokasi dari info informasi yang terkait.
category dapat merupakan salah satu dari berikut ini :

LC_ALL Menset segalanya
LC_COLLATE Mempengaruhi fungsi strcoll dan strxfrm.
LC_CTYPE Mempengaruhi semua fungsi karakter.
LC_MONETARY Mempengaruhi informasi moneter yang disediakan oleh fungsi localeconv
LC_NUMERIC Mempengaruhi formati decimal-point dan informasi-informasi yang disediakan oleh fungsi localeconv
LC_TIME Mempengaruhi fungsi the strftime

Semua nilai dari “C” yang diberikan pada locale merubah settingan lokal ke settingan lingkungan translasi yang normal (default). Suatu nilai null (“”) mengatur settingan lingkungan asli (native). Suatu pointer null (NULL) menyebabkan setlocale menghasilkan suatu pointer ke string yang diasosiasikan dengan kategori diatas untuk settingan yang ada (tidak ada perubahan). Semua nilai yang lain bersifat implementation-specific.
Setelah pengaturan yang berhasil, setlocale menghasilkan suatu pointer ke suatu string yang mewakili setting lokasi sebelumnya. Jika gagal, maka nilai yang dihasilkan adalah NULL.
Contoh :
[sourcecode language=”cpp”]
#include<locale.h>
#include<stdio.h>
int main(void)
{
char *old_locale;
old_locale=setlocale(LC_ALL,"C");
printf("The preivous setting was %s.\n",old_locale);
return 0;
}
[/sourcecode]

localeconv

Deklarasi

struct lconv *localeconv(void);

Mengatur struktur lconv untuk mewakili setting lokasi yang ada. Pointer string di struktur bisa saja menunjuk ke suatu string null (“”) yang mengindikasikan bahwa nilai tersebut tidak tersedia. Tipe-tipe char adalah angka non negatif. Jika nilainya adalah  CHAR_MAX, maka nilainya tidak tersedia.
Variabel-variable lconv :

char *decimal_point Karakter point desimal yang digunakan untuk nilai non-monetary.
char *thousands_sep Karakter Separator Thousands place yang digunakan untuk nilai non-monetary.
char *grouping Suatu string yang mengindikasikan ukuran dari masing-masing grup digit untuk jumlah non-monetary. Masing-masing karakter mewakili sebuah nilai integer yang menunjuk jumlah digit yang ada di grup yang ada. Suatu nilai 0 berari nilai sebelumnya digunakan untuk grup lainnya.
char *int_curr_symbol String dari simbol keuangan internasional yang digunakan. Tiga karakter yang pertama adalah yang dispesifikasikan oleh ISO 4217:1987 dan yang keempat adalah karakter yang memisahkan simbol keuangan dengan jumlah monetary.
char *currency_symbol Simbol lokal yang digunakan untuk keuangan.
char *mon_decimal_point Karakter point desimal yang digunakan untuk nilai monetary.
char *mon_thousands_sep Karakter pengelompokan ribuan yang digunakan untuk nilai monetary
char *mon_grouping Suatu string dimana elemennya mendefinisikan ukuran dari grup digit pada nilai monetary. Masing-masing karakter mewakili nilai integer yang menunjuk jumlah digit grup bersangkutan. Nilai 0 berarti bahwa nilai sebelumnya digunakan untuk grup lainnya.
char *positive_sign Karakter yang digunakan untuk nilai moneter positif.
char *negative_sign Karakter yang digunakan untuk nilai moneter negatif.
char int_frac_digits Jumlah digit yang ditunjukkan setelah koma desimal pada nilai moneter internasional.
char frac_digits Jumlah digit yang ditunjukkan setelah angka koma pada nilai moneter.
char p_cs_precedes Jika sama dengan 1 maka currency_symbol muncul sebelum nilai moneter positif. Jika sama dengan 0 maka currency_symbol muncul setelah nilai moneter positif.
char p_sep_by_space Jika sama dengan 1, maka currency_symbol dipisahkan dengan spasi dari nilai moneter positif. Jika sama dengan 0, maka tidak ada spasi antara currency_symbol dengan nilai moneter positif.
char n_cs_precedes Jika sama dengan 1, maka currency_symbol mendahului nilai moneter negatif. Jika sama dengan 0, maka currency_symbol mengikuti nilai moneter negatif
char n_sep_by_space Jika sama dengan 1, maka currency_symbol dipisahkan dengan spasi dari suatu nilai moneter negatif. Jika sama dengan 0, maka tidak ada spasi antara currency_symbol dengan nilai moneter negatif
char p_sign_posn Mewakili posisi  positive_sign di nilai moneter positif.
char n_sign_posn Mewakili posisi negative_sign di nilai moneter negatif.

Nilai berikut ini digunakan untuk p_sign_posn dan n_sign_posn:

0 Mengurung jadi satu nilai dan simbol keuangan
1 Tanda mendahului nilai dan simbol keuangan.
2 Tanda mengikuti nilai dan simbol keuangan.
3 Tanda langsung mendahului nilai dan simbol keuangan
4 Tanda langsung mengikuti nilai dan simbol keuangan.

Contoh :
[sourcecode language=”cpp”]
#include<locale.h>
#include<stdio.h>
int main(void)
{
struct lconv locale_structure;
struct lconv *locale_ptr=&locale_structure;
locale_ptr=lcoaleconv();
printf("Decimal point: %s",locale_ptr->decimal_point);
printf("Thousands Separator: %s",locale_ptr->thousands_sep);
printf("Grouping: %s",locale_ptr->grouping);
printf("International Currency Symbol: %s",locale_ptr->int_curr_symbol);
printf("Currency Symbol: %s",locale_ptr->currency_symbol);
printf("Monetary Decimal Point: %s",locale_ptr->mon_decimal_point);
printf("Monetary Thousands Separator: %s",locale_ptr->mon_thousands_sep);
printf("Monetary Grouping: %s",locale_ptr->mon_grouping);
printf("Monetary Positive Sign: %s",locale_ptr->positive_sign);
printf("Monetary Negative Sign: %s",locale_ptr->negative_sign);
printf("Monetary Intl Decimal Digits: %c",locale_ptr->int_frac_digits);
printf("Monetary Decimal Digits: %c",locale_ptr->frac_digits);
printf("Monetary + Precedes: %c",locale_ptr->p_cs_precedes);
printf("Monetary + Space: %c",locale_ptr->p_sep_by_space);
printf("Monetary – Precedes: %c",locale_ptr->n_cs_precedes);
printf("Monetary – Space: %c",locale_ptr->n_sep_by_space);
printf("Monetary + Sign Posn: %c",locale_ptr->p_sign_posn);
printf("Monetary – Sign Posn: %c",locale_ptr->n_sign_posn);
}
[/sourcecode]
Bersambung (rezaervani@gmail.com)
Tutorial Sebelumnya

Be the first to comment

Leave a Reply

Your email address will not be published.


*