home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 3 Comm
/
03-Comm.zip
/
CKPM5X_S.ZIP
/
CKCXLA.C
< prev
next >
Wrap
C/C++ Source or Header
|
1990-03-02
|
69KB
|
1,412 lines
/* C K C X L A */
/* C-Kermit tables and functions supporting character set translation. */
/*
Author: Frank da Cruz (fdc@columbia.edu, FDCCU@CUVMA.BITNET),
Columbia University Center for Computing Activities.
Copyright (C) 1989, Trustees of Columbia University in the City of New York.
Permission is granted to any individual or institution to use, copy, or
redistribute this software so long as it is not sold for profit, provided
this copyright notice is retained.
*/
#ifndef NULL
#define NULL 0
#endif
#include "ckcdeb.h" /* Includes... */
#include "ckcker.h"
#include "ckucmd.h"
#include "ckcxla.h"
/* Character set translation data and functions */
extern int zincnt;
extern CHAR *zinptr;
int tslevel = TS_L0; /* Transfer syntax level (0,1,2) */
int tcharset = TC_USASCII; /* Transfer syntax character set */
int fcharset = FC_USASCII; /* Local file character set */
int language = L_USASCII; /* Language */
/* Nota Bene: I6/100 is the proper designation for Latin-1, but MS-DOS */
/* Kermit 3.00 uses I2/100 (this will be fixed in 3.01). This table */
/* allows C-Kermit to recognize either one when receiving a file, but */
/* when sending, C-Kermit uses I6/100, which MS-DOS Kermit 3.00 will not */
/* recognize. Workaround: in MS-DOS Kermit, SET TRANSF CHAR LATIN1, */
/* SET ATTR CHAR OFF. */
struct csinfo tcsinfo[] = { /* Transfer character-set info */
"ASCII 7-bit text", 256, TC_NORMAL, "", /* 0 */
"Latin-1 ISO 8859-1 text", 256, TC_1LATIN, "I6/100", /* 1 */
"Latin-1 ISO 8859-1 text", 256, TC_1LATIN, "I2/100" /* 2 */
};
int ntcsets = (sizeof(tcsinfo) / sizeof(struct csinfo));
/* Grrr... Had to back off on moving this to ckuxla.h because that file */
/* is included by more than one module, so link complains about multiple */
/* definitions of _fcsinfo, _fcstab, etc. */
/* File character set information structure, indexed by character set code, */
/* as defined immediately above. This table must be in order of character */
/* set number! */
struct csinfo fcsinfo[] = { /* File character set information... */
/* Descriptive Name Size Designator */
"US ASCII", 128, FC_USASCII, NULL,
"British/UK NRC ISO-646", 128, FC_UKASCII, NULL,
"Dutch NRC ISO-646", 128, FC_DUASCII, NULL,
"Finnish NRC ISO-646", 128, FC_FIASCII, NULL,
"French NRC ISO-646", 128, FC_FRASCII, NULL,
"French-Canadian NRC ISO-646", 128, FC_FCASCII, NULL,
"German NRC ISO-646", 128, FC_GEASCII, NULL,
"Hungarian NRC ISO-646", 128, FC_HUASCII, NULL,
"Italian NRC ISO-646", 128, FC_ITASCII, NULL,
"Norwegian/Danish NRC ISO-646", 128, FC_NOASCII, NULL,
"Portuguese NRC ISO-646", 128, FC_POASCII, NULL,
"Spanish NRC ISO-646", 128, FC_SPASCII, NULL,
"Swedish NRC ISO-646", 128, FC_SWASCII, NULL,
"Swiss NRC ISO-646", 128, FC_CHASCII, NULL,
"ISO Latin-1", 256, FC_1LATIN, NULL,
"DEC Multinational", 256, FC_DECMCS, NULL
};
/* Local file character sets */
/* Includes 7-bit National Replacement Character Sets of ISO 646 */
/* Plus ISO Latin-1 and DEC Multinational Character Set (MCS) */
struct keytab fcstab[] = { /* Keyword table for 'set file character-set' */
/* Keyword Value Flags */
"ascii", FC_USASCII, 0, /* ASCII */
"british", FC_UKASCII, 0, /* British NRC */
"dec-mcs", FC_DECMCS, 0, /* DEC multinational character set */
"dutch", FC_DUASCII, 0, /* Dutch NRC */
"finnish", FC_FIASCII, 0, /* Finnish NRC */
"french", FC_FRASCII, 0, /* French NRC */
"fr-canadian", FC_FCASCII, 0, /* French Canadian NRC */
"german", FC_GEASCII, 0, /* German NRC */
"hungarian", FC_HUASCII, 0, /* Hungarian NRC */
"italian", FC_ITASCII, 0, /* Italian NRC */
"latin-1", FC_1LATIN, 0, /* ISO Latin Alphabet 1 */
"norwegian/danish", FC_NOASCII, 0, /* Norwegian and Danish NRC */
"portuguese", FC_POASCII, 0, /* Portuguese NRC */
"spanish", FC_SPASCII, 0, /* Spanish NRC */
"swedish", FC_SWASCII, 0, /* Swedish NRC */
"swiss", FC_CHASCII, 0 /* Swiss NRC */
};
int nfilc = (sizeof(fcstab) / sizeof(struct keytab)); /* size of this table */
/*
Languages:
This table serves two purposes. First, it allows C-Kermit to have a
SET LANGUAGE command, which automatically selects the associated file
character set and transfer character set. Second, it allows the program
to apply special language-specific rules when translating from a character
set that contains national characters into plain ASCII, like German umlaut-a
becomes ae.
*/
struct langinfo langs[] = {
/* Language code File Charset Xfer Charset Name */
L_USASCII, FC_USASCII, TC_USASCII, "ASCII (American English)",
L_BRITISH, FC_UKASCII, TC_1LATIN, "British (English)",
L_DANISH, FC_NOASCII, TC_1LATIN, "Danish",
L_DUTCH, FC_DUASCII, TC_1LATIN, "Dutch",
L_FINNISH, FC_FIASCII, TC_1LATIN, "Finnish",
L_FRENCH, FC_FRASCII, TC_1LATIN, "French",
L_FR_CANADIAN, FC_FCASCII, TC_1LATIN, "French-Canadian",
L_GERMAN, FC_GEASCII, TC_1LATIN, "German",
L_HUNGARIAN, FC_HUASCII, TC_1LATIN, "Hungarian",
L_ITALIAN, FC_ITASCII, TC_1LATIN, "Italian",
L_NORWEGIAN, FC_NOASCII, TC_1LATIN, "Norwegian",
L_PORTUGUESE, FC_POASCII, TC_1LATIN, "Portuguese",
L_SPANISH, FC_SPASCII, TC_1LATIN, "Spanish",
L_SWEDISH, FC_SWASCII, TC_1LATIN, "Swedish",
L_SWISS, FC_CHASCII, TC_1LATIN, "Swiss"
};
/* Translation tables ... */
/*
Note, many more can and should be added.
Presently we have only ASCII and Latin-1 as transfer character sets
and ASCII, Latin-1, DEC-MCS, and many ISO-646 NRCs as file character sets
For each pair of (file,transfer) character sets, we need two translation
functions, one for sending, one for receiving. It is recommended that
functions and tables for all computers be included in this file, preferably
without #ifdef's, so that corrections need be made only in one place.
*/
/* Here is the first table, fully annotated... */
CHAR
yl1toas[] = { /* ISO 8859-1 Latin-1 to ascii */
/* Source character Description => Translation */
/* Dec row/col Set
0, /* 000 00/00 C0 NUL Ctrl-@ => (self) */
1, /* 001 00/01 C0 SOH Ctrl-A => (self) */
2, /* 002 00/02 C0 STX Ctrl-B => (self) */
3, /* 003 00/03 C0 ETX Ctrl-C => (self) */
4, /* 004 00/04 C0 EOT Ctrl-D => (self) */
5, /* 005 00/05 C0 ENQ Ctrl-E => (self) */
6, /* 006 00/06 C0 ACK Ctrl-F => (self) */
7, /* 007 00/07 C0 BEL Ctrl-G => (self) */
8, /* 008 00/08 C0 BS Ctrl-H => (self) */
9, /* 009 00/09 C0 HT Ctrl-I => (self) */
10, /* 010 00/10 C0 LF Ctrl-J => (self) */
11, /* 011 00/11 C0 VT Ctrl-K => (self) */
12, /* 012 00/12 C0 FF Ctrl-L => (self) */
13, /* 013 00/13 C0 CR Ctrl-M => (self) */
14, /* 014 00/14 C0 SO Ctrl-N => (self) */
15, /* 015 00/15 C0 SI Ctrl-O => (self) */
16, /* 016 01/00 C0 DLE Ctrl-P => (self) */
17, /* 017 01/01 C0 DC1 Ctrl-Q => (self) */
18, /* 018 01/02 C0 DC2 Ctrl-R => (self) */
19, /* 019 01/03 C0 DC3 Ctrl-S => (self) */
20, /* 020 01/04 C0 DC4 Ctrl-T => (self) */
21, /* 021 01/05 C0 NAK Ctrl-U => (self) */
22, /* 022 01/06 C0 SYN Ctrl-V => (self) */
23, /* 023 01/07 C0 ETB Ctrl-W => (self) */
24, /* 024 01/08 C0 CAN Ctrl-X => (self) */
25, /* 025 01/09 C0 EM Ctrl-Y => (self) */
26, /* 026 01/10 C0 SUB Ctrl-Z => (self) */
27, /* 027 01/11 C0 ESC Ctrl-[ => (self) */
28, /* 028 01/12 C0 FS Ctrl-\ => (self) */
29, /* 029 01/13 C0 GS Ctrl-] => (self) */
30, /* 030 01/14 C0 RS Ctrl-^ => (self) */
31, /* 031 01/15 C0 US Ctrl-_ => (self) */
32, /* 032 02/00 SP Space => (self) */
33, /* 033 02/01 G0 ! Exclamation mark => (self) */
34, /* 034 02/02 G0 " Doublequote => (self) */
35, /* 035 02/03 G0 # Number sign => (self) */
36, /* 036 02/04 G0 $ Dollar sign => (self) */
37, /* 037 02/05 G0 % Percent sign => (self) */
38, /* 038 02/06 G0 & Ampersand => (self) */
39, /* 039 02/07 G0 ' Apostrophe => (self) */
40, /* 040 02/08 G0 ( Left parenthesis => (self) */
41, /* 041 02/09 G0 ) Right parenthesis => (self) */
42, /* 042 02/10 G0 * Asterisk => (self) */
43, /* 043 02/11 G0 + Plus sign => (self) */
44, /* 044 02/12 G0 , Comma => (self) */
45, /* 045 02/13 G0 - Hyphen, minus sign => (self) */
46, /* 046 02/14 G0 . Period, full stop => (self) */
47, /* 047 02/15 G0 / Slash, solidus => (self) */
48, /* 048 03/00 G0 0 Digit 0 => (self) */
49, /* 049 03/01 G0 1 Digit 1 => (self) */
50, /* 050 03/02 G0 2 Digit 2 => (self) */
51, /* 051 03/03 G0 3 Digit 3 => (self) */
52, /* 052 03/04 G0 4 Digit 4 => (self) */
53, /* 053 03/05 G0 5 Digit 5 => (self) */
54, /* 054 03/06 G0 6 Digit 6 => (self) */
55, /* 055 03/07 G0 7 Digit 7 => (self) */
56, /* 056 03/08 G0 8 Digit 8 => (self) */
57, /* 057 03/09 G0 9 Digit 9 => (self) */
58, /* 058 03/10 G0 : Colon => (self) */
59, /* 059 03/11 G0 ; Semicolon => (self) */
60, /* 060 03/12 G0 < Less-than sign => (self) */
61, /* 061 03/13 G0 = Equals sign => (self) */
62, /* 062 03/14 G0 > Greater-than sign => (self) */
63, /* 063 03/15 G0 ? Question mark => (self) */
64, /* 064 04/00 G0 @ Commercial at sign => (self) */
65, /* 065 04/01 G0 A Letter A => (self) */
66, /* 066 04/02 G0 B Letter B => (self) */
67, /* 067 04/03 G0 C Letter C => (self) */
68, /* 068 04/04 G0 D Letter D => (self) */
69, /* 069 04/05 G0 E Letter E => (self) */
70, /* 070 04/06 G0 F Letter F => (self) */
71, /* 071 04/07 G0 G Letter G => (self) */
72, /* 072 04/08 G0 H Letter H => (self) */
73, /* 073 04/09 G0 I Letter I => (self) */
74, /* 074 04/10 G0 J Letter J => (self) */
75, /* 075 04/11 G0 K Letter K => (self) */
76, /* 076 04/12 G0 L Letter L => (self) */
77, /* 077 04/13 G0 M Letter M => (self) */
78, /* 078 04/14 G0 N Letter N => (self) */
79, /* 079 04/15 G0 O Letter O => (self) */
80, /* 080 05/00 G0 P Letter P => (self) */
81, /* 081 05/01 G0 Q Letter Q => (self) */
82, /* 082 05/02 G0 R Letter R => (self) */
83, /* 083 05/03 G0 S Letter S => (self) */
84, /* 084 05/04 G0 T Letter T => (self) */
85, /* 085 05/05 G0 U Letter U => (self) */
86, /* 086 05/06 G0 V Letter V => (self) */
87, /* 087 05/07 G0 W Letter W => (self) */
88, /* 088 05/08 G0 X Letter X => (self) */
89, /* 089 05/09 G0 Y Letter Y => (self) */
90, /* 090 05/10 G0 Z Letter Z => (self) */
91, /* 091 05/11 G0 [ Left square bracket => (self) */
92, /* 092 05/12 G0 \ Reverse slash => (self) */
93, /* 093 05/13 G0 ] Right square bracket => (self) */
94, /* 094 05/14 G0 ^ Circumflex accent => (self) */
95, /* 095 05/15 G0 _ Underline, low line => (self) */
96, /* 096 06/00 G0 ` Grave accent => (self) */
97, /* 097 06/01 G0 a Letter a => (self) */
98, /* 098 06/02 G0 b Letter b => (self) */
99, /* 099 06/03 G0 c Letter c => (self) */
100, /* 100 06/04 G0 d Letter d => (self) */
101, /* 101 06/05 G0 e Letter e => (self) */
102, /* 102 06/06 G0 f Letter f => (self) */
103, /* 103 06/07 G0 g Letter g => (self) */
104, /* 104 06/08 G0 h Letter h => (self) */
105, /* 105 06/09 G0 i Letter i => (self) */
106, /* 106 06/10 G0 j Letter j => (self) */
107, /* 107 06/11 G0 k Letter k => (self) */
108, /* 108 06/12 G0 l Letter l => (self) */
109, /* 109 06/13 G0 m Letter m => (self) */
110, /* 110 06/14 G0 n Letter n => (self) */
111, /* 111 06/15 G0 o Letter o => (self) */
112, /* 112 07/00 G0 p Letter p => (self) */
113, /* 113 07/01 G0 q Letter q => (self) */
114, /* 114 07/02 G0 r Letter r => (self) */
115, /* 115 07/03 G0 s Letter s => (self) */
116, /* 116 07/04 G0 t Letter t => (self) */
117, /* 117 07/05 G0 u Letter u => (self) */
118, /* 118 07/06 G0 v Letter v => (self) */
119, /* 119 07/07 G0 w Letter w => (self) */
120, /* 120 07/08 G0 x Letter x => (self) */
121, /* 121 07/09 G0 y Letter y => (self) */
122, /* 122 07/10 G0 z Letter z => (self) */
123, /* 123 07/11 G0 { Left curly bracket => (self) */
124, /* 124 07/12 G0 | Vertical bar => (self) */
125, /* 125 07/13 G0 } Right curly bracket => (self) */
126, /* 126 07/14 G0 ~ Tilde => (self) */
127, /* 127 07/15 DEL Delete, Rubout => (self) */
128, /* 128 08/00 C1 Ctrl-Meta-@ => (self) */
129, /* 129 08/01 C1 Ctrl-Meta-A => (self) */
130, /* 130 08/02 C1 Ctrl-Meta-B => (self) */
131, /* 131 08/03 C1 Ctrl-Meta-C => (self) */
132, /* 132 08/04 C1 IND Ctrl-Meta-D => (self) */
133, /* 133 08/05 C1 NEL Ctrl-Meta-E => (self) */
134, /* 134 08/06 C1 SSA Ctrl-Meta-F => (self) */
135, /* 135 08/07 C1 ESA Ctrl-Meta-G => (self) */
136, /* 136 08/08 C1 HTS Ctrl-Meta-H => (self) */
137, /* 137 08/09 C1 Ctrl-Meta-I => (self) */
138, /* 138 08/10 C1 Ctrl-Meta-J => (self) */
139, /* 139 08/11 C1 Ctrl-Meta-K => (self) */
140, /* 140 08/12 C1 Ctrl-Meta-L => (self) */
141, /* 141 08/13 C1 RI Ctrl-Meta-M => (self) */
142, /* 142 08/14 C1 SS2 Ctrl-Meta-N => (self) */
143, /* 143 08/15 C1 SS3 Ctrl-Meta-O => (self) */
144, /* 144 09/00 C1 DCS Ctrl-Meta-P => (self) */
145, /* 145 09/01 C1 Ctrl-Meta-Q => (self) */
146, /* 146 09/02 C1 Ctrl-Meta-R => (self) */
147, /* 147 09/03 C1 STS Ctrl-Meta-S => (self) */
148, /* 148 09/04 C1 Ctrl-Meta-T => (self) */
149, /* 149 09/05 C1 Ctrl-Meta-U => (self) */
150, /* 150 09/06 C1 SPA Ctrl-Meta-V => (self) */
151, /* 151 09/07 C1 EPA Ctrl-Meta-W => (self) */
152, /* 152 09/08 C1 Ctrl-Meta-X => (self) */
153, /* 153 09/09 C1 Ctrl-Meta-Y => (self) */
154, /* 154 09/10 C1 Ctrl-Meta-Z => (self) */
155, /* 155 09/11 C1 CSI Ctrl-Meta-[ => (self) */
156, /* 156 09/12 C1 ST Ctrl-Meta-\ => (self) */
157, /* 157 09/13 C1 OSC Ctrl-Meta-] => (self) */
158, /* 158 09/14 C1 PM Ctrl-Meta-^ => (self) */
159, /* 159 09/15 C1 APC Ctrl-Meta-_ => (self) */
32, /* 160 10/00 G1 No-break space => SP */
33, /* 161 10/01 G1 Inverted exclamation => ! */
UNK, /* 162 10/02 G1 Cent sign => UNK */
UNK, /* 163 10/03 G1 Pound sign => UNK */
UNK, /* 164 10/04 G1 Currency sign => UNK */
UNK, /* 165 10/05 G1 Yen sign => UNK */
124, /* 166 10/06 G1 Broken bar => | */
UNK, /* 167 10/07 G1 Paragraph sign => UNK */
34, /* 168 10/08 G1 Diaeresis => " */
67, /* 169 10/09 G1 Copyright sign => C */
UNK, /* 170 10/10 G1 Feminine ordinal => UNK */
34, /* 171 10/11 G1 Left angle quotation => " */
126, /* 172 10/12 G1 Not sign => ~ */
45, /* 173 10/13 G1 Soft hyphen => - */
82, /* 174 10/14 G1 Registered trade mark => R */
UNK, /* 175 10/15 G1 Macron => UNK */
UNK, /* 176 11/00 G1 Degree sign, ring above => UNK */
UNK, /* 177 11/01 G1 Plus-minus sign => UNK */
UNK, /* 178 11/02 G1 Superscript two => UNK */
UNK, /* 179 11/03 G1 Superscript three => UNK */
39, /* 180 11/04 G1 Acute accent => ' */
117, /* 181 11/05 G1 Micro sign => u */
UNK, /* 182 11/06 G1 Pilcrow sign => UNK */
UNK, /* 183 11/07 G1 Middle dot => UNK */
44, /* 184 11/08 G1 Cedilla => , */
UNK, /* 185 11/09 G1 Superscript one => UNK */
UNK, /* 186 11/10 G1 Masculine ordinal => UNK */
34, /* 187 11/11 G1 Right angle quotation => " */
UNK, /* 188 11/12 G1 One quarter => UNK */
UNK, /* 189 11/13 G1 One half => UNK */
UNK, /* 190 11/14 G1 Three quarters => UNK */
63, /* 191 11/15 G1 Inverted question mark => ? */
65, /* 192 12/00 G1 A grave => A */
65, /* 193 12/01 G1 A acute => A */
65, /* 194 12/02 G1 A circumflex => A */
65, /* 195 12/03 G1 A tilde => A */
65, /* 196 12/04 G1 A diaeresis => A */
65, /* 197 12/05 G1 A ring above => A */
65, /* 198 12/06 G1 A with E => A */
67, /* 199 12/07 G1 C Cedilla => C */
69, /* 200 12/08 G1 E grave => E */
69, /* 201 12/09 G1 E acute => E */
69, /* 202 12/10 G1 E circumflex => E */
69, /* 203 12/11 G1 E diaeresis => E */
73, /* 204 12/12 G1 I grave => I */
73, /* 205 12/13 G1 I acute => I */
73, /* 206 12/14 G1 I circumflex => I */
73, /* 207 12/15 G1 I diaeresis => I */
UNK, /* 208 13/00 G1 Icelandic Eth => UNK */
78, /* 209 13/01 G1 N tilde => N */
79, /* 210 13/02 G1 O grave => O */
79, /* 211 13/03 G1 O acute => O */
79, /* 212 13/04 G1 O circumflex => O */
79, /* 213 13/05 G1 O tilde => O */
79, /* 214 13/06 G1 O diaeresis => O */
120, /* 215 13/07 G1 Multiplication sign => x */
79, /* 216 13/08 G1 O oblique stroke => O */
85, /* 217 13/09 G1 U grave => U */
85, /* 218 13/10 G1 U acute => U */
85, /* 219 13/11 G1 U circumflex => U */
85, /* 220 13/12 G1 U diaeresis => U */
89, /* 221 13/13 G1 Y acute => Y */
UNK, /* 222 13/14 G1 Icelandic Thorn => UNK */
115, /* 223 13/15 G1 German sharp s => s */
97, /* 224 14/00 G1 a grave => a */
97, /* 225 14/01 G1 a acute => a */
97, /* 226 14/02 G1 a circumflex => a */
97, /* 227 14/03 G1 a tilde => a */
97, /* 228 14/04 G1 a diaeresis => a */
97, /* 229 14/05 G1 a ring above => a */
97, /* 230 14/06 G1 a with e => a */
99, /* 231 14/07 G1 c cedilla => c */
101, /* 232 14/08 G1 e grave => e */
101, /* 233 14/09 G1 e acute => e */
101, /* 234 14/10 G1 e circumflex => e */
101, /* 235 14/11 G1 e diaeresis => e */
105, /* 236 14/12 G1 i grave => i */
105, /* 237 14/13 G1 i acute => i */
105, /* 238 14/14 G1 i circumflex => i */
105, /* 239 14/15 G1 i diaeresis => i */
UNK, /* 240 15/00 G1 Icelandic eth => UNK */
110, /* 241 15/01 G1 n tilde => n */
111, /* 242 15/02 G1 o grave => o */
111, /* 243 15/03 G1 o acute => o */
111, /* 244 15/04 G1 o circumflex => o */
111, /* 245 15/05 G1 o tilde => o */
111, /* 246 15/06 G1 o diaeresis => o */
47, /* 247 15/07 G1 Division sign => / */
111, /* 248 15/08 G1 o oblique stroke => o */
117, /* 249 15/09 G1 u grave => u */
117, /* 250 15/10 G1 u acute => u */
117, /* 251 15/11 G1 u circumflex => u */
117, /* 252 15/12 G1 u diaeresis => u */
121, /* 253 15/13 G1 y acute => y */
UNK, /* 254 15/14 G1 Icelandic thorn => UNK */
121 /* 255 15/15 G1 y diaeresis => y */
};
/* Translation tables for ISO Latin Alphabet 1 to local file character sets */
/*
The remaining tables are not annotated like the one above, because
the size of the resulting source file would be more than 500K.
Each row in the following tables corresponds to a column of ISO 8859-1.
*/
CHAR
yl1todu[] = { /* Latin-1 to Dutch ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, UNK, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
UNK, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, 39, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, 35, 124, UNK, UNK, 93, 123, 67, UNK, 34, UNK, 45, 82, UNK,
91, UNK, UNK, UNK, 126, 117, UNK, UNK, 44, UNK, UNK, 34, 125, 92, 64, 63,
65, 65, 65, 65, 91, 65, 65, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 79, 120, 79, 85, 85, 85, 85, 89, UNK, 115,
97, 97, 97, 97, 97, 97, 97, 99, 101, 101, 101, 101, 105, 105, 105, 105,
UNK, 110, 111, 111, 111, 111, 111, 47, 111, 117, 117, 117, 117, 121, UNK, 91
};
CHAR
yl1tofi[] = { /* Latin-1 to Finnish ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, UNK, 95,
UNK, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, UNK,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, UNK, UNK, UNK, UNK, UNK, 34, 67, UNK, 34, UNK, 45, 82, UNK,
UNK, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 91, 93, 65, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 92, 120, 79, 85, 85, 85, 94, 89, UNK, 115,
97, 97, 97, 97, 123, 125, 97, 99, 101, 96, 101, 101, 105, 105, 105, 105,
UNK, 110, 111, 111, 111, 111, 124, 47, 111, 117, 117, 117, 126, 121, UNK, 121
};
CHAR
yl1tofr[] = { /* Latin-1 to French ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, UNK, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
UNK, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, 35, UNK, UNK, UNK, 93, 34, 67, UNK, 34, UNK, 45, 82, UNK,
91, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 65, 65, 65, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 79, 120, 79, 85, 85, 85, 85, 89, UNK, 115,
64, 97, 97, 97, 97, 97, 97, 92, 125, 123, 101, 101, 105, 105, 105, 105,
UNK, 110, 111, 111, 111, 111, 111, 47, 111, 124, 117, 117, 117, 121, UNK, 121
};
CHAR
yl1tofc[] = { /* Latin-1 to French-Canadian ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
UNK, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, UNK, 95,
UNK, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, UNK, UNK, UNK, UNK, UNK, 34, 67, UNK, 34, UNK, 45, 82, UNK,
UNK, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 65, 65, 65, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 79, 120, 79, 85, 85, 85, 85, 89, UNK, 115,
64, 97, 91, 97, 97, 97, 97, 92, 125, 123, 93, 101, 105, 105, 94, 105,
UNK, 110, 111, 111, 96, 111, 111, 47, 111, 124, 117, 126, 117, 121, UNK, 121
};
CHAR
yl1toge[] = { /* Latin-1 to German ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
UNK, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, UNK, UNK, UNK, 124, 64, 34, 67, UNK, 34, 126, 45, 82, UNK,
UNK, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 91, 65, 65, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 92, 120, 79, 85, 85, 85, 93, 89, UNK, 126,
97, 97, 97, 97, 123, 97, 97, 99, 101, 101, 101, 101, 105, 105, 105, 105,
UNK, 110, 111, 111, 111, 111, 124, 47, 111, 117, 117, 117, 125, 121, UNK, 121
};
CHAR
yl1tohu[] = { /* Latin-1 to Hungarian ISO-646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, UNK, 36, UNK, 124, UNK, 34, 67, UNK, 34, 126, 45, 82, UNK,
UNK, 64, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 65, 65, 65, 67, 69, 91, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 92, 120, 79, 85, 85, 85, 93, 89, UNK, 115,
97, 96, 97, 97, 97, 97, 97, 99, 101, 123, 101, 101, 105, 105, 105, 105,
UNK, 110, 111, 111, 111, 111, 124, 47, 111, 117, 117, 117, 125, 121, UNK, 121
};
CHAR
yl1toit[] = { /* Latin-1 to Italian ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, UNK, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
UNK, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, 94, 95,
UNK, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, 35, UNK, UNK, UNK, 64, 34, 67, UNK, 34, UNK, 45, 82, UNK,
91, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 65, 65, 65, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 79, 120, 79, 85, 85, 85, 85, 89, UNK, 115,
123, 97, 97, 97, 97, 97, 97, 92, 125, 93, 101, 101, 126, 105, 105, 105,
UNK, 110, 124, 111, 111, 111, 111, 47, 111, 96, 117, 117, 117, 121, UNK, 121
};
CHAR
yl1tono[] = { /* Latin-1 to Norwegian/Danish ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, UNK, UNK, UNK, UNK, UNK, 34, 67, UNK, 34, 126, 45, 82, UNK,
UNK, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 65, 93, 91, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 79, 120, 92, 85, 85, 85, 85, 89, UNK, 115,
97, 97, 97, 97, 97, 125, 123, 99, 101, 101, 101, 101, 105, 105, 105, 105,
UNK, 110, 111, 111, 111, 111, 111, 47, 124, 117, 117, 117, 117, 121, UNK, 121
};
CHAR
yl1topo[] = { /* Latin-1 to Portuguese ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, UNK, UNK, UNK, UNK, UNK, 34, 67, UNK, 34, 126, 45, 82, UNK,
UNK, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 91, 65, 65, 65, 92, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 93, 79, 120, 79, 85, 85, 85, 85, 89, UNK, 115,
97, 97, 97, 123, 97, 97, 97, 124, 101, 101, 101, 101, 105, 105, 105, 105,
UNK, 110, 111, 111, 111, 125, 111, 47, 111, 117, 117, 117, 117, 121, UNK, 121
};
CHAR
yl1tosp[] = { /* Latin-1 to Spanish ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, UNK, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
UNK, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 96, UNK, UNK, 126, 127,
126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 91, UNK, 35, UNK, UNK, UNK, 64, 34, 67, UNK, 34, 126, 45, 82, UNK,
123, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 93,
65, 65, 65, 65, 65, 65, 65, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 92, 79, 79, 79, 79, 79, 120, 79, 85, 85, 85, 85, 89, UNK, 115,
124, 97, 97, 97, 97, 97, 97, 125, 101, 101, 101, 101, 105, 105, 105, 105,
UNK, 124, 111, 111, 111, 111, 111, 47, 111, 117, 117, 117, 117, 121, UNK, 121
};
CHAR
yl1tosw[] = { /* Latin-1 to Swedish ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
UNK, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, UNK, 95,
UNK, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, UNK, UNK, UNK, UNK, UNK, 34, 67, UNK, 34, UNK, 45, 82, UNK,
UNK, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 91, 93, 65, 67, 69, 64, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 92, 120, 79, 85, 85, 85, 94, 89, UNK, 115,
97, 97, 97, 97, 123, 125, 97, 99, 101, 96, 101, 101, 105, 105, 105, 105,
UNK, 110, 111, 111, 111, 111, 124, 47, 111, 117, 117, 117, 126, 121, UNK, 121
};
CHAR
yl1toch[] = { /* Latin-1 to Swiss ISO 646 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, UNK, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
UNK, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, UNK, UNK, UNK, UNK, UNK,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 33, UNK, UNK, UNK, UNK, UNK, UNK, 34, 67, UNK, 34, UNK, 45, 82, UNK,
UNK, UNK, UNK, UNK, 39, 117, UNK, UNK, 44, UNK, UNK, 34, UNK, UNK, UNK, 63,
65, 65, 65, 65, 65, 65, 65, 67, 69, 69, 69, 69, 73, 73, 73, 73,
UNK, 78, 79, 79, 79, 79, 79, 120, 79, 85, 85, 85, 85, 89, UNK, 115,
64, 97, 97, 97, 123, 97, 97, 92, 95, 91, 93, 101, 105, 105, 94, 105,
UNK, 110, 111, 111, 96, 111, 124, 47, 111, 35, 117, 126, 125, 121, UNK, 121
};
CHAR
yl1todm[] = { /* Latin-1 to DEC Multinational Character Set */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
32, 161, 162, 163, 168, 165, 124, 167, 34, 169, 170, 171, 126, UNK, 82, UNK,
176, 177, 178, 179, 39, 181, 182, 183, 44, 185, 186, 187, 188, 189, UNK, 191,
192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
UNK, 209, 210, 211, 212, 213, 214, 120, 216, 217, 218, 219, 220, 221, UNK, 223,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
UNK, 241, 242, 243, 244, 245, 246, 47, 248, 249, 250, 251, 252, UNK, UNK, 253
};
/* Local file character sets to ISO Latin Alphabet 1 */
CHAR
yastol1[] = { /* ASCII to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127
};
CHAR
ydutol1[] = { /* Dutch ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 163, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
190, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 255, 189, 124, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 168, 164, 188, 39, 127
};
CHAR
yfitol1[] = { /* Finnish ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 196, 246, 197, 220, 95,
233, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 229, 252, 127
};
CHAR
yfrtol1[] = { /* French ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 163, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
224, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 176, 231, 167, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 233, 249, 232, 168, 127
};
CHAR
yfctol1[] = { /* French-Canadian ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
224, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 226, 231, 234, 238, 95,
244, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 233, 249, 232, 251, 127
};
CHAR
ygetol1[] = { /* German ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
167, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 196, 214, 220, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 252, 223, 127
};
CHAR
yittol1[] = { /* Italian ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 163, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
167, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 176, 231, 233, 94, 95,
249, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 224, 242, 232, 236, 127
};
CHAR
ynotol1[] = { /* Norwegian/Danish ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 198, 216, 197, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 230, 248, 229, 126, 127
};
CHAR
ypotol1[] = { /* Portuguese ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 195, 199, 213, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 227, 231, 245, 126, 127
};
CHAR
ysptol1[] = { /* Spanish ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 163, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
167, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 161, 209, 191, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 176, 241, 231, 126, 127
};
CHAR
yswtol1[] = { /* Swedish ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
201, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 196, 214, 197, 220, 95,
233, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 229, 252, 127
};
CHAR
ychtol1[] = { /* Swiss ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 249, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
224, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 233, 231, 234, 238, 232,
244, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 252, 251, 127
};
CHAR
yhutol1[] = { /* Hungarian ISO 646 to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 164, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
193, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 201, 214, 220, 94, 95,
225, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 233, 246, 252, 34, 127
};
CHAR
ydmtol1[] = { /* DEC Multinational Character Set to Latin-1 */
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
};
/* Translation functions ... */
CHAR /* The identity translation function */
ident(c) CHAR c; {
return(c);
}
CHAR
xl1toas(c) CHAR c; { /* Latin-1 to US ASCII... */
switch(langs[language].id) {
case L_GERMAN:
switch (c) { /* German, special rules. */
case 196: /* umlaut-A -> Ae */
zmstuff('e');
return('A');
case 214: /* umlaut-O -> Oe */
zmstuff('e');
return('O');
case 220: /* umlaut-U -> Ue */
zmstuff('e');
return('U');
case 228: /* umlaut-a -> ae */
zmstuff('e');
return('a');
case 246: /* umlaut-o -> oe */
zmstuff('e');
return('o');
case 252: /* umlaut-u -> ue */
zmstuff('e');
return('u');
case 223: /* ess-zet -> ss */
zmstuff('s');
return('s');
default: return(yl1toas[c]); /* all others by the book */
}
case L_DANISH:
case L_FINNISH:
case L_NORWEGIAN:
case L_SWEDISH:
switch (c) { /* Scandanavian languages. */
case 196: /* umlaut-A -> Ae */
zmstuff('e');
return('A');
case 214: /* umlaut-O -> Oe */
case 216: /* O-slash -> Oe */
zmstuff('e');
return('O');
case 220: /* umlaut-U -> Y */
return('Y');
case 228: /* umlaut-a -> ae */
zmstuff('e');
return('a');
case 246: /* umlaut-o -> oe */
case 248: /* o-slash -> oe */
zmstuff('e');
return('o');
case 252: /* umlaut-u -> y */
return('y');
case 197: /* A-ring -> Aa */
zmstuff('a');
return('A');
case 229: /* a-ring -> aa */
zmstuff('a');
return('a');
default: return(yl1toas[c]); /* All others by the book */
}
default:
return(yl1toas[c]); /* Not German, by the table. */
}
}
CHAR /* Latin-1 to German ASCII */
xl1toge(c) CHAR c; {
return(yl1toge[c]);
}
CHAR /* German ASCII to Latin-1 */
xgetol1(c) CHAR c; {
return(ygetol1[c]);
}
CHAR
xgetoas(c) CHAR c; { /* German ISO 646 to ASCII */
switch (c) {
case 91: /* umlaut-A -> Ae */
zmstuff('e');
return('A');
case 92: /* umlaut-O -> Oe */
zmstuff('e');
return('O');
case 93: /* umlaut-U -> Ue */
zmstuff('e');
return('U');
case 123: /* umlaut-a -> ae */
zmstuff('e');
return('a');
case 124: /* umlaut-o -> oe */
zmstuff('e');
return('o');
case 125: /* umlaut-u -> ue */
zmstuff('e');
return('u');
case 126: /* ess-zet -> ss */
zmstuff('s');
return('s');
default: return(c); /* all others stay the same */
}
}
CHAR
xdutoas(c) CHAR c; { /* Dutch ISO 646 to US ASCII */
switch (c) {
case 64: return(UNK); /* 3/4 */
case 91: return('y'); /* y-diaeresis */
case 92: return(UNK); /* 1/2 */
case 93: return(124); /* vertical bar */
case 123: return(34); /* diaeresis */
case 124: return(UNK); /* Florin */
case 125: return(UNK); /* 1/4 */
case 126: return(39); /* Apostrophe */
default: return(c);
}
}
CHAR
xfitoas(c) CHAR c; { /* Finnish ISO 646 to US ASCII */
switch (c) {
case 91: /* A-diaeresis */
zmstuff('e');
return('A');
case 92: /* O-diaeresis */
zmstuff('e');
return('O');
case 93: /* A-ring */
zmstuff('a');
return('A');
case 94: /* U-diaeresis */
return('Y');
case 96: /* e-acute */
return('e');
case 123: /* a-diaeresis */
zmstuff('e');
return('a');
case 124: /* o-diaeresis */
zmstuff('e');
return('o');
case 125: /* a-ring */
zmstuff('a');
return('a');
case 126: /* u-diaeresis */
return('y');
default:
return(c);
}
}
CHAR
xfrtoas(c) CHAR c; { /* French ISO 646 to US ASCII */
switch (c) {
case 64: return(97); /* a grave */
case 91: return(UNK); /* degree sign */
case 92: return(99); /* c cedilla */
case 93: return(UNK); /* paragraph sign */
case 123: return(101); /* e acute */
case 124: return(117); /* u grave */
case 125: return(101); /* e grave */
case 126: return(34); /* diaeresis */
default: return(c);
}
}
CHAR
xfctoas(c) CHAR c; { /* French Canadian ISO 646 to ASCII */
switch (c) {
case 64: return('a'); /* a grave */
case 91: return('a'); /* a circumflex */
case 92: return('c'); /* c cedilla */
case 93: return('e'); /* e circumflex */
case 94: return('i'); /* i circumflex */
case 96: return('o'); /* o circumflex */
case 123: return('e'); /* e acute */
case 124: return('u'); /* u grave */
case 125: return('e'); /* e grave */
case 126: return('u'); /* u circumflex */
default: return(c);
}
}
CHAR
xittoas(c) CHAR c; { /* Italian ISO 646 to ASCII */
switch (c) {
case 91: return(UNK); /* degree */
case 92: return('c'); /* c cedilla */
case 93: return('e'); /* e acute */
case 96: return('u'); /* u grave */
case 123: return('a'); /* a grave */
case 124: return('o'); /* o grave */
case 125: return('e'); /* e grave */
case 126: return('i'); /* i grave */
default: return(c);
}
}
CHAR
xnotoas(c) CHAR c; { /* Norge/Danish ISO 646 to ASCII */
switch (c) {
case 91:
zmstuff('E'); /* AE digraph */
return('A');
case 92: return('O'); /* O slash */
case 93: /* A ring */
zmstuff('a');
return('A');
case 123: /* ae digraph */
zmstuff('e');
return('a');
case 124: return('o'); /* o slash */
case 125: /* a ring */
zmstuff('a');
return('a');
default: return(c);
}
}
CHAR
xpotoas(c) CHAR c; { /* Portuguese ISO 646 to ASCII */
switch (c) {
case 91: return('A'); /* A tilde */
case 92: return('C'); /* C cedilla */
case 93: return('O'); /* O tilde */
case 123: return('a'); /* a tilde */
case 124: return('c'); /* c cedilla */
case 125: return('o'); /* o tilde */
default: return(c);
}
}
CHAR
xsptoas(c) CHAR c; { /* Spanish ISO 646 to ASCII */
switch (c) {
case 91: return(33); /* Inverted exclamation */
case 92: return('N'); /* N tilde */
case 93: return(63); /* Inverted question mark */
case 123: return(UNK); /* degree */
case 124: return('n'); /* n tilde */
case 125: return('c'); /* c cedilla */
default: return(c);
}
}
CHAR
xswtoas(c) CHAR c; { /* Swedish ISO 646 to ASCII */
switch (c) {
case 64: return('E'); /* E acute */
case 91: /* A diaeresis */
zmstuff('e');
return('A');
case 92: /* O diaeresis */
zmstuff('e');
return('O');
case 93: /* A ring */
zmstuff('a');
return('A');
case 94: /* U diaeresis */
return('Y');
case 96: return('e'); /* e acute */
case 123: /* a diaeresis */
zmstuff('e');
return('a');
case 124: /* o diaeresis */
zmstuff('e');
return('o');
case 125: /* a ring */
zmstuff('a');
return('a');
case 126: return('y'); /* u diaeresis */
default: return(c);
}
}
CHAR
xchtoas(c) CHAR c; { /* Swiss ISO 646 to ASCII */
switch (c) {
case 35: return('u'); /* u grave */
case 64: return('a'); /* a grave */
case 91: return('e'); /* e acute */
case 92: return('c'); /* c cedilla */
case 93: return('e'); /* e circumflex */
case 94: return('i'); /* i circumflex */
case 95: return('e'); /* e grave */
case 96: return('o'); /* o circumflex */
case 123: /* a diaeresis */
zmstuff('e');
return('a');
case 124: /* o diaeresis */
zmstuff('e');
return('o');
case 125: /* u diaeresis */
zmstuff('e');
return('u');
case 126: return('u'); /* u circumflex */
default: return(c);
}
}
CHAR
xhutoas(c) CHAR c; { /* Hungarian ISO 646 to ASCII */
switch (c) {
case 64: return('A'); /* A acute */
case 91: return('E'); /* E acute */
case 92: return('O'); /* O diaeresis */
case 93: return('U'); /* U diaeresis */
case 96: return('a'); /* a acute */
case 123: return('e'); /* e acute */
case 124: return('o'); /* o acute */
case 125: return('u'); /* u acute */
case 126: return(34); /* double acute accent */
default: return(c);
}
}
CHAR
xdmtoas(c) CHAR c; { /* DEC MCS to ASCII */
return(yl1toas[c]); /* for now, treat like Latin-1 */
}
CHAR
xuktol1(c) CHAR c; { /* UK ASCII to Latin-1 */
if (c == 35)
return(163);
else return(c);
}
CHAR
xl1touk(c) CHAR c; { /* Latin-1 to UK ASCII */
if (c == 163)
return(35);
else return(yl1toas[c]);
}
CHAR /* Latin-1 to French ISO 646 */
xl1tofr(c) CHAR c; {
return(yl1tofr[c]);
}
CHAR /* French ASCII to Latin-1 */
xfrtol1(c) CHAR c; {
return(yfrtol1[c]);
}
CHAR /* Latin-1 to Dutch ASCII */
xl1todu(c) CHAR c; {
return(yl1todu[c]);
}
CHAR
xdutol1(c) CHAR c; { /* Dutch ISO 646 to Latin-1 */
return(ydutol1[c]);
}
CHAR
xfitol1(c) CHAR c; { /* Finnish ISO 646 to Latin-1 */
return(yfitol1[c]);
}
CHAR
xl1tofi(c) CHAR c; { /* Latin-1 to Finnish ISO 646 */
return(yl1tofi[c]);
}
CHAR
xfctol1(c) CHAR c; { /* French Canadian ISO646 to Latin-1 */
return(yfctol1[c]);
}
CHAR
xl1tofc(c) CHAR c; { /* Latin-1 to French Canadian ISO646 */
return(yl1tofc[c]);
}
CHAR
xittol1(c) CHAR c; { /* Italian ISO 646 to Latin-1 */
return(yittol1[c]);
}
CHAR
xl1toit(c) CHAR c; { /* Latin-1 to Italian ISO 646 */
return(yl1toit[c]);
}
CHAR
xnotol1(c) CHAR c; { /* Norwegian and Danish ISO 646 to Latin-1 */
return(ynotol1[c]);
}
CHAR
xl1tono(c) CHAR c; { /* Latin-1 to Norwegian and Danish ISO 646 */
return(yl1tono[c]);
}
CHAR
xpotol1(c) CHAR c; { /* Portuguese ISO 646 to Latin-1 */
return(ypotol1[c]);
}
CHAR
xl1topo(c) CHAR c; { /* Latin-1 to Portuguese ISO 646 */
return(yl1topo[c]);
}
CHAR
xsptol1(c) CHAR c; { /* Spanish ISO 646 to Latin-1 */
return(ysptol1[c]);
}
CHAR
xl1tosp(c) CHAR c; { /* Latin-1 to Spanish ISO 646 */
return(yl1tosp[c]);
}
CHAR
xswtol1(c) CHAR c; { /* Swedish ISO 646 to Latin-1 */
return(yswtol1[c]);
}
CHAR
xl1tosw(c) CHAR c; { /* Latin-1 to Swedish ISO 646 */
return(yl1tosw[c]);
}
CHAR
xchtol1(c) CHAR c; { /* Swiss ISO 646 to Latin-1 */
return(ychtol1[c]);
}
CHAR
xl1toch(c) CHAR c; { /* Latin-1 to Swiss ISO 646 */
return(yl1toch[c]);
}
CHAR
xhutol1(c) CHAR c; { /* Hungarian ISO 646 to Latin-1 */
return(yhutol1[c]);
}
CHAR
xl1tohu(c) CHAR c; { /* Latin-1 to Hungarian ISO 646 */
return(yl1tohu[c]);
}
CHAR
xl1todm(c) CHAR c; { /* Latin-1 to DEC Multinational Character Set (MCS) */
return(yl1todm[c]);
}
CHAR
xdmtol1(c) CHAR c; { /* DEC Multinational Character Set (MCS) to Latin-1 */
return(ydmtol1[c]);
}
/*
Table of translation functions for receiving files.
Array of pointers to functions for translating from the transfer
syntax to the local file character set. The first index is the
transfer syntax character set number, the second index is the file
character set number.
*/
/*
The following list of functions applies to Unix and VAX/VMS. This
list can't be moved to ckuxla.h without including a forward declaration
for each function. It's not clear to me how best to clean this up.
Maybe whoever adapts this file to the Mac or OS/2 will have an idea.
*/
/*
Notice the hard numbers used as indices! C does not seem to allow
symbols here (MAXTCSETS, MAXFCSETS), nor does the program work right
if the brackets are left empty. Therefore, when adapting this file to
another computer, either figure out how to get around this, or else
fill in your own numbers. Sigh.
*/
CHAR (*xlr[2][16])() = {
ident, /* 0,0 ascii to us ascii */
ident, /* 0,1 ascii to uk ascii */
ident, /* 0,2 ascii to dutch nrc */
ident, /* 0,3 ascii to finnish nrc */
ident, /* 0,4 ascii to french nrc */
ident, /* 0,5 ascii to fr-canadian nrc */
ident, /* 0,6 ascii to german nrc */
ident, /* 0,7 ascii to hungarian nrc */
ident, /* 0,8 ascii to italian nrc */
ident, /* 0,9 ascii to norge/danish nrc */
ident, /* 0,10 ascii to portuguese nrc */
ident, /* 0,11 ascii to spanish nrc */
ident, /* 0,12 ascii to swedish nrc */
ident, /* 0,13 ascii to swiss nrc */
ident, /* 0,14 ascii to latin-1 */
ident, /* 0,15 ascii to DEC MCS */
xl1toas, /* 1,0 latin-1 to us ascii */
xl1touk, /* 1,1 latin-1 to uk ascii */
xl1todu, /* 1,2 latin-1 to dutch nrc */
xl1tofi, /* 1,3 latin-1 to finnish ascii */
xl1tofr, /* 1,4 latin-1 to french nrc */
xl1tofc, /* 1,5 latin-1 to fr-canadian nrc */
xl1toge, /* 1,6 latin-1 to german nrc */
xl1toit, /* 1,7 latin-1 to italian nrc */
xl1tohu, /* 1,8 latin-1 to hungarian nrc */
xl1tono, /* 1,9 latin-1 to norge/danish nrc */
xl1topo, /* 1,10 latin-1 to portuguese nrc */
xl1tosp, /* 1,11 latin-1 to spanish nrc */
xl1tosw, /* 1,12 latin-1 to swedish nrc */
xl1toch, /* 1,13 latin-1 to swiss nrc */
ident, /* 1,14 latin-1 to latin-1 */
xl1todm /* 1,15 latin-1 to DEC MCS */
};
/*
Translation functions for sending files.
Array of pointers to functions for translating from the local file
character set to the transfer syntax character set. Indexed in the same
way as the xlr array above.
*/
CHAR (*xls[2][16])() = {
ident, /* us ascii to ascii */
ident, /* uk ascii to ascii */
xdutoas, /* dutch nrc to ascii */
xfitoas, /* finnish nrc to ascii */
xfrtoas, /* french nrc to ascii */
xfctoas, /* french canadian nrc to ascii */
xgetoas, /* german nrc to ascii */
xhutoas, /* hungarian nrc to ascii */
xittoas, /* italian nrc to ascii */
xnotoas, /* norwegian/danish nrc to ascii */
xpotoas, /* portuguese nrc to ascii */
xsptoas, /* spanish nrc to ascii */
xswtoas, /* swedish nrc to ascii */
xchtoas, /* swiss nrc to ascii */
xl1toas, /* latin-1 to ascii */
xdmtoas, /* dec mcs to ascii */
ident, /* us ascii to latin-1 */
xuktol1, /* uk ascii to latin-1 */
xdutol1, /* dutch nrc to latin-1 */
xfitol1, /* finnish nrc to latin-1 */
xfrtol1, /* french nrc to latin-1 */
xfctol1, /* french canadian nrc to latin-1 */
xgetol1, /* german nrc to latin-1 */
xhutol1, /* hungarian nrc to latin-1 */
xittol1, /* italian nrc to latin-1 */
xnotol1, /* norwegian/danish nrc to latin-1 */
xpotol1, /* portuguese nrc to latin-1 */
xsptol1, /* spanish nrc to latin-1 */
xswtol1, /* swedish nrc to latin-1 */
xchtol1, /* swiss nrc to latin-1 */
ident, /* latin-1 to latin-1 */
xdmtol1 /* dec mcs to latin-1 */
};