comparison Wnn/jserver/atojis.c @ 0:bbc77ca4def5

initial import
author Yoshiki Yazawa <yaz@cc.rim.or.jp>
date Thu, 13 Dec 2007 04:30:14 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:bbc77ca4def5
1 /*
2 * $Id: atojis.c,v 1.3 2001/06/14 18:15:59 ura Exp $
3 */
4
5 /*
6 * FreeWnn is a network-extensible Kana-to-Kanji conversion system.
7 * This file is part of FreeWnn.
8 *
9 * Copyright Kyoto University Research Institute for Mathematical Sciences
10 * 1987, 1988, 1989, 1990, 1991, 1992
11 * Copyright OMRON Corporation. 1987, 1988, 1989, 1990, 1991, 1992, 1999
12 * Copyright ASTEC, Inc. 1987, 1988, 1989, 1990, 1991, 1992
13 * Copyright FreeWnn Project 1999, 2000
14 *
15 * Maintainer: FreeWnn Project <freewnn@tomo.gr.jp>
16 *
17 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License as published by
19 * the Free Software Foundation; either version 2 of the License, or
20 * (at your option) any later version.
21 *
22 * This program is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU General Public License for more details.
26 *
27 * You should have received a copy of the GNU General Public License
28 * along with this program; if not, write to the Free Software
29 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
30 */
31
32 #include "commonhd.h"
33 #include "de_header.h"
34 #include "kaiseki.h"
35
36 static int keta_4;
37
38 static w_char _tatojis[] = {
39 #ifdef CHINESE
40 0xa1a1, 0xa3a1, 0xa3a2, 0xa3a3, 0xa1e7, 0xa3a5, 0xa3a6, 0xa3a7,
41 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af,
42 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7,
43 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf,
44 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7,
45 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf,
46 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7,
47 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa3dc, 0xa3dd, 0xa3de, 0xa3df,
48 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7,
49 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef,
50 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7,
51 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa3fe, 0x007f
52 #else
53 # ifdef KOREAN
54 0xa1a1, 0xa3a1, 0xa3a2, 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a6, 0xa3a7,
55 0xa3a8, 0xa3a9, 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ad, 0xa3ae, 0xa3af,
56 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7,
57 0xa3b8, 0xa3b9, 0xa3ba, 0xa3bb, 0xa3bc, 0xa3bd, 0xa3be, 0xa3bf,
58 0xa3c0, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7,
59 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf,
60 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7,
61 0xa3d8, 0xa3d9, 0xa3da, 0xa3db, 0xa1ac, 0xa3dd, 0xa3de, 0xa3df,
62 0xa3e0, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7,
63 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef,
64 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7,
65 0xa3f8, 0xa3f9, 0xa3fa, 0xa3fb, 0xa3fc, 0xa3fd, 0xa3fe, 0x007f,
66 # else /* JAPANESE */
67 0xa1a1, 0xa1aa, 0xa1c9, 0xa1f4, 0xa1f0, 0xa1f3, 0xa1f5, 0xa1c7,
68 0xa1ca, 0xa1cb, 0xa1f6, 0xa1dc, 0xa1a4, 0xa1dd, 0xa1a5, 0xa1bf,
69 0xa3b0, 0xa3b1, 0xa3b2, 0xa3b3, 0xa3b4, 0xa3b5, 0xa3b6, 0xa3b7,
70 0xa3b8, 0xa3b9, 0xa1a7, 0xa1a8, 0xa1e3, 0xa1e1, 0xa1e4, 0xa1a9,
71 0xa1f7, 0xa3c1, 0xa3c2, 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c6, 0xa3c7,
72 0xa3c8, 0xa3c9, 0xa3ca, 0xa3cb, 0xa3cc, 0xa3cd, 0xa3ce, 0xa3cf,
73 0xa3d0, 0xa3d1, 0xa3d2, 0xa3d3, 0xa3d4, 0xa3d5, 0xa3d6, 0xa3d7,
74 0xa3d8, 0xa3d9, 0xa3da, 0xa1ce, 0xa1c0, 0xa1cf, 0xa1b0, 0xa1b2,
75 0xa1ae, 0xa3e1, 0xa3e2, 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e6, 0xa3e7,
76 0xa3e8, 0xa3e9, 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ed, 0xa3ee, 0xa3ef,
77 0xa3f0, 0xa3f1, 0xa3f2, 0xa3f3, 0xa3f4, 0xa3f5, 0xa3f6, 0xa3f7,
78 0xa3f8, 0xa3f9, 0xa3fa, 0xa1d0, 0xa1c3, 0xa1d1, 0xa1b1, 0x007f
79 # endif /* KOREAN */
80 #endif /* CHINESE */
81 };
82
83
84 static int
85 atojis (c)
86 register w_char c;
87 {
88 if (c >= ' ' && c <= (unsigned char) '\376')
89 c = _tatojis[c - ' '];
90 return (c);
91 }
92
93 static w_char _tatokan[] = {
94 #ifdef CHINESE
95 0xa1f0, 0xd2bb, 0xb6fe, 0xc8fd, 0xcbc4, /* ¡ðÒ»¶þÈýËÄ */
96 0xcee5, 0xc1f9, 0xc6df, 0xb0cb, 0xbec5 /* ÎåÁùÆ߰˾Š*/
97 #else
98 # ifdef KOREAN
99 0xd6c3, 0xece9, 0xeca3, 0xdfb2, 0xdecc, /* ÖÃìéì£ß²ÞÌ */
100 0xe7e9, 0xd7bf, 0xf6d2, 0xf8a2, 0xcefa, /* çé׿öÒø¢Îú */
101 # else /* JAPANESE */
102 0xa1bb, 0xb0ec, 0xc6f3, 0xbbb0, 0xbbcd, /* ¡»°ìÆó»°»Í */
103 0xb8de, 0xcfbb, 0xbcb7, 0xc8ac, 0xb6e5 /* ¸ÞÏ»¼·È¬¶å */
104 # endif /* KOREAN */
105 #endif /* CHINESE */
106 };
107
108 static w_char _tatokan_o[] = {
109 #ifdef CHINESE
110 0xc1e3, 0xd2bc, 0xb7a1, 0xc8fe, 0xcbc1, /* ÁãÒ¼·¡ÈþËÁ */
111 0xcee9, 0xc2bd, 0xc6e2, 0xb0c6, 0xbec1 /* Îé½Æâ°Æ¾Á */
112 #else
113 # ifdef KOREAN
114 0xd6c3, 0xecec, 0xecc3, 0xdfb3, 0xdecc, /* ÖÃìììÃß³ÞÌ */
115 0xe7ea, 0xd7bf, 0xf6d2, 0xf8a2, 0xcefa, /* çê׿öÒø¢Îú */
116 #else /* JAPANESE */
117 0xceed, 0xb0ed, 0xc6f5, 0xbbb2, 0xbbcd, /* Îí°íÆõ»²»Í */
118 0xb8e0, 0xcfbb, 0xbcb7, 0xc8ac, 0xb6e5 /* ¸àÏ»¼·È¬¶å */
119 # endif /* KOREAN */
120 #endif /* CHINESE */
121 };
122
123 static w_char
124 atokan (c)
125 register w_char c;
126 {
127 if (c >= '0' && c <= '9')
128 c = _tatokan[c - '0'];
129 else if (c >= S_NUM && c <= S_NUM + 9)
130 c = _tatokan[c - S_NUM];
131 return (c);
132 }
133
134 static w_char
135 atokan_o (c)
136 register w_char c;
137 {
138 if (c >= '0' && c <= '9')
139 c = _tatokan_o[c - '0'];
140 else if (c >= S_NUM && c <= S_NUM + 9)
141 c = _tatokan_o[c - S_NUM];
142 return (c);
143 }
144
145 static w_char _tatoket[] = {
146 #ifdef CHINESE
147 0xcaae, 0xb0d9, 0xc7a7, /* Ê®°Ùǧ */
148 0xcdf2, 0xd2da, 0xd5d7, 0xbea9, /* ÍòÒÚÕ×¾© */
149 0xdbf2, 0xeff6, 0xf0a6, 0xb9b5, /* Ûòïö(Êã)𦹵 */
150 0xbda7, 0xd5fd, 0xd4d8, 0xbcab /* ½§ÕýÔؼ« */
151 /* ºãºÓɳ *//* °¢É®?? *//* ÄÇÓÉËû *//* ²»¿É˼Òé *//* ÎÞÁ¿´óÊý */
152 #else
153 # ifdef KOREAN
154 0xe4a8, 0xdbdd, 0xf4b6, /* ä¨ÛÝô¶ */
155 0xd8b2, 0xe5e2, 0xf0bc, 0xccc8, /* زåâð¼ÌÈ */
156 0xfaa7, 0xdff1, 0xe5cd, 0xcfb5, /* ú§ßñåÍϵ */
157 0xcad5, 0xefe1, 0xeeb0, 0xd0bf, /* ÊÕïáî°Ð¿ */
158 /* ùöùÁÞÞ ä¹ã¬Ñ¶ Ñáë¦öâ ÜôʦÞÖì¡ ÙíÕáÓÞ⦠*/
159 # else /* JAPANESE */
160 0xbdbd, 0xc9b4, 0xc0e9, /* ½½É´Àé */
161 0xcbfc, 0xb2af, 0xc3fb, 0xb5fe, /* Ëü²¯Ãûµþ */
162 0xd4b6, 0xd9b3, 0xbef7, 0xb9c2, /* Ô¶Ù³(¤·d126)¾÷¹Â */
163 0xb4c2, 0xc0b5, 0xbadc, 0xb6cb /* ´ÂÀµºÜ¶Ë */
164 /* ¹±²Ïº» *//* °¤ÁεÀ *//* Æáͳ¾ *//* ÉÔ²Ä»×µÄ *//* ̵ÎÌÂç¿ô */
165 # endif /* KOREAN */
166 #endif /* CHINESE */
167 };
168
169 static w_char _tatoket_o[] = {
170 #ifdef CHINESE
171 0xcab0, 0xb0db, 0xc7aa, /* Ê°°ÛǪ */
172 0xcdf2 /* Íò */
173 #else
174 # ifdef KOREAN
175 0xe3a6, 0xd8e8, 0xf4c6, /* ã¦ØèôÆ */
176 0xd8bf /* Ø¿ */
177 # else /* JAPANESE */
178 0xbda6, 0xeff9, 0xeff4, /* ½¦ïùïô */
179 0xe8df /* èß */
180 # endif /* KOREAN */
181 #endif /* CHINESE */
182 };
183
184 static void
185 getketa (k, kouho, col)
186 int k;
187 w_char kouho[];
188 int *col;
189 {
190 if (k % 4)
191 {
192 if (keta_4 != 0)
193 {
194 keta_4 = 0;
195 getketa (k / 4 * 4, kouho, col);
196 }
197 kouho[(*col)++] = _tatoket[k % 4 - 1];
198 }
199 else if ((k / 4 > 0) && (k / 4 < 13))
200 {
201 kouho[(*col)++] = _tatoket[k / 4 + 2];
202 }
203 else if (k / 4 == 13)
204 {
205 #ifdef CHINESE
206 kouho[(*col)++] = 0xc9b3; /* ºãºÓɳ */
207 kouho[(*col)++] = 0xbad3;
208 kouho[(*col)++] = 0xbae3;
209 #else
210 # ifdef KOREAN
211 kouho[(*col)++] = 0xdede; /* ùöùÁÞÞ */
212 kouho[(*col)++] = 0xf9c1;
213 kouho[(*col)++] = 0xf9f6;
214 # else /* JAPANESE */
215 kouho[(*col)++] = 0xbabb;
216 kouho[(*col)++] = 0xb2cf;
217 kouho[(*col)++] = 0xb9b1; /* ¹±²Ïº» */
218 # endif /* KOREAN */
219 #endif /* CHINESE */
220 }
221 else if (k / 4 == 14)
222 {
223 #ifdef CHINESE
224 kouho[(*col)++] = 0xecf3; /* °¢É®ìó */
225 kouho[(*col)++] = 0xc9ae;
226 kouho[(*col)++] = 0xb0a2;
227 #else
228 # ifdef KOREAN
229 kouho[(*col)++] = 0xd1b6; /* ä¹ã¬Ñ¶ */
230 kouho[(*col)++] = 0xe3ac;
231 kouho[(*col)++] = 0xe4b9;
232 # else /* JAPANESE */
233 kouho[(*col)++] = 0xb5c0;
234 kouho[(*col)++] = 0xc1ce;
235 kouho[(*col)++] = 0xb0a4; /* °¤ÁεÀ */
236 # endif /* KOREAN */
237 #endif /* CHINESE */
238 }
239 else if (k / 4 == 15)
240 {
241 #ifdef CHINESE
242 kouho[(*col)++] = 0xcbfb; /* ÄÇÓÉËû */
243 kouho[(*col)++] = 0xd3c9;
244 kouho[(*col)++] = 0xc4c7;
245 #else
246 # ifdef KOREAN
247 kouho[(*col)++] = 0xf6e2; /* Ñáë¦öâ */
248 kouho[(*col)++] = 0xeba6;
249 kouho[(*col)++] = 0xd1e1;
250 # else /* JAPANESE */
251 kouho[(*col)++] = 0xc2be;
252 kouho[(*col)++] = 0xcdb3;
253 kouho[(*col)++] = 0xc6e1; /* Æáͳ¾ */
254 # endif /* KOREAN */
255 #endif /* CHINESE */
256 }
257 else if (k / 4 == 16)
258 {
259 #ifdef CHINESE
260 kouho[(*col)++] = 0xd2e5;
261 kouho[(*col)++] = 0xcbbc;
262 kouho[(*col)++] = 0xbfc9;
263 kouho[(*col)++] = 0xb2bb; /* ²»¿É˼Òå */
264 #else
265 # ifdef KOREAN
266 kouho[(*col)++] = 0xeca1; /* ÜôʦÞÖì¡ */
267 kouho[(*col)++] = 0xded6;
268 kouho[(*col)++] = 0xcaa6;
269 kouho[(*col)++] = 0xdcf4;
270 # else /* JAPANESE */
271 kouho[(*col)++] = 0xb5c4;
272 kouho[(*col)++] = 0xbbd7;
273 kouho[(*col)++] = 0xb2c4;
274 kouho[(*col)++] = 0xc9d4; /* ÉÔ²Ä»×µÄ */
275 # endif /* KOREAN */
276 #endif /* CHINESE */
277 }
278 else if (k / 4 == 17)
279 {
280 #ifdef CHINESE
281 kouho[(*col)++] = 0xcafd; /* ÎÞÁ¿´óÊý */
282 kouho[(*col)++] = 0xb4f3;
283 kouho[(*col)++] = 0xc1bf;
284 kouho[(*col)++] = 0xcede;
285 #else
286 # ifdef KOREAN
287 kouho[(*col)++] = 0xe2a6; /* ÙíÕáÓÞ⦠*/
288 kouho[(*col)++] = 0xd3de;
289 kouho[(*col)++] = 0xd5e1;
290 kouho[(*col)++] = 0xd9ed;
291 # else /* JAPANESE */
292 kouho[(*col)++] = 0xbff4;
293 kouho[(*col)++] = 0xc2e7;
294 kouho[(*col)++] = 0xcecc;
295 kouho[(*col)++] = 0xccb5; /* ̵ÎÌÂç¿ô */
296 # endif /* KOREAN */
297 #endif /* CHINESE */
298 }
299 else
300 {
301 #ifdef CHINESE
302 kouho[(*col)++] = 0xa3bf; /* £¿ */
303 #else
304 # ifdef KOREAN
305 kouho[(*col)++] = 0xa3bf; /* £¿ */
306 # else /* JAPANESE */
307 kouho[(*col)++] = 0xa1a9; /* ¡© */
308 # endif /* KOREAN */
309 #endif /* CHINESE */
310 }
311 keta_4 = 0;
312 }
313
314 static void
315 getketa_o (k, kouho, col)
316 int k;
317 w_char kouho[];
318 int *col;
319 {
320 if (k % 4)
321 {
322 if (keta_4 != 0)
323 {
324 keta_4 = 0;
325 if (k / 4 == 1)
326 kouho[(*col)++] = _tatoket_o[3]; /* èß */
327 else
328 getketa (k / 4 * 4, kouho, col);
329 }
330 kouho[(*col)++] = _tatoket_o[k % 4 - 1];
331 }
332 else if (k / 4 == 1)
333 {
334 kouho[(*col)++] = _tatoket_o[3]; /* èß */
335 }
336 else
337 {
338 getketa (k, kouho, col);
339 }
340 keta_4 = 0;
341 }
342
343 w_char *
344 get_giji_knj (j, i, t, kouho)
345 int j;
346 int i;
347 int t;
348 w_char *kouho;
349 {
350 register int k;
351 w_char revkouho[1000];
352 int col = 0, keta = 0;
353
354 switch (t)
355 {
356 case WNN_NUM_ZEN: /* Á´³Ñ¿ô»ú *//* £±£²£³ */
357 #ifdef CONVERT_from_TOP
358 for (k = i; k <= j; k++)
359 {
360 if (k == i &&
361 #else
362 for (k = j; k >= i; k--)
363 {
364 if (k == j &&
365 #endif /* CONVERT_from_TOP */
366 (isspace (bun[k]) || isjspace (bun[k])))
367 *kouho++ = bun[k];
368 else
369 *kouho++ = atojis (bun[k]);
370 }
371 break;
372 case WNN_ALP_ZEN: /* Á´³Ñ */
373 case WNN_KIG_JIS:
374 case WNN_KIG_ASC:
375 #ifdef CONVERT_from_TOP
376 for (k = i; k <= j; k++)
377 #else
378 for (k = j; k >= i; k--)
379 #endif /* CONVERT_from_TOP */
380 *kouho++ = atojis (bun[k]);
381 break;
382
383 case WNN_KATAKANA: /* ¥«¥¿¥«¥Ê */
384 #ifdef CONVERT_from_TOP
385 for (k = i; k <= j; k++)
386 {
387 #else
388 for (k = j; k >= i; k--)
389 {
390 #endif /* CONVERT_from_TOP */
391 if ((bun[k] & 0xff00) == 0xa400)
392 *kouho++ = bun[k] | 0x100;
393 else
394 *kouho++ = bun[k];
395 }
396 break;
397
398 case WNN_NUM_KAN: /* ´Á¿ô»ú *//* °ìÆó»° */
399 #ifdef CONVERT_from_TOP
400 for (k = i; k <= j; k++)
401 #else
402 for (k = j; k >= i; k--)
403 #endif /* CONVERT_from_TOP */
404 *kouho++ = atokan (bun[k]);
405 break;
406 case WNN_NUM_HANCAN: /* Ⱦ³Ñ¿ô»ú *//* 1,234 */
407 #ifdef CONVERT_from_TOP
408 for (k = j; k >= i; k--)
409 {
410 if (k == i &&
411 #else
412 for (k = i; k <= j; k++)
413 {
414 if (k == j &&
415 #endif /* CONVERT_from_TOP */
416 (isspace (bun[k]) || isjspace (bun[k])))
417 {
418 revkouho[col++] = bun[k];
419 break;
420 }
421 if ((keta != 0) && (keta % 3 == 0))
422 revkouho[col++] = ','; /* , */
423 if (bun[k] >= S_NUM && bun[k] <= S_NUM + 9)
424 revkouho[col++] = '0' + bun[k] - S_NUM;
425 else
426 revkouho[col++] = bun[k];
427 keta++;
428 }
429
430 while (--col >= 0)
431 {
432 *kouho++ = revkouho[col];
433 }
434 break;
435 case WNN_NUM_ZENCAN: /* Á´³Ñ¿ô»ú *//* £±¡¤£²£³£´ */
436 #ifdef CONVERT_from_TOP
437 for (k = j; k >= i; k--)
438 {
439 if (k == i &&
440 #else
441 for (k = i; k <= j; k++)
442 {
443 if (k == j &&
444 #endif /* CONVERT_from_TOP */
445 (isspace (bun[k]) || isjspace (bun[k])))
446 {
447 revkouho[col++] = bun[k];
448 break;
449 }
450 if ((keta != 0) && (keta % 3 == 0))
451 revkouho[col++] = UJIS_comma; /* ¡¤ */
452 revkouho[col++] = atojis (bun[k]);
453 keta++;
454 }
455
456 while (--col >= 0)
457 {
458 *kouho++ = revkouho[col];
459 }
460 break;
461 case WNN_NUM_KANSUUJI: /* ´Á¿ô»ú *//* É´Æó½½»° */
462 keta_4 = 0;
463 #ifdef CONVERT_from_TOP
464 for (k = j; k >= i; k--)
465 {
466 if (k == i &&
467 #else
468 for (k = i; k <= j; k++)
469 {
470 if (k == j &&
471 #endif /* CONVERT_from_TOP */
472 (isspace (bun[k]) || isjspace (bun[k])))
473 {
474 revkouho[col++] = bun[k];
475 break;
476 }
477 if (bun[k] != '0')
478 {
479 if (keta != 0)
480 getketa (keta, revkouho, &col);
481 if (bun[k] != '1' ||
482 #ifdef CHINESE
483 keta % 4 != 1)
484 #else /* JAPANESE */
485 keta % 4 == 0 || keta % 4 == 3)
486 /* °ìÀéÉ´½½°ì */
487 #endif /* CHINESE */
488 revkouho[col++] = atokan (bun[k]);
489 }
490 else if ((keta != 0) && (keta % 4 == 0))
491 {
492 keta_4 = 1;
493 }
494 keta++;
495 }
496
497 if (col == 0)
498 *kouho++ = _tatokan[0];
499 while (--col >= 0)
500 {
501 *kouho++ = revkouho[col];
502 }
503 break;
504 case WNN_NUM_KANOLD: /* ´Á¿ô»ú *//* °íÉ´Æõ½¦»² */
505 keta_4 = 0;
506 #ifdef CONVERT_from_TOP
507 for (k = j; k >= i; k--)
508 {
509 if (k == i &&
510 #else
511 for (k = i; k <= j; k++)
512 {
513 if (k == j &&
514 #endif /* CONVERT_from_TOP */
515 (isspace (bun[k]) || isjspace (bun[k])))
516 {
517 revkouho[col++] = bun[k];
518 break;
519 }
520 if (bun[k] != '0')
521 {
522 if (keta != 0)
523 getketa_o (keta, revkouho, &col);
524 if (bun[k] != '1' ||
525 #ifdef CHINESE
526 keta % 4 != 1)
527 #else /* JAPANESE */
528 keta % 4 == 0 || keta % 4 == 3)
529 /* °ìÀéÉ´½½°ì */
530 #endif /* CHINESE */
531 revkouho[col++] = atokan_o (bun[k]);
532 }
533 else if ((keta != 0) && (keta % 4 == 0))
534 {
535 keta_4 = 1;
536 }
537 keta++;
538 }
539
540 if (col == 0)
541 *kouho++ = _tatokan_o[0];
542 while (--col >= 0)
543 {
544 *kouho++ = revkouho[col];
545 }
546 break;
547 case WNN_NUM_HAN: /* 123 */
548 #ifdef CONVERT_from_TOP
549 for (k = i; k <= j; k++)
550 {
551 #else
552 for (k = j; k >= i; k--)
553 {
554 #endif /* CONVERT_from_TOP */
555 if (bun[k] >= S_NUM && bun[k] <= S_NUM + 9)
556 *kouho++ = '0' + bun[k] - S_NUM;
557 else
558 *kouho++ = bun[k];
559 }
560 break;
561
562 default: /* ¤Ò¤é¤¬¤Ê */
563 #ifdef CONVERT_from_TOP
564 for (k = i; k <= j; k++)
565 {
566 #else
567 for (k = j; k >= i; k--)
568 {
569 #endif /* CONVERT_from_TOP */
570 *kouho++ = bun[k];
571 }
572 break;
573 }
574 *kouho++ = 0;
575 return (kouho);
576 }
577
578 void
579 giji_hindoup (t_jc)
580 int t_jc;
581 {
582 if (t_jc >= 0)
583 return;
584 switch (t_jc)
585 {
586 case WNN_NUM_HAN:
587 case WNN_NUM_ZEN:
588 case WNN_NUM_KAN:
589 case WNN_NUM_KANSUUJI:
590 case WNN_NUM_KANOLD:
591 case WNN_NUM_HANCAN:
592 case WNN_NUM_ZENCAN:
593 c_env->giji.number = t_jc;
594 break;
595 case WNN_ALP_HAN:
596 case WNN_ALP_ZEN:
597 c_env->giji.eisuu = t_jc;
598 break;
599 case WNN_KIG_HAN:
600 case WNN_KIG_JIS:
601 case WNN_KIG_ASC:
602 c_env->giji.kigou = t_jc;
603 break;
604 default:
605 return;
606 }
607 }