DBA Data[Home] [Help]

PACKAGE BODY: APPS.CZMLS

Source


1 package body czmls  as
2 /*	$Header: czmlsb.pls 115.11 2002/11/27 17:05:53 askhacha ship $ */
3 
4 current_client_charset varchar2 (100);
5 
6 -- CONSTANTS FOR WINDOWS CHARACTER SETS
7 
8 cs_ascii constant number 					:= 0;
9 cs_windows_japan constant number 			:= to_number ('03A4', 'XXXXXX'); --  932
10 cs_windows_korea constant number 			:= to_number ('03B5', 'XXXXXX'); --  949
11 cs_windows_taiwan constant number 			:= to_number ('03B6', 'XXXXXX'); --  950
12 cs_windows_unicode constant number 			:= to_number ('04B0', 'XXXXXX'); -- 1200
13 cs_windows_windows_latin_ee constant number := to_number ('04E2', 'XXXXXX'); -- 1250
14 
15 cs_windows_windows_cyrillic constant number := to_number ('04E3', 'XXXXXX'); -- 1251
16 cs_windows_windows_multilng_us constant number
17 											:= to_number ('04E4', 'XXXXXX'); -- 1252
18 cs_windows_greek constant number 			:= to_number ('04E5', 'XXXXXX'); -- 1253
19 cs_windows_turkish constant number 			:= to_number ('04E6', 'XXXXXX'); -- 1254
20 
21 cs_windows_hebrew constant number 			:= to_number ('04E7', 'XXXXXX'); -- 1255
22 cs_windows_arabic constant number 			:= to_number ('04E8', 'XXXXXX'); -- 1256
23 
24 
25 
26 -- CONSTANTS FOR WINDOWS LANGUAGE CODES
27 
28 l_ascii constant number 			:= to_number ('0400', 'XXXXXX');
29 l_arabic constant number 			:= to_number ('0401', 'XXXXXX'); --  1025
30 l_bulgarian constant number 			:= to_number ('0402', 'XXXXXX');
31 l_catalan constant number 			:= to_number ('0403', 'XXXXXX');
32 l_traditional_chinese constant number 	:= to_number ('0404', 'XXXXXX');
33 l_czech constant number 			:= to_number ('0405', 'XXXXXX'); --  932
34 l_danish constant number 			:= to_number ('0406', 'XXXXXX'); --  932
35 l_german constant number 			:= to_number ('0407', 'XXXXXX'); --  932
36 l_greek constant number 			:= to_number ('0408', 'XXXXXX'); --  932
37 l_american constant number 			:= to_number ('0409', 'XXXXXX'); --  1033
38 
39 l_castilian_spanish constant number 	:= to_number ('040A', 'XXXXXX'); --  932
40 l_finnish constant number 			:= to_number ('040B', 'XXXXXX'); --  932
41 l_french constant number 			:= to_number ('040C', 'XXXXXX'); --  932
42 l_hebrew constant number 			:= to_number ('040D', 'XXXXXX'); --  932
43 l_hungarian constant number 			:= to_number ('040E', 'XXXXXX'); --  932
44 l_icelandic constant number 			:= to_number ('040F', 'XXXXXX'); --  932
45 l_italian constant number 			:= to_number ('0410', 'XXXXXX'); --  932
46 l_japanese constant number 			:= to_number ('0411', 'XXXXXX'); --  932
47 l_korean constant number 			:= to_number ('0412', 'XXXXXX'); --  932
48 l_dutch constant number 			:= to_number ('0413', 'XXXXXX'); --  932
49 l_norwegian_bokmal constant number 		:= to_number ('0414', 'XXXXXX'); --  932
50 l_polish constant number 			:= to_number ('0415', 'XXXXXX'); --  932
51 l_brazilian_portuguese constant number 	:= to_number ('0416', 'XXXXXX'); --  932
52 l_rhaeto_romanic constant number 		:= to_number ('0417', 'XXXXXX'); --  932
53 l_romanian constant number 			:= to_number ('0418', 'XXXXXX'); --  932
54 l_russian constant number 			:= to_number ('0419', 'XXXXXX'); --  932
55 l_croato_serbian_latin constant number 	:= to_number ('041A', 'XXXXXX'); --  932
56 l_slovak constant number 			:= to_number ('041B', 'XXXXXX'); --  932
57 l_albanian constant number 			:= to_number ('041C', 'XXXXXX'); --  932
58 l_swedish constant number 			:= to_number ('041D', 'XXXXXX'); --  932
59 l_thai constant number 				:= to_number ('041E', 'XXXXXX'); --  932
60 l_turkish constant number 			:= to_number ('041F', 'XXXXXX'); --  932
61 l_urdu constant number 				:= to_number ('0420', 'XXXXXX'); --  932
62 
63 l_bahasa constant number 			:= to_number ('0421', 'XXXXXX'); --  932
64 l_simplified_chinese constant number	:= to_number ('0804', 'XXXXXX'); --  932
65 l_swiss_german constant number 		:= to_number ('0807', 'XXXXXX'); --  932
66 l_english_uk constant number 			:= to_number ('0809', 'XXXXXX'); --  932
67 l_mexican_spanish constant number 		:= to_number ('080A', 'XXXXXX'); --  932
68 l_belgian_french constant number 		:= to_number ('080C', 'XXXXXX'); --  932
69 l_swiss_italian constant number 		:= to_number ('0810', 'XXXXXX'); --  932
70 l_belgian_dutch constant number 		:= to_number ('0813', 'XXXXXX'); --  932
71 l_norwegian_nynorsk constant number 	:= to_number ('0814', 'XXXXXX'); --  932
72 l_portuguese constant number 			:= to_number ('0816', 'XXXXXX'); --  949
73 l_serbo_croatian_cyrillic constant number	:= to_number ('081A', 'XXXXXX'); --  950
74 l_canadian_french constant number 		:= to_number ('0C0C', 'XXXXXX'); -- 1200
75 l_swiss_french constant number 		:= to_number ('100C', 'XXXXXX'); -- 1250
76 
77 
78 procedure Set_Windows_Client_Info (Code_Page in NUMBER, Language in NUMBER,
79 		OracleCharset in OUT NOCOPY VARCHAR2, db_client_language OUT NOCOPY VARCHAR2,
80 		db_base_language OUT NOCOPY VARCHAR2,  Status OUT NOCOPY NUMBER)
81 
82 is
83 	temp_charset varchar2 (100);
84 begin
85 	Status := -1;
86 
87 	begin
88 		select value into temp_charset from v$nls_valid_values
89 		where parameter = 'CHARACTERSET' and value like '%MSWIN' || TO_CHAR (Code_Page);
90 		current_client_charset := temp_charset;
91 	exception
92 		when NO_DATA_FOUND then
93 			if code_page = cs_windows_japan then
94 				current_client_charset := 'JA16SJIS';
95 			elsif code_page = cs_windows_unicode then
96 				current_client_charset := 'UTF8';
97 			elsif code_page = cs_windows_arabic then
98 				current_client_charset := 'AR8MSAWIN';
99 			else
100 				null; -- should raise an exception...
101 			end if;
102 
103 	end;
104 
105 	if (language is not null) then
106 		Status := check_language (language, db_client_language,db_base_language);
107 	end if;
108 
109 
110 	OracleCharset := current_client_charset;
111 end Set_Windows_Client_Info;
112 
113 function client_charset return varchar2
114 is
115 begin
116 	return current_client_charset;
117 end client_charset;
118 
119 function check_language(Language in number, db_client_language OUT NOCOPY VARCHAR2,
120 				db_base_language OUT NOCOPY VARCHAR2) return number
121 
122 is
123 	temp_client_language varchar2(50);
124 	lang	 varchar2(1);
125 	temp_tablename varchar2(30);
126 	retstatus 	 number := -1;
127 begin
128 
129 	if (Language = l_ascii) then
130 		temp_client_language := 'US';
131 	elsif (Language = l_arabic) then
132 		temp_client_language := 'AR';
133 	elsif (Language = l_bulgarian) then
134 		temp_client_language := 'BG';
135 	elsif (Language = l_catalan) then
136 		temp_client_language := 'CA';
137 	elsif (Language = l_traditional_chinese) then
138 		temp_client_language := 'ZHT';
139 	elsif (Language = l_czech) then
140 		temp_client_language := 'CS';
141 	elsif (Language = l_danish) then
142 		temp_client_language := 'DK';
143 	elsif (Language = l_german) then
144 		temp_client_language := 'D';
145 	elsif (Language = l_greek) then
146 		temp_client_language := 'EL';
147 	elsif (Language = l_american) then
148 		temp_client_language := 'US';
149 	elsif (Language = l_castilian_spanish) then
150 		temp_client_language := 'E';
151 	elsif (Language = l_finnish) then
152 		temp_client_language := 'SF';
153 	elsif (Language = l_french) then
154 		temp_client_language := 'F';
155 	elsif (Language = l_hebrew) then
156 		temp_client_language := 'IW';
157 	elsif (Language = l_hungarian) then
158 		temp_client_language := 'HU';
159 	elsif (Language = l_icelandic) then
160 		temp_client_language := 'IS';
161 	elsif (Language = l_italian) then
162 		temp_client_language := 'I';
163 	elsif (Language = l_japanese) then
164 		temp_client_language := 'JA';
165 	elsif (Language = l_korean) then
166 		temp_client_language := 'KO';
167 	elsif (Language = l_dutch) then
168 		temp_client_language := 'NL';
169 	elsif (Language = l_norwegian_bokmal) then
170 		temp_client_language := 'N';  -- ??
171 	elsif (Language = l_polish) then
172 		temp_client_language := 'PL';
173 	elsif (Language = l_brazilian_portuguese) then
174 		temp_client_language := 'PTB';
175 	elsif (Language = l_rhaeto_romanic) then
176 		temp_client_language := '';  -- ??
177 	elsif (Language = l_romanian) then
178 		temp_client_language := 'RO';
179 	elsif (Language = l_russian) then
180 		temp_client_language := 'RU';
181 	elsif (Language = l_croato_serbian_latin) then
182 		temp_client_language := 'HR';  -- ??
183 	elsif (Language = l_slovak) then
184 		temp_client_language := 'SK';
185 	elsif (Language = l_albanian) then
186 		temp_client_language := '';  -- ??
187 	elsif (Language = l_swedish) then
188 		temp_client_language := 'S';
189 	elsif (Language = l_thai) then
190 		temp_client_language := 'TH';
191 	elsif (Language = l_turkish) then
192 		temp_client_language := 'TR';
193 	elsif (Language = l_urdu) then
194 		temp_client_language := ''; -- ??
195 	elsif (Language = l_bahasa) then
196 		temp_client_language := '';  -- ??
197 	elsif (Language = l_simplified_chinese) then
198 		temp_client_language := 'ZHS';
199 	elsif (Language = l_swiss_german) then
200 		temp_client_language := 'D';  -- ??
201 	elsif (Language = l_english_uk) then
202 		temp_client_language := 'GB';
203 	elsif (Language = l_mexican_spanish) then
204 		temp_client_language := 'ESA';
205 	elsif (Language = l_belgian_french) then
206 		temp_client_language := 'F';  -- ??
207 	elsif (Language = l_swiss_italian) then
208 		temp_client_language := 'I';   -- ??
209 	elsif (Language = l_belgian_dutch) then
210 		temp_client_language := 'NL';  -- ??
211 	elsif (Language = l_norwegian_nynorsk) then
212 		temp_client_language := 'N';    -- ??
213 	elsif (Language = l_portuguese) then
214 		temp_client_language := 'PT';
215 	elsif (Language = l_serbo_croatian_cyrillic) then
216 		temp_client_language := 'HR';  -- ??
217 	elsif (Language = l_canadian_french) then
218 		temp_client_language := 'FRC';
219 	elsif (Language = l_swiss_french) then
220 		temp_client_language := 'F';
221 	else
222 		temp_client_language := null;
223 	end if;
224 
225       if (temp_client_language is not null) then
226 		select installed_flag, nls_language into lang, db_client_language from fnd_languages
227 		where language_code = temp_client_language;
228 
229 		if (lang = 'B') then
230 			retstatus := 0;
231 			db_base_language := db_client_language;
232 		elsif (lang = 'I') then
233 			retstatus := 1;
234 		else
235 			retstatus := 2;
236 		end if;
237 
238 		if (retstatus > 0) then
239 		select nls_language into db_base_language from fnd_languages
240 		where installed_flag = 'B';
241 		end if;
242 	end if;
243 
244 	return retstatus;
245 
246 exception
247 when others then
248 	retstatus := -1;
249 	return retstatus;
250 
251 end check_language;
252 
253 procedure Set_Oracle_Charset (to_charset in varchar2)
254 is
255 	temp_charset varchar2 (50);
256 begin
257 	select value into temp_charset
258 	from v$nls_valid_values
259 	where parameter = 'CHARACTERSET'
260 	and value = to_charset;
261 	current_client_charset := temp_charset;
262 end Set_Oracle_Charset;
263 
264 
265 begin
266 	select value into current_client_charset
267 
268 	from v$nls_parameters
269 	where parameter = 'NLS_CHARACTERSET';
270 end czmls;