1
2(********************************************************************)
3(*                                                                  *)
4(*  chkchr.sd7    Checks character properties                       *)
5(*  Copyright (C) 2015, 2019 Thomas Mertes                          *)
6(*                2015 Arkadiy Kuleshov                             *)
7(*                                                                  *)
8(*  This program is free software; you can redistribute it and/or   *)
9(*  modify it under the terms of the GNU General Public License as  *)
10(*  published by the Free Software Foundation; either version 2 of  *)
11(*  the License, or (at your option) any later version.             *)
12(*                                                                  *)
13(*  This program is distributed in the hope that it will be useful, *)
14(*  but WITHOUT ANY WARRANTY; without even the implied warranty of  *)
15(*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   *)
16(*  GNU General Public License for more details.                    *)
17(*                                                                  *)
18(*  You should have received a copy of the GNU General Public       *)
19(*  License along with this program; if not, write to the           *)
20(*  Free Software Foundation, Inc., 51 Franklin Street,             *)
21(*  Fifth Floor, Boston, MA  02110-1301, USA.                       *)
22(*                                                                  *)
23(********************************************************************)
24
25
26$ include "seed7_05.s7i";
27  include "stdio.s7i";
28
29
30const func char: charExpr (in char: ch) is
31  return chr(ord(ch) + length(str(rand(1, 9))[2 ..]));
32
33
34const func boolean: boolExpr (in boolean: okay) is
35  return boolean(ord(okay) + length(str(rand(1, 9))[2 ..]));
36
37
38const proc: check_isLetter is func
39  local
40    var boolean: success is TRUE;
41  begin
42    if isLetter('\16#00020;') <> FALSE then writeln("isLetter( #   20 ) incorrect"); success := FALSE; end if; # SPACE
43    if isLetter('\16#00038;') <> FALSE then writeln("isLetter( #   38 ) incorrect"); success := FALSE; end if; # DIGIT EIGHT
44    if isLetter('\16#00050;') <> TRUE  then writeln("isLetter( #   50 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER P
45    if isLetter('\16#0005f;') <> FALSE then writeln("isLetter( #   5f ) incorrect"); success := FALSE; end if; # LOW LINE
46    if isLetter('\16#00068;') <> TRUE  then writeln("isLetter( #   68 ) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER H
47    if isLetter('\16#00080;') <> FALSE then writeln("isLetter( #   80 ) incorrect"); success := FALSE; end if; # <control-0080>
48    if isLetter('\16#000a0;') <> FALSE then writeln("isLetter( #   a0 ) incorrect"); success := FALSE; end if; # NO-BREAK SPACE
49    if isLetter('\16#000c0;') <> TRUE  then writeln("isLetter( #   c0 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER A WITH GRAVE
50    if isLetter('\16#000e0;') <> TRUE  then writeln("isLetter( #   e0 ) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER A WITH GRAVE
51    if isLetter('\16#00100;') <> TRUE  then writeln("isLetter( #  100 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER A WITH MACRON
52    if isLetter('\16#00120;') <> TRUE  then writeln("isLetter( #  120 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER G WITH DOT ABOVE
53    if isLetter('\16#00140;') <> TRUE  then writeln("isLetter( #  140 ) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER L WITH MIDDLE DOT
54    if isLetter('\16#00160;') <> TRUE  then writeln("isLetter( #  160 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER S WITH CARON
55    if isLetter('\16#00180;') <> TRUE  then writeln("isLetter( #  180 ) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER B WITH STROKE
56    if isLetter('\16#001b4;') <> TRUE  then writeln("isLetter( #  1b4 ) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER Y WITH HOOK
57    if isLetter('\16#001e8;') <> TRUE  then writeln("isLetter( #  1e8 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER K WITH CARON
58    if isLetter('\16#0021c;') <> TRUE  then writeln("isLetter( #  21c ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER YOGH
59    if isLetter('\16#00250;') <> TRUE  then writeln("isLetter( #  250 ) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER TURNED A
60    if isLetter('\16#00268;') <> TRUE  then writeln("isLetter( #  268 ) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER I WITH STROKE
61    if isLetter('\16#00280;') <> TRUE  then writeln("isLetter( #  280 ) incorrect"); success := FALSE; end if; # LATIN LETTER SMALL CAPITAL R
62    if isLetter('\16#00298;') <> TRUE  then writeln("isLetter( #  298 ) incorrect"); success := FALSE; end if; # LATIN LETTER BILABIAL CLICK
63    if isLetter('\16#002b0;') <> TRUE  then writeln("isLetter( #  2b0 ) incorrect"); success := FALSE; end if; # MODIFIER LETTER SMALL H
64    if isLetter('\16#002c4;') <> FALSE then writeln("isLetter( #  2c4 ) incorrect"); success := FALSE; end if; # MODIFIER LETTER UP ARROWHEAD
65    if isLetter('\16#002d8;') <> FALSE then writeln("isLetter( #  2d8 ) incorrect"); success := FALSE; end if; # BREVE
66    if isLetter('\16#002ec;') <> FALSE then writeln("isLetter( #  2ec ) incorrect"); success := FALSE; end if; # MODIFIER LETTER VOICING
67    if isLetter('\16#00300;') <> FALSE then writeln("isLetter( #  300 ) incorrect"); success := FALSE; end if; # COMBINING GRAVE ACCENT
68    if isLetter('\16#0031c;') <> FALSE then writeln("isLetter( #  31c ) incorrect"); success := FALSE; end if; # COMBINING LEFT HALF RING BELOW
69    if isLetter('\16#00338;') <> FALSE then writeln("isLetter( #  338 ) incorrect"); success := FALSE; end if; # COMBINING LONG SOLIDUS OVERLAY
70    if isLetter('\16#00354;') <> FALSE then writeln("isLetter( #  354 ) incorrect"); success := FALSE; end if; # COMBINING LEFT ARROWHEAD BELOW
71    if isLetter('\16#00370;') <> FALSE then writeln("isLetter( #  370 ) incorrect"); success := FALSE; end if; # GREEK CAPITAL LETTER HETA
72    if isLetter('\16#00394;') <> TRUE  then writeln("isLetter( #  394 ) incorrect"); success := FALSE; end if; # GREEK CAPITAL LETTER DELTA
73    if isLetter('\16#003b8;') <> TRUE  then writeln("isLetter( #  3b8 ) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER THETA
74    if isLetter('\16#003dc;') <> TRUE  then writeln("isLetter( #  3dc ) incorrect"); success := FALSE; end if; # GREEK LETTER DIGAMMA
75    if isLetter('\16#00400;') <> TRUE  then writeln("isLetter( #  400 ) incorrect"); success := FALSE; end if; # CYRILLIC CAPITAL LETTER IE WITH GRAVE
76    if isLetter('\16#00440;') <> TRUE  then writeln("isLetter( #  440 ) incorrect"); success := FALSE; end if; # CYRILLIC SMALL LETTER ER
77    if isLetter('\16#00480;') <> TRUE  then writeln("isLetter( #  480 ) incorrect"); success := FALSE; end if; # CYRILLIC CAPITAL LETTER KOPPA
78    if isLetter('\16#004c0;') <> TRUE  then writeln("isLetter( #  4c0 ) incorrect"); success := FALSE; end if; # CYRILLIC LETTER PALOCHKA
79    if isLetter('\16#00500;') <> TRUE  then writeln("isLetter( #  500 ) incorrect"); success := FALSE; end if; # CYRILLIC CAPITAL LETTER KOMI DE
80    if isLetter('\16#0050c;') <> TRUE  then writeln("isLetter( #  50c ) incorrect"); success := FALSE; end if; # CYRILLIC CAPITAL LETTER KOMI SJE
81    if isLetter('\16#00548;') <> TRUE  then writeln("isLetter( #  548 ) incorrect"); success := FALSE; end if; # ARMENIAN CAPITAL LETTER VO
82    if isLetter('\16#00578;') <> TRUE  then writeln("isLetter( #  578 ) incorrect"); success := FALSE; end if; # ARMENIAN SMALL LETTER VO
83    if isLetter('\16#005ac;') <> FALSE then writeln("isLetter( #  5ac ) incorrect"); success := FALSE; end if; # HEBREW ACCENT ILUY
84    if isLetter('\16#005e4;') <> TRUE  then writeln("isLetter( #  5e4 ) incorrect"); success := FALSE; end if; # HEBREW LETTER PE
85    if isLetter('\16#00600;') <> FALSE then writeln("isLetter( #  600 ) incorrect"); success := FALSE; end if; # ARABIC NUMBER SIGN
86    if isLetter('\16#00640;') <> TRUE  then writeln("isLetter( #  640 ) incorrect"); success := FALSE; end if; # ARABIC TATWEEL
87    if isLetter('\16#00680;') <> TRUE  then writeln("isLetter( #  680 ) incorrect"); success := FALSE; end if; # ARABIC LETTER BEHEH
88    if isLetter('\16#006c0;') <> TRUE  then writeln("isLetter( #  6c0 ) incorrect"); success := FALSE; end if; # ARABIC LETTER HEH WITH YEH ABOVE
89    if isLetter('\16#00700;') <> FALSE then writeln("isLetter( #  700 ) incorrect"); success := FALSE; end if; # SYRIAC END OF PARAGRAPH
90    if isLetter('\16#00714;') <> TRUE  then writeln("isLetter( #  714 ) incorrect"); success := FALSE; end if; # SYRIAC LETTER GAMAL GARSHUNI
91    if isLetter('\16#00728;') <> TRUE  then writeln("isLetter( #  728 ) incorrect"); success := FALSE; end if; # SYRIAC LETTER SADHE
92    if isLetter('\16#0073c;') <> TRUE  then writeln("isLetter( #  73c ) incorrect"); success := FALSE; end if; # SYRIAC HBASA-ESASA DOTTED
93    if isLetter('\16#00780;') <> TRUE  then writeln("isLetter( #  780 ) incorrect"); success := FALSE; end if; # THAANA LETTER HAA
94    if isLetter('\16#00790;') <> TRUE  then writeln("isLetter( #  790 ) incorrect"); success := FALSE; end if; # THAANA LETTER SEENU
95    if isLetter('\16#007a0;') <> TRUE  then writeln("isLetter( #  7a0 ) incorrect"); success := FALSE; end if; # THAANA LETTER TO
96    if isLetter('\16#007b0;') <> TRUE  then writeln("isLetter( #  7b0 ) incorrect"); success := FALSE; end if; # THAANA SUKUN
97    if isLetter('\16#007c0;') <> FALSE then writeln("isLetter( #  7c0 ) incorrect"); success := FALSE; end if; # NKO DIGIT ZERO
98    if isLetter('\16#007f0;') <> FALSE then writeln("isLetter( #  7f0 ) incorrect"); success := FALSE; end if; # NKO COMBINING LONG LOW TONE
99    if isLetter('\16#00920;') <> TRUE  then writeln("isLetter( #  920 ) incorrect"); success := FALSE; end if; # DEVANAGARI LETTER TTHA
100    if isLetter('\16#00940;') <> TRUE  then writeln("isLetter( #  940 ) incorrect"); success := FALSE; end if; # DEVANAGARI VOWEL SIGN II
101    if isLetter('\16#00960;') <> TRUE  then writeln("isLetter( #  960 ) incorrect"); success := FALSE; end if; # DEVANAGARI LETTER VOCALIC RR
102    if isLetter('\16#009a0;') <> TRUE  then writeln("isLetter( #  9a0 ) incorrect"); success := FALSE; end if; # BENGALI LETTER TTHA
103    if isLetter('\16#009c0;') <> TRUE  then writeln("isLetter( #  9c0 ) incorrect"); success := FALSE; end if; # BENGALI VOWEL SIGN II
104    if isLetter('\16#009e0;') <> TRUE  then writeln("isLetter( #  9e0 ) incorrect"); success := FALSE; end if; # BENGALI LETTER VOCALIC RR
105    if isLetter('\16#00a20;') <> TRUE  then writeln("isLetter( #  a20 ) incorrect"); success := FALSE; end if; # GURMUKHI LETTER TTHA
106    if isLetter('\16#00a40;') <> TRUE  then writeln("isLetter( #  a40 ) incorrect"); success := FALSE; end if; # GURMUKHI VOWEL SIGN II
107    if isLetter('\16#00aa0;') <> TRUE  then writeln("isLetter( #  aa0 ) incorrect"); success := FALSE; end if; # GUJARATI LETTER TTHA
108    if isLetter('\16#00ac0;') <> TRUE  then writeln("isLetter( #  ac0 ) incorrect"); success := FALSE; end if; # GUJARATI VOWEL SIGN II
109    if isLetter('\16#00ae0;') <> TRUE  then writeln("isLetter( #  ae0 ) incorrect"); success := FALSE; end if; # GUJARATI LETTER VOCALIC RR
110    if isLetter('\16#00b20;') <> TRUE  then writeln("isLetter( #  b20 ) incorrect"); success := FALSE; end if; # ORIYA LETTER TTHA
111    if isLetter('\16#00b40;') <> TRUE  then writeln("isLetter( #  b40 ) incorrect"); success := FALSE; end if; # ORIYA VOWEL SIGN II
112    if isLetter('\16#00b60;') <> TRUE  then writeln("isLetter( #  b60 ) incorrect"); success := FALSE; end if; # ORIYA LETTER VOCALIC RR
113    if isLetter('\16#00bc0;') <> TRUE  then writeln("isLetter( #  bc0 ) incorrect"); success := FALSE; end if; # TAMIL VOWEL SIGN II
114    if isLetter('\16#00c20;') <> TRUE  then writeln("isLetter( #  c20 ) incorrect"); success := FALSE; end if; # TELUGU LETTER TTHA
115    if isLetter('\16#00c40;') <> TRUE  then writeln("isLetter( #  c40 ) incorrect"); success := FALSE; end if; # TELUGU VOWEL SIGN II
116    if isLetter('\16#00c60;') <> TRUE  then writeln("isLetter( #  c60 ) incorrect"); success := FALSE; end if; # TELUGU LETTER VOCALIC RR
117    if isLetter('\16#00ca0;') <> TRUE  then writeln("isLetter( #  ca0 ) incorrect"); success := FALSE; end if; # KANNADA LETTER TTHA
118    if isLetter('\16#00cc0;') <> TRUE  then writeln("isLetter( #  cc0 ) incorrect"); success := FALSE; end if; # KANNADA VOWEL SIGN II
119    if isLetter('\16#00ce0;') <> TRUE  then writeln("isLetter( #  ce0 ) incorrect"); success := FALSE; end if; # KANNADA LETTER VOCALIC RR
120    if isLetter('\16#00d20;') <> TRUE  then writeln("isLetter( #  d20 ) incorrect"); success := FALSE; end if; # MALAYALAM LETTER TTHA
121    if isLetter('\16#00d40;') <> TRUE  then writeln("isLetter( #  d40 ) incorrect"); success := FALSE; end if; # MALAYALAM VOWEL SIGN II
122    if isLetter('\16#00d60;') <> TRUE  then writeln("isLetter( #  d60 ) incorrect"); success := FALSE; end if; # MALAYALAM LETTER VOCALIC RR
123    if isLetter('\16#00da0;') <> TRUE  then writeln("isLetter( #  da0 ) incorrect"); success := FALSE; end if; # SINHALA LETTER ALPAPRAANA CAYANNA
124    if isLetter('\16#00dc0;') <> TRUE  then writeln("isLetter( #  dc0 ) incorrect"); success := FALSE; end if; # SINHALA LETTER VAYANNA
125    if isLetter('\16#00e20;') <> TRUE  then writeln("isLetter( #  e20 ) incorrect"); success := FALSE; end if; # THAI CHARACTER PHO SAMPHAO
126    if isLetter('\16#00e40;') <> TRUE  then writeln("isLetter( #  e40 ) incorrect"); success := FALSE; end if; # THAI CHARACTER SARA E
127    if isLetter('\16#00ec0;') <> TRUE  then writeln("isLetter( #  ec0 ) incorrect"); success := FALSE; end if; # LAO VOWEL SIGN E
128    if isLetter('\16#00f00;') <> TRUE  then writeln("isLetter( #  f00 ) incorrect"); success := FALSE; end if; # TIBETAN SYLLABLE OM
129    if isLetter('\16#00f40;') <> TRUE  then writeln("isLetter( #  f40 ) incorrect"); success := FALSE; end if; # TIBETAN LETTER KA
130    if isLetter('\16#00f80;') <> TRUE  then writeln("isLetter( #  f80 ) incorrect"); success := FALSE; end if; # TIBETAN VOWEL SIGN REVERSED I
131    if isLetter('\16#00fc0;') <> FALSE then writeln("isLetter( #  fc0 ) incorrect"); success := FALSE; end if; # TIBETAN CANTILLATION SIGN HEAVY BEAT
132    if isLetter('\16#01000;') <> TRUE  then writeln("isLetter( # 1000 ) incorrect"); success := FALSE; end if; # MYANMAR LETTER KA
133    if isLetter('\16#01050;') <> TRUE  then writeln("isLetter( # 1050 ) incorrect"); success := FALSE; end if; # MYANMAR LETTER SHA
134    if isLetter('\16#010a0;') <> TRUE  then writeln("isLetter( # 10a0 ) incorrect"); success := FALSE; end if; # GEORGIAN CAPITAL LETTER AN
135    if isLetter('\16#010b8;') <> TRUE  then writeln("isLetter( # 10b8 ) incorrect"); success := FALSE; end if; # GEORGIAN CAPITAL LETTER SHIN
136    if isLetter('\16#010d0;') <> TRUE  then writeln("isLetter( # 10d0 ) incorrect"); success := FALSE; end if; # GEORGIAN LETTER AN
137    if isLetter('\16#010e8;') <> TRUE  then writeln("isLetter( # 10e8 ) incorrect"); success := FALSE; end if; # GEORGIAN LETTER SHIN
138    if isLetter('\16#01100;') <> TRUE  then writeln("isLetter( # 1100 ) incorrect"); success := FALSE; end if; # HANGUL CHOSEONG KIYEOK
139    if isLetter('\16#01140;') <> TRUE  then writeln("isLetter( # 1140 ) incorrect"); success := FALSE; end if; # HANGUL CHOSEONG PANSIOS
140    if isLetter('\16#01180;') <> TRUE  then writeln("isLetter( # 1180 ) incorrect"); success := FALSE; end if; # HANGUL JUNGSEONG O-E
141    if isLetter('\16#011c0;') <> TRUE  then writeln("isLetter( # 11c0 ) incorrect"); success := FALSE; end if; # HANGUL JONGSEONG THIEUTH
142    if isLetter('\16#01200;') <> TRUE  then writeln("isLetter( # 1200 ) incorrect"); success := FALSE; end if; # ETHIOPIC SYLLABLE HA
143    if isLetter('\16#01260;') <> TRUE  then writeln("isLetter( # 1260 ) incorrect"); success := FALSE; end if; # ETHIOPIC SYLLABLE BA
144    if isLetter('\16#012c0;') <> TRUE  then writeln("isLetter( # 12c0 ) incorrect"); success := FALSE; end if; # ETHIOPIC SYLLABLE KXWA
145    if isLetter('\16#01320;') <> TRUE  then writeln("isLetter( # 1320 ) incorrect"); success := FALSE; end if; # ETHIOPIC SYLLABLE THA
146    if isLetter('\16#01390;') <> FALSE then writeln("isLetter( # 1390 ) incorrect"); success := FALSE; end if; # ETHIOPIC TONAL MARK YIZET
147    if isLetter('\16#01398;') <> FALSE then writeln("isLetter( # 1398 ) incorrect"); success := FALSE; end if; # ETHIOPIC TONAL MARK DERET-HIDET
148    if isLetter('\16#013a0;') <> TRUE  then writeln("isLetter( # 13a0 ) incorrect"); success := FALSE; end if; # CHEROKEE LETTER A
149    if isLetter('\16#013b8;') <> TRUE  then writeln("isLetter( # 13b8 ) incorrect"); success := FALSE; end if; # CHEROKEE LETTER LV
150    if isLetter('\16#013d0;') <> TRUE  then writeln("isLetter( # 13d0 ) incorrect"); success := FALSE; end if; # CHEROKEE LETTER SO
151    if isLetter('\16#013e8;') <> TRUE  then writeln("isLetter( # 13e8 ) incorrect"); success := FALSE; end if; # CHEROKEE LETTER TSV
152    if isLetter('\16#01400;') <> FALSE then writeln("isLetter( # 1400 ) incorrect"); success := FALSE; end if; # CANADIAN SYLLABICS HYPHEN
153    if isLetter('\16#014a0;') <> TRUE  then writeln("isLetter( # 14a0 ) incorrect"); success := FALSE; end if; # CANADIAN SYLLABICS NASKAPI CWAA
154    if isLetter('\16#01540;') <> TRUE  then writeln("isLetter( # 1540 ) incorrect"); success := FALSE; end if; # CANADIAN SYLLABICS WEST-CREE Y
155    if isLetter('\16#015e0;') <> TRUE  then writeln("isLetter( # 15e0 ) incorrect"); success := FALSE; end if; # CANADIAN SYLLABICS CARRIER THI
156    if isLetter('\16#01680;') <> FALSE then writeln("isLetter( # 1680 ) incorrect"); success := FALSE; end if; # OGHAM SPACE MARK
157    if isLetter('\16#01688;') <> TRUE  then writeln("isLetter( # 1688 ) incorrect"); success := FALSE; end if; # OGHAM LETTER TINNE
158    if isLetter('\16#01690;') <> TRUE  then writeln("isLetter( # 1690 ) incorrect"); success := FALSE; end if; # OGHAM LETTER AILM
159    if isLetter('\16#01698;') <> TRUE  then writeln("isLetter( # 1698 ) incorrect"); success := FALSE; end if; # OGHAM LETTER IFIN
160    if isLetter('\16#016a0;') <> TRUE  then writeln("isLetter( # 16a0 ) incorrect"); success := FALSE; end if; # RUNIC LETTER FEHU FEOH FE F
161    if isLetter('\16#016b8;') <> TRUE  then writeln("isLetter( # 16b8 ) incorrect"); success := FALSE; end if; # RUNIC LETTER GAR
162    if isLetter('\16#016d0;') <> TRUE  then writeln("isLetter( # 16d0 ) incorrect"); success := FALSE; end if; # RUNIC LETTER SHORT-TWIG-TYR T
163    if isLetter('\16#016e8;') <> TRUE  then writeln("isLetter( # 16e8 ) incorrect"); success := FALSE; end if; # RUNIC LETTER ICELANDIC-YR
164    if isLetter('\16#01700;') <> TRUE  then writeln("isLetter( # 1700 ) incorrect"); success := FALSE; end if; # TAGALOG LETTER A
165    if isLetter('\16#01708;') <> TRUE  then writeln("isLetter( # 1708 ) incorrect"); success := FALSE; end if; # TAGALOG LETTER NA
166    if isLetter('\16#01710;') <> TRUE  then writeln("isLetter( # 1710 ) incorrect"); success := FALSE; end if; # TAGALOG LETTER SA
167    if isLetter('\16#01720;') <> TRUE  then writeln("isLetter( # 1720 ) incorrect"); success := FALSE; end if; # HANUNOO LETTER A
168    if isLetter('\16#01728;') <> TRUE  then writeln("isLetter( # 1728 ) incorrect"); success := FALSE; end if; # HANUNOO LETTER NA
169    if isLetter('\16#01730;') <> TRUE  then writeln("isLetter( # 1730 ) incorrect"); success := FALSE; end if; # HANUNOO LETTER SA
170    if isLetter('\16#01740;') <> TRUE  then writeln("isLetter( # 1740 ) incorrect"); success := FALSE; end if; # BUHID LETTER A
171    if isLetter('\16#01748;') <> TRUE  then writeln("isLetter( # 1748 ) incorrect"); success := FALSE; end if; # BUHID LETTER NA
172    if isLetter('\16#01750;') <> TRUE  then writeln("isLetter( # 1750 ) incorrect"); success := FALSE; end if; # BUHID LETTER SA
173    if isLetter('\16#01760;') <> TRUE  then writeln("isLetter( # 1760 ) incorrect"); success := FALSE; end if; # TAGBANWA LETTER A
174    if isLetter('\16#01768;') <> TRUE  then writeln("isLetter( # 1768 ) incorrect"); success := FALSE; end if; # TAGBANWA LETTER NA
175    if isLetter('\16#01770;') <> TRUE  then writeln("isLetter( # 1770 ) incorrect"); success := FALSE; end if; # TAGBANWA LETTER SA
176    if isLetter('\16#01780;') <> TRUE  then writeln("isLetter( # 1780 ) incorrect"); success := FALSE; end if; # KHMER LETTER KA
177    if isLetter('\16#017a0;') <> TRUE  then writeln("isLetter( # 17a0 ) incorrect"); success := FALSE; end if; # KHMER LETTER HA
178    if isLetter('\16#017c0;') <> TRUE  then writeln("isLetter( # 17c0 ) incorrect"); success := FALSE; end if; # KHMER VOWEL SIGN IE
179    if isLetter('\16#017e0;') <> FALSE then writeln("isLetter( # 17e0 ) incorrect"); success := FALSE; end if; # KHMER DIGIT ZERO
180    if isLetter('\16#01800;') <> FALSE then writeln("isLetter( # 1800 ) incorrect"); success := FALSE; end if; # MONGOLIAN BIRGA
181    if isLetter('\16#0182c;') <> TRUE  then writeln("isLetter( # 182c ) incorrect"); success := FALSE; end if; # MONGOLIAN LETTER QA
182    if isLetter('\16#01858;') <> TRUE  then writeln("isLetter( # 1858 ) incorrect"); success := FALSE; end if; # MONGOLIAN LETTER TODO GAA
183    if isLetter('\16#01884;') <> TRUE  then writeln("isLetter( # 1884 ) incorrect"); success := FALSE; end if; # MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
184    if isLetter('\16#01900;') <> TRUE  then writeln("isLetter( # 1900 ) incorrect"); success := FALSE; end if; # LIMBU VOWEL-CARRIER LETTER
185    if isLetter('\16#01914;') <> TRUE  then writeln("isLetter( # 1914 ) incorrect"); success := FALSE; end if; # LIMBU LETTER MA
186    if isLetter('\16#01928;') <> TRUE  then writeln("isLetter( # 1928 ) incorrect"); success := FALSE; end if; # LIMBU VOWEL SIGN O
187    if isLetter('\16#01950;') <> TRUE  then writeln("isLetter( # 1950 ) incorrect"); success := FALSE; end if; # TAI LE LETTER KA
188    if isLetter('\16#0195c;') <> TRUE  then writeln("isLetter( # 195c ) incorrect"); success := FALSE; end if; # TAI LE LETTER FA
189    if isLetter('\16#01968;') <> TRUE  then writeln("isLetter( # 1968 ) incorrect"); success := FALSE; end if; # TAI LE LETTER OO
190    if isLetter('\16#01974;') <> TRUE  then writeln("isLetter( # 1974 ) incorrect"); success := FALSE; end if; # TAI LE LETTER TONE-6
191    if isLetter('\16#019e0;') <> FALSE then writeln("isLetter( # 19e0 ) incorrect"); success := FALSE; end if; # KHMER SYMBOL PATHAMASAT
192    if isLetter('\16#019e8;') <> FALSE then writeln("isLetter( # 19e8 ) incorrect"); success := FALSE; end if; # KHMER SYMBOL PRAM-BEI KOET
193    if isLetter('\16#019f0;') <> FALSE then writeln("isLetter( # 19f0 ) incorrect"); success := FALSE; end if; # KHMER SYMBOL TUTEYASAT
194    if isLetter('\16#019f8;') <> FALSE then writeln("isLetter( # 19f8 ) incorrect"); success := FALSE; end if; # KHMER SYMBOL PRAM-BEI ROC
195    if isLetter('\16#01c3c;') <> FALSE then writeln("isLetter( # 1c3c ) incorrect"); success := FALSE; end if; # LEPCHA PUNCTUATION NYET THYOOM TA-ROL
196    if isLetter('\16#01c50;') <> FALSE then writeln("isLetter( # 1c50 ) incorrect"); success := FALSE; end if; # OL CHIKI DIGIT ZERO
197    if isLetter('\16#01cd0;') <> FALSE then writeln("isLetter( # 1cd0 ) incorrect"); success := FALSE; end if; # VEDIC TONE KARSHANA
198    if isLetter('\16#01cdc;') <> FALSE then writeln("isLetter( # 1cdc ) incorrect"); success := FALSE; end if; # VEDIC TONE KATHAKA ANUDATTA
199    if isLetter('\16#01ce8;') <> FALSE then writeln("isLetter( # 1ce8 ) incorrect"); success := FALSE; end if; # VEDIC SIGN VISARGA ANUDATTA WITH TAIL
200    if isLetter('\16#01d00;') <> TRUE  then writeln("isLetter( # 1d00 ) incorrect"); success := FALSE; end if; # LATIN LETTER SMALL CAPITAL A
201    if isLetter('\16#01d20;') <> TRUE  then writeln("isLetter( # 1d20 ) incorrect"); success := FALSE; end if; # LATIN LETTER SMALL CAPITAL V
202    if isLetter('\16#01d40;') <> TRUE  then writeln("isLetter( # 1d40 ) incorrect"); success := FALSE; end if; # MODIFIER LETTER CAPITAL T
203    if isLetter('\16#01d60;') <> TRUE  then writeln("isLetter( # 1d60 ) incorrect"); success := FALSE; end if; # MODIFIER LETTER SMALL GREEK PHI
204    if isLetter('\16#01dc0;') <> FALSE then writeln("isLetter( # 1dc0 ) incorrect"); success := FALSE; end if; # COMBINING DOTTED GRAVE ACCENT
205    if isLetter('\16#01dd0;') <> FALSE then writeln("isLetter( # 1dd0 ) incorrect"); success := FALSE; end if; # COMBINING IS BELOW
206    if isLetter('\16#01de0;') <> FALSE then writeln("isLetter( # 1de0 ) incorrect"); success := FALSE; end if; # COMBINING LATIN SMALL LETTER N
207    if isLetter('\16#01e00;') <> TRUE  then writeln("isLetter( # 1e00 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER A WITH RING BELOW
208    if isLetter('\16#01e40;') <> TRUE  then writeln("isLetter( # 1e40 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER M WITH DOT ABOVE
209    if isLetter('\16#01e80;') <> TRUE  then writeln("isLetter( # 1e80 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER W WITH GRAVE
210    if isLetter('\16#01ec0;') <> TRUE  then writeln("isLetter( # 1ec0 ) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
211    if isLetter('\16#01f00;') <> TRUE  then writeln("isLetter( # 1f00 ) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER ALPHA WITH PSILI
212    if isLetter('\16#01f40;') <> TRUE  then writeln("isLetter( # 1f40 ) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER OMICRON WITH PSILI
213    if isLetter('\16#01f80;') <> TRUE  then writeln("isLetter( # 1f80 ) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
214    if isLetter('\16#01fc0;') <> FALSE then writeln("isLetter( # 1fc0 ) incorrect"); success := FALSE; end if; # GREEK PERISPOMENI
215    if isLetter('\16#02000;') <> FALSE then writeln("isLetter( # 2000 ) incorrect"); success := FALSE; end if; # EN QUAD
216    if isLetter('\16#0201c;') <> FALSE then writeln("isLetter( # 201c ) incorrect"); success := FALSE; end if; # LEFT DOUBLE QUOTATION MARK
217    if isLetter('\16#02038;') <> FALSE then writeln("isLetter( # 2038 ) incorrect"); success := FALSE; end if; # CARET
218    if isLetter('\16#02054;') <> FALSE then writeln("isLetter( # 2054 ) incorrect"); success := FALSE; end if; # INVERTED UNDERTIE
219    if isLetter('\16#02070;') <> FALSE then writeln("isLetter( # 2070 ) incorrect"); success := FALSE; end if; # SUPERSCRIPT ZERO
220    if isLetter('\16#0207c;') <> FALSE then writeln("isLetter( # 207c ) incorrect"); success := FALSE; end if; # SUPERSCRIPT EQUALS SIGN
221    if isLetter('\16#02088;') <> FALSE then writeln("isLetter( # 2088 ) incorrect"); success := FALSE; end if; # SUBSCRIPT EIGHT
222    if isLetter('\16#020a0;') <> FALSE then writeln("isLetter( # 20a0 ) incorrect"); success := FALSE; end if; # EURO-CURRENCY SIGN
223    if isLetter('\16#020ac;') <> FALSE then writeln("isLetter( # 20ac ) incorrect"); success := FALSE; end if; # EURO SIGN
224    if isLetter('\16#020b8;') <> FALSE then writeln("isLetter( # 20b8 ) incorrect"); success := FALSE; end if; # TENGE SIGN
225    if isLetter('\16#020d0;') <> FALSE then writeln("isLetter( # 20d0 ) incorrect"); success := FALSE; end if; # COMBINING LEFT HARPOON ABOVE
226    if isLetter('\16#020dc;') <> FALSE then writeln("isLetter( # 20dc ) incorrect"); success := FALSE; end if; # COMBINING FOUR DOTS ABOVE
227    if isLetter('\16#020e8;') <> FALSE then writeln("isLetter( # 20e8 ) incorrect"); success := FALSE; end if; # COMBINING TRIPLE UNDERDOT
228    if isLetter('\16#02100;') <> FALSE then writeln("isLetter( # 2100 ) incorrect"); success := FALSE; end if; # ACCOUNT OF
229    if isLetter('\16#02114;') <> FALSE then writeln("isLetter( # 2114 ) incorrect"); success := FALSE; end if; # L B BAR SYMBOL
230    if isLetter('\16#02128;') <> TRUE  then writeln("isLetter( # 2128 ) incorrect"); success := FALSE; end if; # BLACK-LETTER CAPITAL Z
231    if isLetter('\16#02150;') <> FALSE then writeln("isLetter( # 2150 ) incorrect"); success := FALSE; end if; # VULGAR FRACTION ONE SEVENTH
232    if isLetter('\16#02160;') <> TRUE  then writeln("isLetter( # 2160 ) incorrect"); success := FALSE; end if; # ROMAN NUMERAL ONE
233    if isLetter('\16#02170;') <> TRUE  then writeln("isLetter( # 2170 ) incorrect"); success := FALSE; end if; # SMALL ROMAN NUMERAL ONE
234    if isLetter('\16#02180;') <> TRUE  then writeln("isLetter( # 2180 ) incorrect"); success := FALSE; end if; # ROMAN NUMERAL ONE THOUSAND C D
235    if isLetter('\16#02190;') <> FALSE then writeln("isLetter( # 2190 ) incorrect"); success := FALSE; end if; # LEFTWARDS ARROW
236    if isLetter('\16#021ac;') <> FALSE then writeln("isLetter( # 21ac ) incorrect"); success := FALSE; end if; # RIGHTWARDS ARROW WITH LOOP
237    if isLetter('\16#021c8;') <> FALSE then writeln("isLetter( # 21c8 ) incorrect"); success := FALSE; end if; # UPWARDS PAIRED ARROWS
238    if isLetter('\16#021e4;') <> FALSE then writeln("isLetter( # 21e4 ) incorrect"); success := FALSE; end if; # LEFTWARDS ARROW TO BAR
239    if isLetter('\16#02200;') <> FALSE then writeln("isLetter( # 2200 ) incorrect"); success := FALSE; end if; # FOR ALL
240    if isLetter('\16#02240;') <> FALSE then writeln("isLetter( # 2240 ) incorrect"); success := FALSE; end if; # WREATH PRODUCT
241    if isLetter('\16#02280;') <> FALSE then writeln("isLetter( # 2280 ) incorrect"); success := FALSE; end if; # DOES NOT PRECEDE
242    if isLetter('\16#022c0;') <> FALSE then writeln("isLetter( # 22c0 ) incorrect"); success := FALSE; end if; # N-ARY LOGICAL AND
243    if isLetter('\16#02300;') <> FALSE then writeln("isLetter( # 2300 ) incorrect"); success := FALSE; end if; # DIAMETER SIGN
244    if isLetter('\16#02340;') <> FALSE then writeln("isLetter( # 2340 ) incorrect"); success := FALSE; end if; # APL FUNCTIONAL SYMBOL BACKSLASH BAR
245    if isLetter('\16#02380;') <> FALSE then writeln("isLetter( # 2380 ) incorrect"); success := FALSE; end if; # INSERTION SYMBOL
246    if isLetter('\16#023c0;') <> FALSE then writeln("isLetter( # 23c0 ) incorrect"); success := FALSE; end if; # DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE
247    if isLetter('\16#02400;') <> FALSE then writeln("isLetter( # 2400 ) incorrect"); success := FALSE; end if; # SYMBOL FOR NULL
248    if isLetter('\16#02410;') <> FALSE then writeln("isLetter( # 2410 ) incorrect"); success := FALSE; end if; # SYMBOL FOR DATA LINK ESCAPE
249    if isLetter('\16#02420;') <> FALSE then writeln("isLetter( # 2420 ) incorrect"); success := FALSE; end if; # SYMBOL FOR SPACE
250    if isLetter('\16#02440;') <> FALSE then writeln("isLetter( # 2440 ) incorrect"); success := FALSE; end if; # OCR HOOK
251    if isLetter('\16#02448;') <> FALSE then writeln("isLetter( # 2448 ) incorrect"); success := FALSE; end if; # OCR DASH
252    if isLetter('\16#02460;') <> FALSE then writeln("isLetter( # 2460 ) incorrect"); success := FALSE; end if; # CIRCLED DIGIT ONE
253    if isLetter('\16#02488;') <> FALSE then writeln("isLetter( # 2488 ) incorrect"); success := FALSE; end if; # DIGIT ONE FULL STOP
254    if isLetter('\16#024b0;') <> FALSE then writeln("isLetter( # 24b0 ) incorrect"); success := FALSE; end if; # PARENTHESIZED LATIN SMALL LETTER U
255    if isLetter('\16#02500;') <> FALSE then writeln("isLetter( # 2500 ) incorrect"); success := FALSE; end if; # BOX DRAWINGS LIGHT HORIZONTAL
256    if isLetter('\16#02520;') <> FALSE then writeln("isLetter( # 2520 ) incorrect"); success := FALSE; end if; # BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT
257    if isLetter('\16#02540;') <> FALSE then writeln("isLetter( # 2540 ) incorrect"); success := FALSE; end if; # BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT
258    if isLetter('\16#02560;') <> FALSE then writeln("isLetter( # 2560 ) incorrect"); success := FALSE; end if; # BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
259    if isLetter('\16#02580;') <> FALSE then writeln("isLetter( # 2580 ) incorrect"); success := FALSE; end if; # UPPER HALF BLOCK
260    if isLetter('\16#02588;') <> FALSE then writeln("isLetter( # 2588 ) incorrect"); success := FALSE; end if; # FULL BLOCK
261    if isLetter('\16#02590;') <> FALSE then writeln("isLetter( # 2590 ) incorrect"); success := FALSE; end if; # RIGHT HALF BLOCK
262    if isLetter('\16#02598;') <> FALSE then writeln("isLetter( # 2598 ) incorrect"); success := FALSE; end if; # QUADRANT UPPER LEFT
263    if isLetter('\16#025a0;') <> FALSE then writeln("isLetter( # 25a0 ) incorrect"); success := FALSE; end if; # BLACK SQUARE
264    if isLetter('\16#025b8;') <> FALSE then writeln("isLetter( # 25b8 ) incorrect"); success := FALSE; end if; # BLACK RIGHT-POINTING SMALL TRIANGLE
265    if isLetter('\16#025d0;') <> FALSE then writeln("isLetter( # 25d0 ) incorrect"); success := FALSE; end if; # CIRCLE WITH LEFT HALF BLACK
266    if isLetter('\16#025e8;') <> FALSE then writeln("isLetter( # 25e8 ) incorrect"); success := FALSE; end if; # SQUARE WITH RIGHT HALF BLACK
267    if isLetter('\16#02600;') <> FALSE then writeln("isLetter( # 2600 ) incorrect"); success := FALSE; end if; # BLACK SUN WITH RAYS
268    if isLetter('\16#02640;') <> FALSE then writeln("isLetter( # 2640 ) incorrect"); success := FALSE; end if; # FEMALE SIGN
269    if isLetter('\16#02680;') <> FALSE then writeln("isLetter( # 2680 ) incorrect"); success := FALSE; end if; # DIE FACE-1
270    if isLetter('\16#026c0;') <> FALSE then writeln("isLetter( # 26c0 ) incorrect"); success := FALSE; end if; # WHITE DRAUGHTS MAN
271    if isLetter('\16#02730;') <> FALSE then writeln("isLetter( # 2730 ) incorrect"); success := FALSE; end if; # SHADOWED WHITE STAR
272    if isLetter('\16#02760;') <> FALSE then writeln("isLetter( # 2760 ) incorrect"); success := FALSE; end if; # HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
273    if isLetter('\16#02790;') <> FALSE then writeln("isLetter( # 2790 ) incorrect"); success := FALSE; end if; # DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN
274    if isLetter('\16#027c0;') <> FALSE then writeln("isLetter( # 27c0 ) incorrect"); success := FALSE; end if; # THREE DIMENSIONAL ANGLE
275    if isLetter('\16#027cc;') <> FALSE then writeln("isLetter( # 27cc ) incorrect"); success := FALSE; end if; # LONG DIVISION
276    if isLetter('\16#027d8;') <> FALSE then writeln("isLetter( # 27d8 ) incorrect"); success := FALSE; end if; # LARGE UP TACK
277    if isLetter('\16#027e4;') <> FALSE then writeln("isLetter( # 27e4 ) incorrect"); success := FALSE; end if; # WHITE SQUARE WITH LEFTWARDS TICK
278    if isLetter('\16#027f0;') <> FALSE then writeln("isLetter( # 27f0 ) incorrect"); success := FALSE; end if; # UPWARDS QUADRUPLE ARROW
279    if isLetter('\16#027f4;') <> FALSE then writeln("isLetter( # 27f4 ) incorrect"); success := FALSE; end if; # RIGHT ARROW WITH CIRCLED PLUS
280    if isLetter('\16#027f8;') <> FALSE then writeln("isLetter( # 27f8 ) incorrect"); success := FALSE; end if; # LONG LEFTWARDS DOUBLE ARROW
281    if isLetter('\16#027fc;') <> FALSE then writeln("isLetter( # 27fc ) incorrect"); success := FALSE; end if; # LONG RIGHTWARDS ARROW FROM BAR
282    if isLetter('\16#02800;') <> FALSE then writeln("isLetter( # 2800 ) incorrect"); success := FALSE; end if; # BRAILLE PATTERN BLANK
283    if isLetter('\16#02840;') <> FALSE then writeln("isLetter( # 2840 ) incorrect"); success := FALSE; end if; # BRAILLE PATTERN DOTS-7
284    if isLetter('\16#02880;') <> FALSE then writeln("isLetter( # 2880 ) incorrect"); success := FALSE; end if; # BRAILLE PATTERN DOTS-8
285    if isLetter('\16#028c0;') <> FALSE then writeln("isLetter( # 28c0 ) incorrect"); success := FALSE; end if; # BRAILLE PATTERN DOTS-78
286    if isLetter('\16#02900;') <> FALSE then writeln("isLetter( # 2900 ) incorrect"); success := FALSE; end if; # RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE
287    if isLetter('\16#02920;') <> FALSE then writeln("isLetter( # 2920 ) incorrect"); success := FALSE; end if; # RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND
288    if isLetter('\16#02940;') <> FALSE then writeln("isLetter( # 2940 ) incorrect"); success := FALSE; end if; # ANTICLOCKWISE CLOSED CIRCLE ARROW
289    if isLetter('\16#02960;') <> FALSE then writeln("isLetter( # 2960 ) incorrect"); success := FALSE; end if; # UPWARDS HARPOON WITH BARB LEFT FROM BAR
290    if isLetter('\16#02980;') <> FALSE then writeln("isLetter( # 2980 ) incorrect"); success := FALSE; end if; # TRIPLE VERTICAL BAR DELIMITER
291    if isLetter('\16#029a0;') <> FALSE then writeln("isLetter( # 29a0 ) incorrect"); success := FALSE; end if; # SPHERICAL ANGLE OPENING LEFT
292    if isLetter('\16#029c0;') <> FALSE then writeln("isLetter( # 29c0 ) incorrect"); success := FALSE; end if; # CIRCLED LESS-THAN
293    if isLetter('\16#029e0;') <> FALSE then writeln("isLetter( # 29e0 ) incorrect"); success := FALSE; end if; # SQUARE WITH CONTOURED OUTLINE
294    if isLetter('\16#02a00;') <> FALSE then writeln("isLetter( # 2a00 ) incorrect"); success := FALSE; end if; # N-ARY CIRCLED DOT OPERATOR
295    if isLetter('\16#02a40;') <> FALSE then writeln("isLetter( # 2a40 ) incorrect"); success := FALSE; end if; # INTERSECTION WITH DOT
296    if isLetter('\16#02a80;') <> FALSE then writeln("isLetter( # 2a80 ) incorrect"); success := FALSE; end if; # GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE
297    if isLetter('\16#02ac0;') <> FALSE then writeln("isLetter( # 2ac0 ) incorrect"); success := FALSE; end if; # SUPERSET WITH PLUS SIGN BELOW
298    if isLetter('\16#02b00;') <> FALSE then writeln("isLetter( # 2b00 ) incorrect"); success := FALSE; end if; # NORTH EAST WHITE ARROW
299    if isLetter('\16#02b40;') <> FALSE then writeln("isLetter( # 2b40 ) incorrect"); success := FALSE; end if; # EQUALS SIGN ABOVE LEFTWARDS ARROW
300    if isLetter('\16#02e00;') <> FALSE then writeln("isLetter( # 2e00 ) incorrect"); success := FALSE; end if; # RIGHT ANGLE SUBSTITUTION MARKER
301    if isLetter('\16#02e20;') <> FALSE then writeln("isLetter( # 2e20 ) incorrect"); success := FALSE; end if; # LEFT VERTICAL BAR WITH QUILL
302    if isLetter('\16#02e80;') <> FALSE then writeln("isLetter( # 2e80 ) incorrect"); success := FALSE; end if; # CJK RADICAL REPEAT
303    if isLetter('\16#02ea0;') <> FALSE then writeln("isLetter( # 2ea0 ) incorrect"); success := FALSE; end if; # CJK RADICAL CIVILIAN
304    if isLetter('\16#02ec0;') <> FALSE then writeln("isLetter( # 2ec0 ) incorrect"); success := FALSE; end if; # CJK RADICAL GRASS THREE
305    if isLetter('\16#02ee0;') <> FALSE then writeln("isLetter( # 2ee0 ) incorrect"); success := FALSE; end if; # CJK RADICAL C-SIMPLIFIED EAT
306    if isLetter('\16#02f00;') <> FALSE then writeln("isLetter( # 2f00 ) incorrect"); success := FALSE; end if; # KANGXI RADICAL ONE
307    if isLetter('\16#02f38;') <> FALSE then writeln("isLetter( # 2f38 ) incorrect"); success := FALSE; end if; # KANGXI RADICAL BOW
308    if isLetter('\16#02f70;') <> FALSE then writeln("isLetter( # 2f70 ) incorrect"); success := FALSE; end if; # KANGXI RADICAL SPIRIT
309    if isLetter('\16#02fa8;') <> FALSE then writeln("isLetter( # 2fa8 ) incorrect"); success := FALSE; end if; # KANGXI RADICAL GATE
310    if isLetter('\16#02ff0;') <> FALSE then writeln("isLetter( # 2ff0 ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
311    if isLetter('\16#02ff4;') <> FALSE then writeln("isLetter( # 2ff4 ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND
312    if isLetter('\16#02ff8;') <> FALSE then writeln("isLetter( # 2ff8 ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT
313    if isLetter('\16#03000;') <> FALSE then writeln("isLetter( # 3000 ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC SPACE
314    if isLetter('\16#03010;') <> FALSE then writeln("isLetter( # 3010 ) incorrect"); success := FALSE; end if; # LEFT BLACK LENTICULAR BRACKET
315    if isLetter('\16#03020;') <> FALSE then writeln("isLetter( # 3020 ) incorrect"); success := FALSE; end if; # POSTAL MARK FACE
316    if isLetter('\16#03030;') <> FALSE then writeln("isLetter( # 3030 ) incorrect"); success := FALSE; end if; # WAVY DASH
317    if isLetter('\16#03058;') <> TRUE  then writeln("isLetter( # 3058 ) incorrect"); success := FALSE; end if; # HIRAGANA LETTER ZI
318    if isLetter('\16#03070;') <> TRUE  then writeln("isLetter( # 3070 ) incorrect"); success := FALSE; end if; # HIRAGANA LETTER BA
319    if isLetter('\16#03088;') <> TRUE  then writeln("isLetter( # 3088 ) incorrect"); success := FALSE; end if; # HIRAGANA LETTER YO
320    if isLetter('\16#030a0;') <> FALSE then writeln("isLetter( # 30a0 ) incorrect"); success := FALSE; end if; # KATAKANA-HIRAGANA DOUBLE HYPHEN
321    if isLetter('\16#030b8;') <> TRUE  then writeln("isLetter( # 30b8 ) incorrect"); success := FALSE; end if; # KATAKANA LETTER ZI
322    if isLetter('\16#030d0;') <> TRUE  then writeln("isLetter( # 30d0 ) incorrect"); success := FALSE; end if; # KATAKANA LETTER BA
323    if isLetter('\16#030e8;') <> TRUE  then writeln("isLetter( # 30e8 ) incorrect"); success := FALSE; end if; # KATAKANA LETTER YO
324    if isLetter('\16#0310c;') <> TRUE  then writeln("isLetter( # 310c ) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER L
325    if isLetter('\16#03118;') <> TRUE  then writeln("isLetter( # 3118 ) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER C
326    if isLetter('\16#03124;') <> TRUE  then writeln("isLetter( # 3124 ) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER ANG
327    if isLetter('\16#03148;') <> TRUE  then writeln("isLetter( # 3148 ) incorrect"); success := FALSE; end if; # HANGUL LETTER CIEUC
328    if isLetter('\16#03160;') <> TRUE  then writeln("isLetter( # 3160 ) incorrect"); success := FALSE; end if; # HANGUL LETTER YU
329    if isLetter('\16#03178;') <> TRUE  then writeln("isLetter( # 3178 ) incorrect"); success := FALSE; end if; # HANGUL LETTER KAPYEOUNPIEUP
330    if isLetter('\16#03190;') <> FALSE then writeln("isLetter( # 3190 ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC ANNOTATION LINKING MARK
331    if isLetter('\16#03194;') <> FALSE then writeln("isLetter( # 3194 ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC ANNOTATION THREE MARK
332    if isLetter('\16#03198;') <> FALSE then writeln("isLetter( # 3198 ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC ANNOTATION BOTTOM MARK
333    if isLetter('\16#0319c;') <> FALSE then writeln("isLetter( # 319c ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC ANNOTATION FOURTH MARK
334    if isLetter('\16#031a0;') <> TRUE  then writeln("isLetter( # 31a0 ) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER BU
335    if isLetter('\16#031a8;') <> TRUE  then writeln("isLetter( # 31a8 ) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER IR
336    if isLetter('\16#031b0;') <> TRUE  then writeln("isLetter( # 31b0 ) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER AM
337    if isLetter('\16#031c0;') <> FALSE then writeln("isLetter( # 31c0 ) incorrect"); success := FALSE; end if; # CJK STROKE T
338    if isLetter('\16#031cc;') <> FALSE then writeln("isLetter( # 31cc ) incorrect"); success := FALSE; end if; # CJK STROKE HPWG
339    if isLetter('\16#031d8;') <> FALSE then writeln("isLetter( # 31d8 ) incorrect"); success := FALSE; end if; # CJK STROKE SWZ
340    if isLetter('\16#031f0;') <> TRUE  then writeln("isLetter( # 31f0 ) incorrect"); success := FALSE; end if; # KATAKANA LETTER SMALL KU
341    if isLetter('\16#031f4;') <> TRUE  then writeln("isLetter( # 31f4 ) incorrect"); success := FALSE; end if; # KATAKANA LETTER SMALL NU
342    if isLetter('\16#031f8;') <> TRUE  then writeln("isLetter( # 31f8 ) incorrect"); success := FALSE; end if; # KATAKANA LETTER SMALL HE
343    if isLetter('\16#031fc;') <> TRUE  then writeln("isLetter( # 31fc ) incorrect"); success := FALSE; end if; # KATAKANA LETTER SMALL RI
344    if isLetter('\16#03200;') <> FALSE then writeln("isLetter( # 3200 ) incorrect"); success := FALSE; end if; # PARENTHESIZED HANGUL KIYEOK
345    if isLetter('\16#03240;') <> FALSE then writeln("isLetter( # 3240 ) incorrect"); success := FALSE; end if; # PARENTHESIZED IDEOGRAPH FESTIVAL
346    if isLetter('\16#03280;') <> FALSE then writeln("isLetter( # 3280 ) incorrect"); success := FALSE; end if; # CIRCLED IDEOGRAPH ONE
347    if isLetter('\16#032c0;') <> FALSE then writeln("isLetter( # 32c0 ) incorrect"); success := FALSE; end if; # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
348    if isLetter('\16#03300;') <> FALSE then writeln("isLetter( # 3300 ) incorrect"); success := FALSE; end if; # SQUARE APAATO
349    if isLetter('\16#03340;') <> FALSE then writeln("isLetter( # 3340 ) incorrect"); success := FALSE; end if; # SQUARE PONDO
350    if isLetter('\16#03380;') <> FALSE then writeln("isLetter( # 3380 ) incorrect"); success := FALSE; end if; # SQUARE PA AMPS
351    if isLetter('\16#033c0;') <> FALSE then writeln("isLetter( # 33c0 ) incorrect"); success := FALSE; end if; # SQUARE K OHM
352    if isLetter('\16#03400;') <> TRUE  then writeln("isLetter( # 3400 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-3400
353    if isLetter('\16#03a70;') <> TRUE  then writeln("isLetter( # 3a70 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-3A70
354    if isLetter('\16#040e0;') <> TRUE  then writeln("isLetter( # 40e0 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-40E0
355    if isLetter('\16#04750;') <> TRUE  then writeln("isLetter( # 4750 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-4750
356    if isLetter('\16#04dc0;') <> FALSE then writeln("isLetter( # 4dc0 ) incorrect"); success := FALSE; end if; # HEXAGRAM FOR THE CREATIVE HEAVEN
357    if isLetter('\16#04dd0;') <> FALSE then writeln("isLetter( # 4dd0 ) incorrect"); success := FALSE; end if; # HEXAGRAM FOR FOLLOWING
358    if isLetter('\16#04de0;') <> FALSE then writeln("isLetter( # 4de0 ) incorrect"); success := FALSE; end if; # HEXAGRAM FOR RETREAT
359    if isLetter('\16#04df0;') <> FALSE then writeln("isLetter( # 4df0 ) incorrect"); success := FALSE; end if; # HEXAGRAM FOR REVOLUTION
360    if isLetter('\16#04e00;') <> TRUE  then writeln("isLetter( # 4e00 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-4E00
361    if isLetter('\16#06280;') <> TRUE  then writeln("isLetter( # 6280 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-6280
362    if isLetter('\16#07700;') <> TRUE  then writeln("isLetter( # 7700 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-7700
363    if isLetter('\16#08b80;') <> TRUE  then writeln("isLetter( # 8b80 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-8B80
364    if isLetter('\16#0a000;') <> TRUE  then writeln("isLetter( # a000 ) incorrect"); success := FALSE; end if; # YI SYLLABLE IT
365    if isLetter('\16#0a124;') <> TRUE  then writeln("isLetter( # a124 ) incorrect"); success := FALSE; end if; # YI SYLLABLE TAP
366    if isLetter('\16#0a248;') <> TRUE  then writeln("isLetter( # a248 ) incorrect"); success := FALSE; end if; # YI SYLLABLE HXI
367    if isLetter('\16#0a36c;') <> TRUE  then writeln("isLetter( # a36c ) incorrect"); success := FALSE; end if; # YI SYLLABLE CHOP
368    if isLetter('\16#0a490;') <> FALSE then writeln("isLetter( # a490 ) incorrect"); success := FALSE; end if; # YI RADICAL QOT
369    if isLetter('\16#0a4a0;') <> FALSE then writeln("isLetter( # a4a0 ) incorrect"); success := FALSE; end if; # YI RADICAL TAT
370    if isLetter('\16#0a4b0;') <> FALSE then writeln("isLetter( # a4b0 ) incorrect"); success := FALSE; end if; # YI RADICAL SHY
371    if isLetter('\16#0a4c0;') <> FALSE then writeln("isLetter( # a4c0 ) incorrect"); success := FALSE; end if; # YI RADICAL SHAT
372    if isLetter('\16#0a670;') <> FALSE then writeln("isLetter( # a670 ) incorrect"); success := FALSE; end if; # COMBINING CYRILLIC TEN MILLIONS SIGN
373    if isLetter('\16#0a700;') <> FALSE then writeln("isLetter( # a700 ) incorrect"); success := FALSE; end if; # MODIFIER LETTER CHINESE TONE YIN PING
374    if isLetter('\16#0a708;') <> FALSE then writeln("isLetter( # a708 ) incorrect"); success := FALSE; end if; # MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR
375    if isLetter('\16#0a710;') <> FALSE then writeln("isLetter( # a710 ) incorrect"); success := FALSE; end if; # MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR
376    if isLetter('\16#0a720;') <> FALSE then writeln("isLetter( # a720 ) incorrect"); success := FALSE; end if; # MODIFIER LETTER STRESS AND HIGH TONE
377    if isLetter('\16#0a830;') <> FALSE then writeln("isLetter( # a830 ) incorrect"); success := FALSE; end if; # NORTH INDIC FRACTION ONE QUARTER
378    if isLetter('\16#0a834;') <> FALSE then writeln("isLetter( # a834 ) incorrect"); success := FALSE; end if; # NORTH INDIC FRACTION ONE EIGHTH
379    if isLetter('\16#0a838;') <> FALSE then writeln("isLetter( # a838 ) incorrect"); success := FALSE; end if; # NORTH INDIC RUPEE MARK
380    if isLetter('\16#0a8e0;') <> FALSE then writeln("isLetter( # a8e0 ) incorrect"); success := FALSE; end if; # COMBINING DEVANAGARI DIGIT ZERO
381    if isLetter('\16#0a8e8;') <> FALSE then writeln("isLetter( # a8e8 ) incorrect"); success := FALSE; end if; # COMBINING DEVANAGARI DIGIT EIGHT
382    if isLetter('\16#0a8f0;') <> FALSE then writeln("isLetter( # a8f0 ) incorrect"); success := FALSE; end if; # COMBINING DEVANAGARI LETTER VI
383    if isLetter('\16#0a8f8;') <> FALSE then writeln("isLetter( # a8f8 ) incorrect"); success := FALSE; end if; # DEVANAGARI SIGN PUSHPIKA
384    if isLetter('\16#0a900;') <> FALSE then writeln("isLetter( # a900 ) incorrect"); success := FALSE; end if; # KAYAH LI DIGIT ZERO
385    if isLetter('\16#0abf0;') <> FALSE then writeln("isLetter( # abf0 ) incorrect"); success := FALSE; end if; # MEETEI MAYEK DIGIT ZERO
386    if isLetter('\16#0ac00;') <> TRUE  then writeln("isLetter( # ac00 ) incorrect"); success := FALSE; end if; # HANGUL SYLLABLE GA
387    if isLetter('\16#0b6ec;') <> TRUE  then writeln("isLetter( # b6ec ) incorrect"); success := FALSE; end if; # HANGUL SYLLABLE DDWEK
388    if isLetter('\16#0c1d8;') <> TRUE  then writeln("isLetter( # c1d8 ) incorrect"); success := FALSE; end if; # HANGUL SYLLABLE SWAESS
389    if isLetter('\16#0ccc4;') <> TRUE  then writeln("isLetter( # ccc4 ) incorrect"); success := FALSE; end if; # HANGUL SYLLABLE CEM
390    if isLetter('\16#0d800;') <> FALSE then writeln("isLetter( # d800 ) incorrect"); success := FALSE; end if; # <lead surrogate-D800>
391    if isLetter('\16#0d8e0;') <> FALSE then writeln("isLetter( # d8e0 ) incorrect"); success := FALSE; end if; # <lead surrogate-D8E0>
392    if isLetter('\16#0d9c0;') <> FALSE then writeln("isLetter( # d9c0 ) incorrect"); success := FALSE; end if; # <lead surrogate-D9C0>
393    if isLetter('\16#0daa0;') <> FALSE then writeln("isLetter( # daa0 ) incorrect"); success := FALSE; end if; # <lead surrogate-DAA0>
394    if isLetter('\16#0db80;') <> FALSE then writeln("isLetter( # db80 ) incorrect"); success := FALSE; end if; # <lead surrogate-DB80>
395    if isLetter('\16#0dba0;') <> FALSE then writeln("isLetter( # dba0 ) incorrect"); success := FALSE; end if; # <lead surrogate-DBA0>
396    if isLetter('\16#0dbc0;') <> FALSE then writeln("isLetter( # dbc0 ) incorrect"); success := FALSE; end if; # <lead surrogate-DBC0>
397    if isLetter('\16#0dbe0;') <> FALSE then writeln("isLetter( # dbe0 ) incorrect"); success := FALSE; end if; # <lead surrogate-DBE0>
398    if isLetter('\16#0dc00;') <> FALSE then writeln("isLetter( # dc00 ) incorrect"); success := FALSE; end if; # <trail surrogate-DC00>
399    if isLetter('\16#0dd00;') <> FALSE then writeln("isLetter( # dd00 ) incorrect"); success := FALSE; end if; # <trail surrogate-DD00>
400    if isLetter('\16#0de00;') <> FALSE then writeln("isLetter( # de00 ) incorrect"); success := FALSE; end if; # <trail surrogate-DE00>
401    if isLetter('\16#0df00;') <> FALSE then writeln("isLetter( # df00 ) incorrect"); success := FALSE; end if; # <trail surrogate-DF00>
402    if isLetter('\16#0e000;') <> FALSE then writeln("isLetter( # e000 ) incorrect"); success := FALSE; end if; # <private use area-E000>
403    if isLetter('\16#0e640;') <> FALSE then writeln("isLetter( # e640 ) incorrect"); success := FALSE; end if; # <private use area-E640>
404    if isLetter('\16#0ec80;') <> FALSE then writeln("isLetter( # ec80 ) incorrect"); success := FALSE; end if; # <private use area-EC80>
405    if isLetter('\16#0f2c0;') <> FALSE then writeln("isLetter( # f2c0 ) incorrect"); success := FALSE; end if; # <private use area-F2C0>
406    if isLetter('\16#0f900;') <> TRUE  then writeln("isLetter( # f900 ) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-F900
407    if isLetter('\16#0f980;') <> TRUE  then writeln("isLetter( # f980 ) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-F980
408    if isLetter('\16#0fa00;') <> TRUE  then writeln("isLetter( # fa00 ) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-FA00
409    if isLetter('\16#0fb00;') <> TRUE  then writeln("isLetter( # fb00 ) incorrect"); success := FALSE; end if; # LATIN SMALL LIGATURE FF
410    if isLetter('\16#0fb14;') <> TRUE  then writeln("isLetter( # fb14 ) incorrect"); success := FALSE; end if; # ARMENIAN SMALL LIGATURE MEN ECH
411    if isLetter('\16#0fb28;') <> TRUE  then writeln("isLetter( # fb28 ) incorrect"); success := FALSE; end if; # HEBREW LETTER WIDE TAV
412    if isLetter('\16#0fb3c;') <> TRUE  then writeln("isLetter( # fb3c ) incorrect"); success := FALSE; end if; # HEBREW LETTER LAMED WITH DAGESH
413    if isLetter('\16#0fb50;') <> TRUE  then writeln("isLetter( # fb50 ) incorrect"); success := FALSE; end if; # ARABIC LETTER ALEF WASLA ISOLATED FORM
414    if isLetter('\16#0fbfc;') <> TRUE  then writeln("isLetter( # fbfc ) incorrect"); success := FALSE; end if; # ARABIC LETTER FARSI YEH ISOLATED FORM
415    if isLetter('\16#0fca8;') <> TRUE  then writeln("isLetter( # fca8 ) incorrect"); success := FALSE; end if; # ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
416    if isLetter('\16#0fd54;') <> TRUE  then writeln("isLetter( # fd54 ) incorrect"); success := FALSE; end if; # ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
417    if isLetter('\16#0fe00;') <> FALSE then writeln("isLetter( # fe00 ) incorrect"); success := FALSE; end if; # VARIATION SELECTOR-1
418    if isLetter('\16#0fe04;') <> FALSE then writeln("isLetter( # fe04 ) incorrect"); success := FALSE; end if; # VARIATION SELECTOR-5
419    if isLetter('\16#0fe08;') <> FALSE then writeln("isLetter( # fe08 ) incorrect"); success := FALSE; end if; # VARIATION SELECTOR-9
420    if isLetter('\16#0fe0c;') <> FALSE then writeln("isLetter( # fe0c ) incorrect"); success := FALSE; end if; # VARIATION SELECTOR-13
421    if isLetter('\16#0fe10;') <> FALSE then writeln("isLetter( # fe10 ) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL COMMA
422    if isLetter('\16#0fe14;') <> FALSE then writeln("isLetter( # fe14 ) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL SEMICOLON
423    if isLetter('\16#0fe18;') <> FALSE then writeln("isLetter( # fe18 ) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
424    if isLetter('\16#0fe20;') <> FALSE then writeln("isLetter( # fe20 ) incorrect"); success := FALSE; end if; # COMBINING LIGATURE LEFT HALF
425    if isLetter('\16#0fe24;') <> FALSE then writeln("isLetter( # fe24 ) incorrect"); success := FALSE; end if; # COMBINING MACRON LEFT HALF
426    if isLetter('\16#0fe30;') <> FALSE then writeln("isLetter( # fe30 ) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
427    if isLetter('\16#0fe38;') <> FALSE then writeln("isLetter( # fe38 ) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
428    if isLetter('\16#0fe40;') <> FALSE then writeln("isLetter( # fe40 ) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
429    if isLetter('\16#0fe48;') <> FALSE then writeln("isLetter( # fe48 ) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
430    if isLetter('\16#0fe50;') <> FALSE then writeln("isLetter( # fe50 ) incorrect"); success := FALSE; end if; # SMALL COMMA
431    if isLetter('\16#0fe58;') <> FALSE then writeln("isLetter( # fe58 ) incorrect"); success := FALSE; end if; # SMALL EM DASH
432    if isLetter('\16#0fe60;') <> FALSE then writeln("isLetter( # fe60 ) incorrect"); success := FALSE; end if; # SMALL AMPERSAND
433    if isLetter('\16#0fe68;') <> FALSE then writeln("isLetter( # fe68 ) incorrect"); success := FALSE; end if; # SMALL REVERSE SOLIDUS
434    if isLetter('\16#0fe70;') <> TRUE  then writeln("isLetter( # fe70 ) incorrect"); success := FALSE; end if; # ARABIC FATHATAN ISOLATED FORM
435    if isLetter('\16#0fe94;') <> TRUE  then writeln("isLetter( # fe94 ) incorrect"); success := FALSE; end if; # ARABIC LETTER TEH MARBUTA FINAL FORM
436    if isLetter('\16#0feb8;') <> TRUE  then writeln("isLetter( # feb8 ) incorrect"); success := FALSE; end if; # ARABIC LETTER SHEEN MEDIAL FORM
437    if isLetter('\16#0fedc;') <> TRUE  then writeln("isLetter( # fedc ) incorrect"); success := FALSE; end if; # ARABIC LETTER KAF MEDIAL FORM
438    if isLetter('\16#0ff3c;') <> FALSE then writeln("isLetter( # ff3c ) incorrect"); success := FALSE; end if; # FULLWIDTH REVERSE SOLIDUS
439    if isLetter('\16#0ff78;') <> TRUE  then writeln("isLetter( # ff78 ) incorrect"); success := FALSE; end if; # HALFWIDTH KATAKANA LETTER KU
440    if isLetter('\16#0ffb4;') <> TRUE  then writeln("isLetter( # ffb4 ) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER PIEUP-SIOS
441    if isLetter('\16#0fffc;') <> FALSE then writeln("isLetter( # fffc ) incorrect"); success := FALSE; end if; # OBJECT REPLACEMENT CHARACTER
442    if isLetter('\16#10000;') <> TRUE  then writeln("isLetter( #10000 ) incorrect"); success := FALSE; end if; # LINEAR B SYLLABLE B008 A
443    if isLetter('\16#10020;') <> TRUE  then writeln("isLetter( #10020 ) incorrect"); success := FALSE; end if; # LINEAR B SYLLABLE B039 PI
444    if isLetter('\16#10040;') <> TRUE  then writeln("isLetter( #10040 ) incorrect"); success := FALSE; end if; # LINEAR B SYLLABLE B025 A2
445    if isLetter('\16#10080;') <> TRUE  then writeln("isLetter( #10080 ) incorrect"); success := FALSE; end if; # LINEAR B IDEOGRAM B100 MAN
446    if isLetter('\16#100a0;') <> TRUE  then writeln("isLetter( #100a0 ) incorrect"); success := FALSE; end if; # LINEAR B IDEOGRAM B151 HORN
447    if isLetter('\16#100c0;') <> TRUE  then writeln("isLetter( #100c0 ) incorrect"); success := FALSE; end if; # LINEAR B IDEOGRAM B185
448    if isLetter('\16#100e0;') <> TRUE  then writeln("isLetter( #100e0 ) incorrect"); success := FALSE; end if; # LINEAR B IDEOGRAM VESSEL B201
449    if isLetter('\16#10100;') <> FALSE then writeln("isLetter( #10100 ) incorrect"); success := FALSE; end if; # AEGEAN WORD SEPARATOR LINE
450    if isLetter('\16#10110;') <> FALSE then writeln("isLetter( #10110 ) incorrect"); success := FALSE; end if; # AEGEAN NUMBER TEN
451    if isLetter('\16#10120;') <> FALSE then writeln("isLetter( #10120 ) incorrect"); success := FALSE; end if; # AEGEAN NUMBER EIGHT HUNDRED
452    if isLetter('\16#10130;') <> FALSE then writeln("isLetter( #10130 ) incorrect"); success := FALSE; end if; # AEGEAN NUMBER SIXTY THOUSAND
453    if isLetter('\16#1017c;') <> FALSE then writeln("isLetter( #1017c ) incorrect"); success := FALSE; end if; # GREEK OBOL SIGN
454    if isLetter('\16#10190;') <> FALSE then writeln("isLetter( #10190 ) incorrect"); success := FALSE; end if; # ROMAN SEXTANS SIGN
455    if isLetter('\16#101d0;') <> FALSE then writeln("isLetter( #101d0 ) incorrect"); success := FALSE; end if; # PHAISTOS DISC SIGN PEDESTRIAN
456    if isLetter('\16#101dc;') <> FALSE then writeln("isLetter( #101dc ) incorrect"); success := FALSE; end if; # PHAISTOS DISC SIGN CLUB
457    if isLetter('\16#101e8;') <> FALSE then writeln("isLetter( #101e8 ) incorrect"); success := FALSE; end if; # PHAISTOS DISC SIGN SHIP
458    if isLetter('\16#101f4;') <> FALSE then writeln("isLetter( #101f4 ) incorrect"); success := FALSE; end if; # PHAISTOS DISC SIGN PAPYRUS
459    if isLetter('\16#10300;') <> TRUE  then writeln("isLetter( #10300 ) incorrect"); success := FALSE; end if; # OLD ITALIC LETTER A
460    if isLetter('\16#1030c;') <> TRUE  then writeln("isLetter( #1030c ) incorrect"); success := FALSE; end if; # OLD ITALIC LETTER EM
461    if isLetter('\16#10318;') <> TRUE  then writeln("isLetter( #10318 ) incorrect"); success := FALSE; end if; # OLD ITALIC LETTER PHE
462    if isLetter('\16#10330;') <> TRUE  then writeln("isLetter( #10330 ) incorrect"); success := FALSE; end if; # GOTHIC LETTER AHSA
463    if isLetter('\16#10338;') <> TRUE  then writeln("isLetter( #10338 ) incorrect"); success := FALSE; end if; # GOTHIC LETTER THIUTH
464    if isLetter('\16#10340;') <> TRUE  then writeln("isLetter( #10340 ) incorrect"); success := FALSE; end if; # GOTHIC LETTER PAIRTHRA
465    if isLetter('\16#10348;') <> TRUE  then writeln("isLetter( #10348 ) incorrect"); success := FALSE; end if; # GOTHIC LETTER HWAIR
466    if isLetter('\16#10380;') <> TRUE  then writeln("isLetter( #10380 ) incorrect"); success := FALSE; end if; # UGARITIC LETTER ALPA
467    if isLetter('\16#10388;') <> TRUE  then writeln("isLetter( #10388 ) incorrect"); success := FALSE; end if; # UGARITIC LETTER HOTA
468    if isLetter('\16#10390;') <> TRUE  then writeln("isLetter( #10390 ) incorrect"); success := FALSE; end if; # UGARITIC LETTER NUN
469    if isLetter('\16#10398;') <> TRUE  then writeln("isLetter( #10398 ) incorrect"); success := FALSE; end if; # UGARITIC LETTER THANNA
470    if isLetter('\16#103d0;') <> FALSE then writeln("isLetter( #103d0 ) incorrect"); success := FALSE; end if; # OLD PERSIAN WORD DIVIDER
471    if isLetter('\16#10400;') <> TRUE  then writeln("isLetter( #10400 ) incorrect"); success := FALSE; end if; # DESERET CAPITAL LETTER LONG I
472    if isLetter('\16#10414;') <> TRUE  then writeln("isLetter( #10414 ) incorrect"); success := FALSE; end if; # DESERET CAPITAL LETTER DEE
473    if isLetter('\16#10428;') <> TRUE  then writeln("isLetter( #10428 ) incorrect"); success := FALSE; end if; # DESERET SMALL LETTER LONG I
474    if isLetter('\16#1043c;') <> TRUE  then writeln("isLetter( #1043c ) incorrect"); success := FALSE; end if; # DESERET SMALL LETTER DEE
475    if isLetter('\16#10450;') <> TRUE  then writeln("isLetter( #10450 ) incorrect"); success := FALSE; end if; # SHAVIAN LETTER PEEP
476    if isLetter('\16#1045c;') <> TRUE  then writeln("isLetter( #1045c ) incorrect"); success := FALSE; end if; # SHAVIAN LETTER GAG
477    if isLetter('\16#10468;') <> TRUE  then writeln("isLetter( #10468 ) incorrect"); success := FALSE; end if; # SHAVIAN LETTER ASH
478    if isLetter('\16#10474;') <> TRUE  then writeln("isLetter( #10474 ) incorrect"); success := FALSE; end if; # SHAVIAN LETTER OAK
479    if isLetter('\16#10480;') <> TRUE  then writeln("isLetter( #10480 ) incorrect"); success := FALSE; end if; # OSMANYA LETTER ALEF
480    if isLetter('\16#1048c;') <> TRUE  then writeln("isLetter( #1048c ) incorrect"); success := FALSE; end if; # OSMANYA LETTER GA
481    if isLetter('\16#10498;') <> TRUE  then writeln("isLetter( #10498 ) incorrect"); success := FALSE; end if; # OSMANYA LETTER I
482    if isLetter('\16#104a4;') <> FALSE then writeln("isLetter( #104a4 ) incorrect"); success := FALSE; end if; # OSMANYA DIGIT FOUR
483    if isLetter('\16#10800;') <> TRUE  then writeln("isLetter( #10800 ) incorrect"); success := FALSE; end if; # CYPRIOT SYLLABLE A
484    if isLetter('\16#10810;') <> TRUE  then writeln("isLetter( #10810 ) incorrect"); success := FALSE; end if; # CYPRIOT SYLLABLE LE
485    if isLetter('\16#10820;') <> TRUE  then writeln("isLetter( #10820 ) incorrect"); success := FALSE; end if; # CYPRIOT SYLLABLE PI
486    if isLetter('\16#10830;') <> TRUE  then writeln("isLetter( #10830 ) incorrect"); success := FALSE; end if; # CYPRIOT SYLLABLE TO
487    if isLetter('\16#10858;') <> FALSE then writeln("isLetter( #10858 ) incorrect"); success := FALSE; end if; # IMPERIAL ARAMAIC NUMBER ONE
488    if isLetter('\16#10918;') <> FALSE then writeln("isLetter( #10918 ) incorrect"); success := FALSE; end if; # PHOENICIAN NUMBER TWENTY
489    if isLetter('\16#10b78;') <> FALSE then writeln("isLetter( #10b78 ) incorrect"); success := FALSE; end if; # INSCRIPTIONAL PAHLAVI NUMBER ONE
490    if isLetter('\16#10e60;') <> FALSE then writeln("isLetter( #10e60 ) incorrect"); success := FALSE; end if; # RUMI DIGIT ONE
491    if isLetter('\16#10e68;') <> FALSE then writeln("isLetter( #10e68 ) incorrect"); success := FALSE; end if; # RUMI DIGIT NINE
492    if isLetter('\16#10e70;') <> FALSE then writeln("isLetter( #10e70 ) incorrect"); success := FALSE; end if; # RUMI NUMBER EIGHTY
493    if isLetter('\16#10e78;') <> FALSE then writeln("isLetter( #10e78 ) incorrect"); success := FALSE; end if; # RUMI NUMBER SEVEN HUNDRED
494    if isLetter('\16#11060;') <> FALSE then writeln("isLetter( #11060 ) incorrect"); success := FALSE; end if; # BRAHMI NUMBER SIXTY
495    if isLetter('\16#11080;') <> FALSE then writeln("isLetter( #11080 ) incorrect"); success := FALSE; end if; # KAITHI SIGN CANDRABINDU
496    if isLetter('\16#110bc;') <> FALSE then writeln("isLetter( #110bc ) incorrect"); success := FALSE; end if; # KAITHI ENUMERATION SIGN
497    if isLetter('\16#1d000;') <> FALSE then writeln("isLetter( #1d000 ) incorrect"); success := FALSE; end if; # BYZANTINE MUSICAL SYMBOL PSILI
498    if isLetter('\16#1d040;') <> FALSE then writeln("isLetter( #1d040 ) incorrect"); success := FALSE; end if; # BYZANTINE MUSICAL SYMBOL NANA
499    if isLetter('\16#1d080;') <> FALSE then writeln("isLetter( #1d080 ) incorrect"); success := FALSE; end if; # BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION
500    if isLetter('\16#1d0c0;') <> FALSE then writeln("isLetter( #1d0c0 ) incorrect"); success := FALSE; end if; # BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO
501    if isLetter('\16#1d100;') <> FALSE then writeln("isLetter( #1d100 ) incorrect"); success := FALSE; end if; # MUSICAL SYMBOL SINGLE BARLINE
502    if isLetter('\16#1d140;') <> FALSE then writeln("isLetter( #1d140 ) incorrect"); success := FALSE; end if; # MUSICAL SYMBOL THIRTY-SECOND REST
503    if isLetter('\16#1d180;') <> FALSE then writeln("isLetter( #1d180 ) incorrect"); success := FALSE; end if; # MUSICAL SYMBOL COMBINING MARCATO-STACCATO
504    if isLetter('\16#1d1c0;') <> FALSE then writeln("isLetter( #1d1c0 ) incorrect"); success := FALSE; end if; # MUSICAL SYMBOL FUSA BLACK
505    if isLetter('\16#1d200;') <> FALSE then writeln("isLetter( #1d200 ) incorrect"); success := FALSE; end if; # GREEK VOCAL NOTATION SYMBOL-1
506    if isLetter('\16#1d214;') <> FALSE then writeln("isLetter( #1d214 ) incorrect"); success := FALSE; end if; # GREEK VOCAL NOTATION SYMBOL-21
507    if isLetter('\16#1d228;') <> FALSE then writeln("isLetter( #1d228 ) incorrect"); success := FALSE; end if; # GREEK INSTRUMENTAL NOTATION SYMBOL-18
508    if isLetter('\16#1d23c;') <> FALSE then writeln("isLetter( #1d23c ) incorrect"); success := FALSE; end if; # GREEK INSTRUMENTAL NOTATION SYMBOL-49
509    if isLetter('\16#1d300;') <> FALSE then writeln("isLetter( #1d300 ) incorrect"); success := FALSE; end if; # MONOGRAM FOR EARTH
510    if isLetter('\16#1d318;') <> FALSE then writeln("isLetter( #1d318 ) incorrect"); success := FALSE; end if; # TETRAGRAM FOR FOLLOWING
511    if isLetter('\16#1d330;') <> FALSE then writeln("isLetter( #1d330 ) incorrect"); success := FALSE; end if; # TETRAGRAM FOR ENCOUNTERS
512    if isLetter('\16#1d348;') <> FALSE then writeln("isLetter( #1d348 ) incorrect"); success := FALSE; end if; # TETRAGRAM FOR DARKENING
513    if isLetter('\16#1d360;') <> FALSE then writeln("isLetter( #1d360 ) incorrect"); success := FALSE; end if; # COUNTING ROD UNIT DIGIT ONE
514    if isLetter('\16#1d368;') <> FALSE then writeln("isLetter( #1d368 ) incorrect"); success := FALSE; end if; # COUNTING ROD UNIT DIGIT NINE
515    if isLetter('\16#1d370;') <> FALSE then writeln("isLetter( #1d370 ) incorrect"); success := FALSE; end if; # COUNTING ROD TENS DIGIT EIGHT
516    if isLetter('\16#1d400;') <> TRUE  then writeln("isLetter( #1d400 ) incorrect"); success := FALSE; end if; # MATHEMATICAL BOLD CAPITAL A
517    if isLetter('\16#1d500;') <> TRUE  then writeln("isLetter( #1d500 ) incorrect"); success := FALSE; end if; # MATHEMATICAL BOLD SCRIPT SMALL W
518    if isLetter('\16#1d600;') <> TRUE  then writeln("isLetter( #1d600 ) incorrect"); success := FALSE; end if; # MATHEMATICAL SANS-SERIF BOLD SMALL S
519    if isLetter('\16#1d700;') <> TRUE  then writeln("isLetter( #1d700 ) incorrect"); success := FALSE; end if; # MATHEMATICAL ITALIC SMALL EPSILON
520    if isLetter('\16#1f000;') <> FALSE then writeln("isLetter( #1f000 ) incorrect"); success := FALSE; end if; # MAHJONG TILE EAST WIND
521    if isLetter('\16#1f00c;') <> FALSE then writeln("isLetter( #1f00c ) incorrect"); success := FALSE; end if; # MAHJONG TILE SIX OF CHARACTERS
522    if isLetter('\16#1f018;') <> FALSE then writeln("isLetter( #1f018 ) incorrect"); success := FALSE; end if; # MAHJONG TILE NINE OF BAMBOOS
523    if isLetter('\16#1f024;') <> FALSE then writeln("isLetter( #1f024 ) incorrect"); success := FALSE; end if; # MAHJONG TILE BAMBOO
524    if isLetter('\16#1f030;') <> FALSE then writeln("isLetter( #1f030 ) incorrect"); success := FALSE; end if; # DOMINO TILE HORIZONTAL BACK
525    if isLetter('\16#1f04c;') <> FALSE then writeln("isLetter( #1f04c ) incorrect"); success := FALSE; end if; # DOMINO TILE HORIZONTAL-03-06
526    if isLetter('\16#1f068;') <> FALSE then writeln("isLetter( #1f068 ) incorrect"); success := FALSE; end if; # DOMINO TILE VERTICAL-00-05
527    if isLetter('\16#1f084;') <> FALSE then writeln("isLetter( #1f084 ) incorrect"); success := FALSE; end if; # DOMINO TILE VERTICAL-04-05
528    if isLetter('\16#1f0a0;') <> FALSE then writeln("isLetter( #1f0a0 ) incorrect"); success := FALSE; end if; # PLAYING CARD BACK
529    if isLetter('\16#1f0b8;') <> FALSE then writeln("isLetter( #1f0b8 ) incorrect"); success := FALSE; end if; # PLAYING CARD EIGHT OF HEARTS
530    if isLetter('\16#1f100;') <> FALSE then writeln("isLetter( #1f100 ) incorrect"); success := FALSE; end if; # DIGIT ZERO FULL STOP
531    if isLetter('\16#1f140;') <> FALSE then writeln("isLetter( #1f140 ) incorrect"); success := FALSE; end if; # SQUARED LATIN CAPITAL LETTER Q
532    if isLetter('\16#1f180;') <> FALSE then writeln("isLetter( #1f180 ) incorrect"); success := FALSE; end if; # NEGATIVE SQUARED LATIN CAPITAL LETTER Q
533    if isLetter('\16#1f200;') <> FALSE then writeln("isLetter( #1f200 ) incorrect"); success := FALSE; end if; # SQUARE HIRAGANA HOKA
534    if isLetter('\16#1f240;') <> FALSE then writeln("isLetter( #1f240 ) incorrect"); success := FALSE; end if; # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
535    if isLetter('\16#1f300;') <> FALSE then writeln("isLetter( #1f300 ) incorrect"); success := FALSE; end if; # CYCLONE
536    if isLetter('\16#1f3c0;') <> FALSE then writeln("isLetter( #1f3c0 ) incorrect"); success := FALSE; end if; # BASKETBALL AND HOOP
537    if isLetter('\16#1f480;') <> FALSE then writeln("isLetter( #1f480 ) incorrect"); success := FALSE; end if; # SKULL
538    if isLetter('\16#1f614;') <> FALSE then writeln("isLetter( #1f614 ) incorrect"); success := FALSE; end if; # PENSIVE FACE
539    if isLetter('\16#1f628;') <> FALSE then writeln("isLetter( #1f628 ) incorrect"); success := FALSE; end if; # FEARFUL FACE
540    if isLetter('\16#1f63c;') <> FALSE then writeln("isLetter( #1f63c ) incorrect"); success := FALSE; end if; # CAT FACE WITH WRY SMILE
541    if isLetter('\16#1f680;') <> FALSE then writeln("isLetter( #1f680 ) incorrect"); success := FALSE; end if; # ROCKET
542    if isLetter('\16#1f6a0;') <> FALSE then writeln("isLetter( #1f6a0 ) incorrect"); success := FALSE; end if; # MOUNTAIN CABLEWAY
543    if isLetter('\16#1f6c0;') <> FALSE then writeln("isLetter( #1f6c0 ) incorrect"); success := FALSE; end if; # BATH
544    if isLetter('\16#1f700;') <> FALSE then writeln("isLetter( #1f700 ) incorrect"); success := FALSE; end if; # ALCHEMICAL SYMBOL FOR QUINTESSENCE
545    if isLetter('\16#1f720;') <> FALSE then writeln("isLetter( #1f720 ) incorrect"); success := FALSE; end if; # ALCHEMICAL SYMBOL FOR COPPER ORE
546    if isLetter('\16#1f740;') <> FALSE then writeln("isLetter( #1f740 ) incorrect"); success := FALSE; end if; # ALCHEMICAL SYMBOL FOR TARTAR-2
547    if isLetter('\16#1f760;') <> FALSE then writeln("isLetter( #1f760 ) incorrect"); success := FALSE; end if; # ALCHEMICAL SYMBOL FOR DISTILL
548    if isLetter('\16#20000;') <> TRUE  then writeln("isLetter( #20000 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-20000
549    if isLetter('\16#229b8;') <> TRUE  then writeln("isLetter( #229b8 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-229B8
550    if isLetter('\16#25370;') <> TRUE  then writeln("isLetter( #25370 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-25370
551    if isLetter('\16#27d28;') <> TRUE  then writeln("isLetter( #27d28 ) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-27D28
552    if isLetter('\16#2f800;') <> TRUE  then writeln("isLetter( #2f800 ) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-2F800
553    if isLetter('\16#2f888;') <> TRUE  then writeln("isLetter( #2f888 ) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-2F888
554    if isLetter('\16#2f910;') <> TRUE  then writeln("isLetter( #2f910 ) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-2F910
555    if isLetter('\16#2f998;') <> TRUE  then writeln("isLetter( #2f998 ) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-2F998
556    if isLetter('\16#e0020;') <> FALSE then writeln("isLetter( #e0020 ) incorrect"); success := FALSE; end if; # TAG SPACE
557    if isLetter('\16#e0040;') <> FALSE then writeln("isLetter( #e0040 ) incorrect"); success := FALSE; end if; # TAG COMMERCIAL AT
558    if isLetter('\16#e0060;') <> FALSE then writeln("isLetter( #e0060 ) incorrect"); success := FALSE; end if; # TAG GRAVE ACCENT
559    if isLetter('\16#e0100;') <> FALSE then writeln("isLetter( #e0100 ) incorrect"); success := FALSE; end if; # VARIATION SELECTOR-17
560    if isLetter('\16#e013c;') <> FALSE then writeln("isLetter( #e013c ) incorrect"); success := FALSE; end if; # VARIATION SELECTOR-77
561    if success then
562      writeln("isLetter function works correctly.");
563    end if;
564  end func;
565
566
567const proc: check_width is func
568  local
569    var boolean: success is TRUE;
570  begin
571    if width('\16#00021;') <> 1 then writeln("width(#   21) incorrect"); success := FALSE; end if; # EXCLAMATION MARK
572    if width('\16#00050;') <> 1 then writeln("width(#   50) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER P
573    if width('\16#0007f;') <> 0 then writeln("width(#   7f) incorrect"); success := FALSE; end if; # DELETE
574    if width('\16#00090;') <> 0 then writeln("width(#   90) incorrect"); success := FALSE; end if; # DEVICE CONTROL STRING
575    if width('\16#000a1;') <> 1 then writeln("width(#   a1) incorrect"); success := FALSE; end if; # INVERTED EXCLAMATION MARK
576    if width('\16#000a2;') <> 1 then writeln("width(#   a2) incorrect"); success := FALSE; end if; # CENT SIGN
577    if width('\16#000a3;') <> 1 then writeln("width(#   a3) incorrect"); success := FALSE; end if; # POUND SIGN
578    if width('\16#000a4;') <> 1 then writeln("width(#   a4) incorrect"); success := FALSE; end if; # CURRENCY SIGN
579    if width('\16#000a5;') <> 1 then writeln("width(#   a5) incorrect"); success := FALSE; end if; # YEN SIGN
580    if width('\16#000a6;') <> 1 then writeln("width(#   a6) incorrect"); success := FALSE; end if; # BROKEN BAR
581    if width('\16#000a7;') <> 1 then writeln("width(#   a7) incorrect"); success := FALSE; end if; # SECTION SIGN
582    if width('\16#000a9;') <> 1 then writeln("width(#   a9) incorrect"); success := FALSE; end if; # COPYRIGHT SIGN
583    if width('\16#000aa;') <> 1 then writeln("width(#   aa) incorrect"); success := FALSE; end if; # FEMININE ORDINAL INDICATOR
584    if width('\16#000ab;') <> 1 then writeln("width(#   ab) incorrect"); success := FALSE; end if; # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
585    if width('\16#000ac;') <> 1 then writeln("width(#   ac) incorrect"); success := FALSE; end if; # NOT SIGN
586    if width('\16#000ae;') <> 1 then writeln("width(#   ae) incorrect"); success := FALSE; end if; # REGISTERED SIGN
587    if width('\16#000b0;') <> 1 then writeln("width(#   b0) incorrect"); success := FALSE; end if; # DEGREE SIGN
588    if width('\16#000b2;') <> 1 then writeln("width(#   b2) incorrect"); success := FALSE; end if; # SUPERSCRIPT TWO
589    if width('\16#000b5;') <> 1 then writeln("width(#   b5) incorrect"); success := FALSE; end if; # MICRO SIGN
590    if width('\16#000b6;') <> 1 then writeln("width(#   b6) incorrect"); success := FALSE; end if; # PILCROW SIGN
591    if width('\16#000bb;') <> 1 then writeln("width(#   bb) incorrect"); success := FALSE; end if; # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
592    if width('\16#000bc;') <> 1 then writeln("width(#   bc) incorrect"); success := FALSE; end if; # VULGAR FRACTION ONE QUARTER
593    if width('\16#000be;') <> 1 then writeln("width(#   be) incorrect"); success := FALSE; end if; # VULGAR FRACTION THREE QUARTERS
594    if width('\16#000c0;') <> 1 then writeln("width(#   c0) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER A WITH GRAVE
595    if width('\16#000c3;') <> 1 then writeln("width(#   c3) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER A WITH TILDE
596    if width('\16#000c6;') <> 1 then writeln("width(#   c6) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER AE
597    if width('\16#000c7;') <> 1 then writeln("width(#   c7) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER C WITH CEDILLA
598    if width('\16#000cb;') <> 1 then writeln("width(#   cb) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER E WITH DIAERESIS
599    if width('\16#000d0;') <> 1 then writeln("width(#   d0) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER ETH
600    if width('\16#000d1;') <> 1 then writeln("width(#   d1) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER N WITH TILDE
601    if width('\16#000d4;') <> 1 then writeln("width(#   d4) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
602    if width('\16#000d7;') <> 1 then writeln("width(#   d7) incorrect"); success := FALSE; end if; # MULTIPLICATION SIGN
603    if width('\16#000d8;') <> 1 then writeln("width(#   d8) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER O WITH STROKE
604    if width('\16#000d9;') <> 1 then writeln("width(#   d9) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH GRAVE
605    if width('\16#000db;') <> 1 then writeln("width(#   db) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
606    if width('\16#000de;') <> 1 then writeln("width(#   de) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER THORN
607    if width('\16#000e0;') <> 1 then writeln("width(#   e0) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER A WITH GRAVE
608    if width('\16#000e2;') <> 1 then writeln("width(#   e2) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER A WITH CIRCUMFLEX
609    if width('\16#000e4;') <> 1 then writeln("width(#   e4) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER A WITH DIAERESIS
610    if width('\16#000e6;') <> 1 then writeln("width(#   e6) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER AE
611    if width('\16#000e7;') <> 1 then writeln("width(#   e7) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER C WITH CEDILLA
612    if width('\16#000e8;') <> 1 then writeln("width(#   e8) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER E WITH GRAVE
613    if width('\16#000e9;') <> 1 then writeln("width(#   e9) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER E WITH ACUTE
614    if width('\16#000eb;') <> 1 then writeln("width(#   eb) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER E WITH DIAERESIS
615    if width('\16#000ec;') <> 1 then writeln("width(#   ec) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER I WITH GRAVE
616    if width('\16#000ed;') <> 1 then writeln("width(#   ed) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER I WITH ACUTE
617    if width('\16#000ee;') <> 1 then writeln("width(#   ee) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER I WITH CIRCUMFLEX
618    if width('\16#000ef;') <> 1 then writeln("width(#   ef) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER I WITH DIAERESIS
619    if width('\16#000f0;') <> 1 then writeln("width(#   f0) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER ETH
620    if width('\16#000f1;') <> 1 then writeln("width(#   f1) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER N WITH TILDE
621    if width('\16#000f2;') <> 1 then writeln("width(#   f2) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER O WITH GRAVE
622    if width('\16#000f3;') <> 1 then writeln("width(#   f3) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER O WITH ACUTE
623    if width('\16#000f4;') <> 1 then writeln("width(#   f4) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER O WITH CIRCUMFLEX
624    if width('\16#000f5;') <> 1 then writeln("width(#   f5) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER O WITH TILDE
625    if width('\16#000f7;') <> 1 then writeln("width(#   f7) incorrect"); success := FALSE; end if; # DIVISION SIGN
626    if width('\16#000f9;') <> 1 then writeln("width(#   f9) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH GRAVE
627    if width('\16#000fb;') <> 1 then writeln("width(#   fb) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH CIRCUMFLEX
628    if width('\16#000fc;') <> 1 then writeln("width(#   fc) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH DIAERESIS
629    if width('\16#000fd;') <> 1 then writeln("width(#   fd) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER Y WITH ACUTE
630    if width('\16#000fe;') <> 1 then writeln("width(#   fe) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER THORN
631    if width('\16#000ff;') <> 1 then writeln("width(#   ff) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER Y WITH DIAERESIS
632    if width('\16#00100;') <> 1 then writeln("width(#  100) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER A WITH MACRON
633    if width('\16#00101;') <> 1 then writeln("width(#  101) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER A WITH MACRON
634    if width('\16#00102;') <> 1 then writeln("width(#  102) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER A WITH BREVE
635    if width('\16#00109;') <> 1 then writeln("width(#  109) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER C WITH CIRCUMFLEX
636    if width('\16#00111;') <> 1 then writeln("width(#  111) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER D WITH STROKE
637    if width('\16#00112;') <> 1 then writeln("width(#  112) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER E WITH MACRON
638    if width('\16#00113;') <> 1 then writeln("width(#  113) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER E WITH MACRON
639    if width('\16#00114;') <> 1 then writeln("width(#  114) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER E WITH BREVE
640    if width('\16#00117;') <> 1 then writeln("width(#  117) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER E WITH DOT ABOVE
641    if width('\16#0011b;') <> 1 then writeln("width(#  11b) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER E WITH CARON
642    if width('\16#0011c;') <> 1 then writeln("width(#  11c) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER G WITH CIRCUMFLEX
643    if width('\16#00121;') <> 1 then writeln("width(#  121) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER G WITH DOT ABOVE
644    if width('\16#00126;') <> 1 then writeln("width(#  126) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER H WITH STROKE
645    if width('\16#00127;') <> 1 then writeln("width(#  127) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER H WITH STROKE
646    if width('\16#00128;') <> 1 then writeln("width(#  128) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER I WITH TILDE
647    if width('\16#00129;') <> 1 then writeln("width(#  129) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER I WITH TILDE
648    if width('\16#0012b;') <> 1 then writeln("width(#  12b) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER I WITH MACRON
649    if width('\16#0012c;') <> 1 then writeln("width(#  12c) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER I WITH BREVE
650    if width('\16#0012e;') <> 1 then writeln("width(#  12e) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER I WITH OGONEK
651    if width('\16#00131;') <> 1 then writeln("width(#  131) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER DOTLESS I
652    if width('\16#00132;') <> 1 then writeln("width(#  132) incorrect"); success := FALSE; end if; # LATIN CAPITAL LIGATURE IJ
653    if width('\16#00134;') <> 1 then writeln("width(#  134) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER J WITH CIRCUMFLEX
654    if width('\16#00136;') <> 1 then writeln("width(#  136) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER K WITH CEDILLA
655    if width('\16#00138;') <> 1 then writeln("width(#  138) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER KRA
656    if width('\16#00139;') <> 1 then writeln("width(#  139) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER L WITH ACUTE
657    if width('\16#0013c;') <> 1 then writeln("width(#  13c) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER L WITH CEDILLA
658    if width('\16#0013f;') <> 1 then writeln("width(#  13f) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER L WITH MIDDLE DOT
659    if width('\16#00141;') <> 1 then writeln("width(#  141) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER L WITH STROKE
660    if width('\16#00143;') <> 1 then writeln("width(#  143) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER N WITH ACUTE
661    if width('\16#00144;') <> 1 then writeln("width(#  144) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER N WITH ACUTE
662    if width('\16#00145;') <> 1 then writeln("width(#  145) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER N WITH CEDILLA
663    if width('\16#00146;') <> 1 then writeln("width(#  146) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER N WITH CEDILLA
664    if width('\16#00148;') <> 1 then writeln("width(#  148) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER N WITH CARON
665    if width('\16#0014a;') <> 1 then writeln("width(#  14a) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER ENG
666    if width('\16#0014c;') <> 1 then writeln("width(#  14c) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER O WITH MACRON
667    if width('\16#0014d;') <> 1 then writeln("width(#  14d) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER O WITH MACRON
668    if width('\16#0014e;') <> 1 then writeln("width(#  14e) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER O WITH BREVE
669    if width('\16#00150;') <> 1 then writeln("width(#  150) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
670    if width('\16#00152;') <> 1 then writeln("width(#  152) incorrect"); success := FALSE; end if; # LATIN CAPITAL LIGATURE OE
671    if width('\16#00153;') <> 1 then writeln("width(#  153) incorrect"); success := FALSE; end if; # LATIN SMALL LIGATURE OE
672    if width('\16#00154;') <> 1 then writeln("width(#  154) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER R WITH ACUTE
673    if width('\16#0015d;') <> 1 then writeln("width(#  15d) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER S WITH CIRCUMFLEX
674    if width('\16#00166;') <> 1 then writeln("width(#  166) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER T WITH STROKE
675    if width('\16#00167;') <> 1 then writeln("width(#  167) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER T WITH STROKE
676    if width('\16#00168;') <> 1 then writeln("width(#  168) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH TILDE
677    if width('\16#00169;') <> 1 then writeln("width(#  169) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH TILDE
678    if width('\16#0016b;') <> 1 then writeln("width(#  16b) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH MACRON
679    if width('\16#0016c;') <> 1 then writeln("width(#  16c) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH BREVE
680    if width('\16#0019d;') <> 1 then writeln("width(#  19d) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER N WITH LEFT HOOK
681    if width('\16#001ce;') <> 1 then writeln("width(#  1ce) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER A WITH CARON
682    if width('\16#001cf;') <> 1 then writeln("width(#  1cf) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER I WITH CARON
683    if width('\16#001d0;') <> 1 then writeln("width(#  1d0) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER I WITH CARON
684    if width('\16#001d1;') <> 1 then writeln("width(#  1d1) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER O WITH CARON
685    if width('\16#001d2;') <> 1 then writeln("width(#  1d2) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER O WITH CARON
686    if width('\16#001d3;') <> 1 then writeln("width(#  1d3) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH CARON
687    if width('\16#001d4;') <> 1 then writeln("width(#  1d4) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH CARON
688    if width('\16#001d5;') <> 1 then writeln("width(#  1d5) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
689    if width('\16#001d6;') <> 1 then writeln("width(#  1d6) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
690    if width('\16#001d7;') <> 1 then writeln("width(#  1d7) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
691    if width('\16#001d8;') <> 1 then writeln("width(#  1d8) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
692    if width('\16#001d9;') <> 1 then writeln("width(#  1d9) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
693    if width('\16#001da;') <> 1 then writeln("width(#  1da) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
694    if width('\16#001db;') <> 1 then writeln("width(#  1db) incorrect"); success := FALSE; end if; # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
695    if width('\16#001dc;') <> 1 then writeln("width(#  1dc) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
696    if width('\16#001dd;') <> 1 then writeln("width(#  1dd) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER TURNED E
697    if width('\16#00217;') <> 1 then writeln("width(#  217) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER U WITH INVERTED BREVE
698    if width('\16#00251;') <> 1 then writeln("width(#  251) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER ALPHA
699    if width('\16#00252;') <> 1 then writeln("width(#  252) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER TURNED ALPHA
700    if width('\16#00259;') <> 1 then writeln("width(#  259) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER SCHWA
701    if width('\16#00261;') <> 1 then writeln("width(#  261) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER SCRIPT G
702    if width('\16#00262;') <> 1 then writeln("width(#  262) incorrect"); success := FALSE; end if; # LATIN LETTER SMALL CAPITAL G
703    if width('\16#00293;') <> 1 then writeln("width(#  293) incorrect"); success := FALSE; end if; # LATIN SMALL LETTER EZH WITH CURL
704    if width('\16#00300;') <> 0 then writeln("width(#  300) incorrect"); success := FALSE; end if; # COMBINING GRAVE ACCENT
705    if width('\16#00338;') <> 0 then writeln("width(#  338) incorrect"); success := FALSE; end if; # COMBINING LONG SOLIDUS OVERLAY
706    if width('\16#00370;') <> 1 then writeln("width(#  370) incorrect"); success := FALSE; end if; # GREEK CAPITAL LETTER HETA
707    if width('\16#00380;') <> 1 then writeln("width(#  380) incorrect"); success := FALSE; end if; # <unassigned-0380>
708    if width('\16#00391;') <> 1 then writeln("width(#  391) incorrect"); success := FALSE; end if; # GREEK CAPITAL LETTER ALPHA
709    if width('\16#00399;') <> 1 then writeln("width(#  399) incorrect"); success := FALSE; end if; # GREEK CAPITAL LETTER IOTA
710    if width('\16#003a2;') <> 1 then writeln("width(#  3a2) incorrect"); success := FALSE; end if; # <unassigned-03A2>
711    if width('\16#003a3;') <> 1 then writeln("width(#  3a3) incorrect"); success := FALSE; end if; # GREEK CAPITAL LETTER SIGMA
712    if width('\16#003a6;') <> 1 then writeln("width(#  3a6) incorrect"); success := FALSE; end if; # GREEK CAPITAL LETTER PHI
713    if width('\16#003aa;') <> 1 then writeln("width(#  3aa) incorrect"); success := FALSE; end if; # GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
714    if width('\16#003ad;') <> 1 then writeln("width(#  3ad) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER EPSILON WITH TONOS
715    if width('\16#003b1;') <> 1 then writeln("width(#  3b1) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER ALPHA
716    if width('\16#003b9;') <> 1 then writeln("width(#  3b9) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER IOTA
717    if width('\16#003c2;') <> 1 then writeln("width(#  3c2) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER FINAL SIGMA
718    if width('\16#003c3;') <> 1 then writeln("width(#  3c3) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER SIGMA
719    if width('\16#003c6;') <> 1 then writeln("width(#  3c6) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER PHI
720    if width('\16#003ca;') <> 1 then writeln("width(#  3ca) incorrect"); success := FALSE; end if; # GREEK SMALL LETTER IOTA WITH DIALYTIKA
721    if width('\16#003e5;') <> 1 then writeln("width(#  3e5) incorrect"); success := FALSE; end if; # COPTIC SMALL LETTER FEI
722    if width('\16#00401;') <> 1 then writeln("width(#  401) incorrect"); success := FALSE; end if; # CYRILLIC CAPITAL LETTER IO
723    if width('\16#00402;') <> 1 then writeln("width(#  402) incorrect"); success := FALSE; end if; # CYRILLIC CAPITAL LETTER DJE
724    if width('\16#00409;') <> 1 then writeln("width(#  409) incorrect"); success := FALSE; end if; # CYRILLIC CAPITAL LETTER LJE
725    if width('\16#00410;') <> 1 then writeln("width(#  410) incorrect"); success := FALSE; end if; # CYRILLIC CAPITAL LETTER A
726    if width('\16#00430;') <> 1 then writeln("width(#  430) incorrect"); success := FALSE; end if; # CYRILLIC SMALL LETTER A
727    if width('\16#00450;') <> 1 then writeln("width(#  450) incorrect"); success := FALSE; end if; # CYRILLIC SMALL LETTER IE WITH GRAVE
728    if width('\16#00451;') <> 1 then writeln("width(#  451) incorrect"); success := FALSE; end if; # CYRILLIC SMALL LETTER IO
729    if width('\16#00452;') <> 1 then writeln("width(#  452) incorrect"); success := FALSE; end if; # CYRILLIC SMALL LETTER DJE
730    if width('\16#00aa9;') <> 1 then writeln("width(#  aa9) incorrect"); success := FALSE; end if; # <unassigned-0AA9>
731    if width('\16#01100;') <> 1 then writeln("width(# 1100) incorrect"); success := FALSE; end if; # HANGUL CHOSEONG KIYEOK
732    if width('\16#01130;') <> 2 then writeln("width(# 1130) incorrect"); success := FALSE; end if; # HANGUL CHOSEONG SIOS-RIEUL
733    if width('\16#01160;') <> 2 then writeln("width(# 1160) incorrect"); success := FALSE; end if; # HANGUL JUNGSEONG FILLER
734    if width('\16#01181;') <> 1 then writeln("width(# 1181) incorrect"); success := FALSE; end if; # HANGUL JUNGSEONG O-YE
735    if width('\16#011a3;') <> 1 then writeln("width(# 11a3) incorrect"); success := FALSE; end if; # HANGUL JUNGSEONG A-EU
736    if width('\16#011a5;') <> 1 then writeln("width(# 11a5) incorrect"); success := FALSE; end if; # HANGUL JUNGSEONG YEO-YA
737    if width('\16#011a8;') <> 1 then writeln("width(# 11a8) incorrect"); success := FALSE; end if; # HANGUL JONGSEONG KIYEOK
738    if width('\16#011d1;') <> 1 then writeln("width(# 11d1) incorrect"); success := FALSE; end if; # HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK
739    if width('\16#011fa;') <> 1 then writeln("width(# 11fa) incorrect"); success := FALSE; end if; # HANGUL JONGSEONG KIYEOK-NIEUN
740    if width('\16#011fd;') <> 1 then writeln("width(# 11fd) incorrect"); success := FALSE; end if; # HANGUL JONGSEONG KIYEOK-KHIEUKH
741    if width('\16#01200;') <> 1 then writeln("width(# 1200) incorrect"); success := FALSE; end if; # ETHIOPIC SYLLABLE HA
742    if width('\16#01908;') <> 1 then writeln("width(# 1908) incorrect"); success := FALSE; end if; # LIMBU LETTER JA
743    if width('\16#02010;') <> 1 then writeln("width(# 2010) incorrect"); success := FALSE; end if; # HYPHEN
744    if width('\16#02011;') <> 1 then writeln("width(# 2011) incorrect"); success := FALSE; end if; # NON-BREAKING HYPHEN
745    if width('\16#02012;') <> 1 then writeln("width(# 2012) incorrect"); success := FALSE; end if; # FIGURE DASH
746    if width('\16#02013;') <> 1 then writeln("width(# 2013) incorrect"); success := FALSE; end if; # EN DASH
747    if width('\16#02015;') <> 1 then writeln("width(# 2015) incorrect"); success := FALSE; end if; # HORIZONTAL BAR
748    if width('\16#02017;') <> 1 then writeln("width(# 2017) incorrect"); success := FALSE; end if; # DOUBLE LOW LINE
749    if width('\16#02018;') <> 1 then writeln("width(# 2018) incorrect"); success := FALSE; end if; # LEFT SINGLE QUOTATION MARK
750    if width('\16#02019;') <> 1 then writeln("width(# 2019) incorrect"); success := FALSE; end if; # RIGHT SINGLE QUOTATION MARK
751    if width('\16#0201a;') <> 1 then writeln("width(# 201a) incorrect"); success := FALSE; end if; # SINGLE LOW-9 QUOTATION MARK
752    if width('\16#0201b;') <> 1 then writeln("width(# 201b) incorrect"); success := FALSE; end if; # SINGLE HIGH-REVERSED-9 QUOTATION MARK
753    if width('\16#0201c;') <> 1 then writeln("width(# 201c) incorrect"); success := FALSE; end if; # LEFT DOUBLE QUOTATION MARK
754    if width('\16#0201d;') <> 1 then writeln("width(# 201d) incorrect"); success := FALSE; end if; # RIGHT DOUBLE QUOTATION MARK
755    if width('\16#0201e;') <> 1 then writeln("width(# 201e) incorrect"); success := FALSE; end if; # DOUBLE LOW-9 QUOTATION MARK
756    if width('\16#0201f;') <> 1 then writeln("width(# 201f) incorrect"); success := FALSE; end if; # DOUBLE HIGH-REVERSED-9 QUOTATION MARK
757    if width('\16#02020;') <> 1 then writeln("width(# 2020) incorrect"); success := FALSE; end if; # DAGGER
758    if width('\16#02021;') <> 1 then writeln("width(# 2021) incorrect"); success := FALSE; end if; # DOUBLE DAGGER
759    if width('\16#02023;') <> 1 then writeln("width(# 2023) incorrect"); success := FALSE; end if; # TRIANGULAR BULLET
760    if width('\16#02024;') <> 1 then writeln("width(# 2024) incorrect"); success := FALSE; end if; # ONE DOT LEADER
761    if width('\16#02026;') <> 1 then writeln("width(# 2026) incorrect"); success := FALSE; end if; # HORIZONTAL ELLIPSIS
762    if width('\16#02028;') <> 1 then writeln("width(# 2028) incorrect"); success := FALSE; end if; # LINE SEPARATOR
763    if width('\16#0202c;') <> 1 then writeln("width(# 202c) incorrect"); success := FALSE; end if; # POP DIRECTIONAL FORMATTING
764    if width('\16#02030;') <> 1 then writeln("width(# 2030) incorrect"); success := FALSE; end if; # PER MILLE SIGN
765    if width('\16#02031;') <> 1 then writeln("width(# 2031) incorrect"); success := FALSE; end if; # PER TEN THOUSAND SIGN
766    if width('\16#02032;') <> 1 then writeln("width(# 2032) incorrect"); success := FALSE; end if; # PRIME
767    if width('\16#02033;') <> 1 then writeln("width(# 2033) incorrect"); success := FALSE; end if; # DOUBLE PRIME
768    if width('\16#02034;') <> 1 then writeln("width(# 2034) incorrect"); success := FALSE; end if; # TRIPLE PRIME
769    if width('\16#02035;') <> 1 then writeln("width(# 2035) incorrect"); success := FALSE; end if; # REVERSED PRIME
770    if width('\16#02036;') <> 1 then writeln("width(# 2036) incorrect"); success := FALSE; end if; # REVERSED DOUBLE PRIME
771    if width('\16#02038;') <> 1 then writeln("width(# 2038) incorrect"); success := FALSE; end if; # CARET
772    if width('\16#0203b;') <> 1 then writeln("width(# 203b) incorrect"); success := FALSE; end if; # REFERENCE MARK
773    if width('\16#0203c;') <> 1 then writeln("width(# 203c) incorrect"); success := FALSE; end if; # DOUBLE EXCLAMATION MARK
774    if width('\16#0203d;') <> 1 then writeln("width(# 203d) incorrect"); success := FALSE; end if; # INTERROBANG
775    if width('\16#0203e;') <> 1 then writeln("width(# 203e) incorrect"); success := FALSE; end if; # OVERLINE
776    if width('\16#0203f;') <> 1 then writeln("width(# 203f) incorrect"); success := FALSE; end if; # UNDERTIE
777    if width('\16#02059;') <> 1 then writeln("width(# 2059) incorrect"); success := FALSE; end if; # FIVE DOT PUNCTUATION
778    if width('\16#02074;') <> 1 then writeln("width(# 2074) incorrect"); success := FALSE; end if; # SUPERSCRIPT FOUR
779    if width('\16#02075;') <> 1 then writeln("width(# 2075) incorrect"); success := FALSE; end if; # SUPERSCRIPT FIVE
780    if width('\16#0207a;') <> 1 then writeln("width(# 207a) incorrect"); success := FALSE; end if; # SUPERSCRIPT PLUS SIGN
781    if width('\16#0207f;') <> 1 then writeln("width(# 207f) incorrect"); success := FALSE; end if; # SUPERSCRIPT LATIN SMALL LETTER N
782    if width('\16#02080;') <> 1 then writeln("width(# 2080) incorrect"); success := FALSE; end if; # SUBSCRIPT ZERO
783    if width('\16#02081;') <> 1 then writeln("width(# 2081) incorrect"); success := FALSE; end if; # SUBSCRIPT ONE
784    if width('\16#02083;') <> 1 then writeln("width(# 2083) incorrect"); success := FALSE; end if; # SUBSCRIPT THREE
785    if width('\16#02085;') <> 1 then writeln("width(# 2085) incorrect"); success := FALSE; end if; # SUBSCRIPT FIVE
786    if width('\16#02097;') <> 1 then writeln("width(# 2097) incorrect"); success := FALSE; end if; # LATIN SUBSCRIPT SMALL LETTER L
787    if width('\16#020a9;') <> 1 then writeln("width(# 20a9) incorrect"); success := FALSE; end if; # WON SIGN
788    if width('\16#020aa;') <> 1 then writeln("width(# 20aa) incorrect"); success := FALSE; end if; # NEW SHEQEL SIGN
789    if width('\16#020ab;') <> 1 then writeln("width(# 20ab) incorrect"); success := FALSE; end if; # DONG SIGN
790    if width('\16#020ac;') <> 1 then writeln("width(# 20ac) incorrect"); success := FALSE; end if; # EURO SIGN
791    if width('\16#020ad;') <> 1 then writeln("width(# 20ad) incorrect"); success := FALSE; end if; # KIP SIGN
792    if width('\16#020d8;') <> 0 then writeln("width(# 20d8) incorrect"); success := FALSE; end if; # COMBINING RING OVERLAY
793    if width('\16#02103;') <> 1 then writeln("width(# 2103) incorrect"); success := FALSE; end if; # DEGREE CELSIUS
794    if width('\16#02104;') <> 1 then writeln("width(# 2104) incorrect"); success := FALSE; end if; # CENTRE LINE SYMBOL
795    if width('\16#02105;') <> 1 then writeln("width(# 2105) incorrect"); success := FALSE; end if; # CARE OF
796    if width('\16#02106;') <> 1 then writeln("width(# 2106) incorrect"); success := FALSE; end if; # CADA UNA
797    if width('\16#02107;') <> 1 then writeln("width(# 2107) incorrect"); success := FALSE; end if; # EULER CONSTANT
798    if width('\16#02109;') <> 1 then writeln("width(# 2109) incorrect"); success := FALSE; end if; # DEGREE FAHRENHEIT
799    if width('\16#0210a;') <> 1 then writeln("width(# 210a) incorrect"); success := FALSE; end if; # SCRIPT SMALL G
800    if width('\16#0210e;') <> 1 then writeln("width(# 210e) incorrect"); success := FALSE; end if; # PLANCK CONSTANT
801    if width('\16#02113;') <> 1 then writeln("width(# 2113) incorrect"); success := FALSE; end if; # SCRIPT SMALL L
802    if width('\16#02114;') <> 1 then writeln("width(# 2114) incorrect"); success := FALSE; end if; # L B BAR SYMBOL
803    if width('\16#02115;') <> 1 then writeln("width(# 2115) incorrect"); success := FALSE; end if; # DOUBLE-STRUCK CAPITAL N
804    if width('\16#02116;') <> 1 then writeln("width(# 2116) incorrect"); success := FALSE; end if; # NUMERO SIGN
805    if width('\16#02117;') <> 1 then writeln("width(# 2117) incorrect"); success := FALSE; end if; # SOUND RECORDING COPYRIGHT
806    if width('\16#0211c;') <> 1 then writeln("width(# 211c) incorrect"); success := FALSE; end if; # BLACK-LETTER CAPITAL R
807    if width('\16#02121;') <> 1 then writeln("width(# 2121) incorrect"); success := FALSE; end if; # TELEPHONE SIGN
808    if width('\16#02122;') <> 1 then writeln("width(# 2122) incorrect"); success := FALSE; end if; # TRADE MARK SIGN
809    if width('\16#02123;') <> 1 then writeln("width(# 2123) incorrect"); success := FALSE; end if; # VERSICLE
810    if width('\16#02124;') <> 1 then writeln("width(# 2124) incorrect"); success := FALSE; end if; # DOUBLE-STRUCK CAPITAL Z
811    if width('\16#02126;') <> 1 then writeln("width(# 2126) incorrect"); success := FALSE; end if; # OHM SIGN
812    if width('\16#02127;') <> 1 then writeln("width(# 2127) incorrect"); success := FALSE; end if; # INVERTED OHM SIGN
813    if width('\16#02129;') <> 1 then writeln("width(# 2129) incorrect"); success := FALSE; end if; # TURNED GREEK SMALL LETTER IOTA
814    if width('\16#0212b;') <> 1 then writeln("width(# 212b) incorrect"); success := FALSE; end if; # ANGSTROM SIGN
815    if width('\16#0212c;') <> 1 then writeln("width(# 212c) incorrect"); success := FALSE; end if; # SCRIPT CAPITAL B
816    if width('\16#0213f;') <> 1 then writeln("width(# 213f) incorrect"); success := FALSE; end if; # DOUBLE-STRUCK CAPITAL PI
817    if width('\16#02153;') <> 1 then writeln("width(# 2153) incorrect"); success := FALSE; end if; # VULGAR FRACTION ONE THIRD
818    if width('\16#02154;') <> 1 then writeln("width(# 2154) incorrect"); success := FALSE; end if; # VULGAR FRACTION TWO THIRDS
819    if width('\16#02155;') <> 1 then writeln("width(# 2155) incorrect"); success := FALSE; end if; # VULGAR FRACTION ONE FIFTH
820    if width('\16#02158;') <> 1 then writeln("width(# 2158) incorrect"); success := FALSE; end if; # VULGAR FRACTION FOUR FIFTHS
821    if width('\16#0215b;') <> 1 then writeln("width(# 215b) incorrect"); success := FALSE; end if; # VULGAR FRACTION ONE EIGHTH
822    if width('\16#0215d;') <> 1 then writeln("width(# 215d) incorrect"); success := FALSE; end if; # VULGAR FRACTION FIVE EIGHTHS
823    if width('\16#0215f;') <> 1 then writeln("width(# 215f) incorrect"); success := FALSE; end if; # FRACTION NUMERATOR ONE
824    if width('\16#02160;') <> 1 then writeln("width(# 2160) incorrect"); success := FALSE; end if; # ROMAN NUMERAL ONE
825    if width('\16#02166;') <> 1 then writeln("width(# 2166) incorrect"); success := FALSE; end if; # ROMAN NUMERAL SEVEN
826    if width('\16#0216c;') <> 1 then writeln("width(# 216c) incorrect"); success := FALSE; end if; # ROMAN NUMERAL FIFTY
827    if width('\16#0216e;') <> 1 then writeln("width(# 216e) incorrect"); success := FALSE; end if; # ROMAN NUMERAL FIVE HUNDRED
828    if width('\16#02170;') <> 1 then writeln("width(# 2170) incorrect"); success := FALSE; end if; # SMALL ROMAN NUMERAL ONE
829    if width('\16#02175;') <> 1 then writeln("width(# 2175) incorrect"); success := FALSE; end if; # SMALL ROMAN NUMERAL SIX
830    if width('\16#0217a;') <> 1 then writeln("width(# 217a) incorrect"); success := FALSE; end if; # SMALL ROMAN NUMERAL ELEVEN
831    if width('\16#02181;') <> 1 then writeln("width(# 2181) incorrect"); success := FALSE; end if; # ROMAN NUMERAL FIVE THOUSAND
832    if width('\16#02189;') <> 1 then writeln("width(# 2189) incorrect"); success := FALSE; end if; # VULGAR FRACTION ZERO THIRDS
833    if width('\16#0218a;') <> 1 then writeln("width(# 218a) incorrect"); success := FALSE; end if; # <unassigned-218A>
834    if width('\16#0218d;') <> 1 then writeln("width(# 218d) incorrect"); success := FALSE; end if; # <unassigned-218D>
835    if width('\16#02190;') <> 1 then writeln("width(# 2190) incorrect"); success := FALSE; end if; # LEFTWARDS ARROW
836    if width('\16#02195;') <> 1 then writeln("width(# 2195) incorrect"); success := FALSE; end if; # UP DOWN ARROW
837    if width('\16#0219a;') <> 1 then writeln("width(# 219a) incorrect"); success := FALSE; end if; # LEFTWARDS ARROW WITH STROKE
838    if width('\16#021a9;') <> 1 then writeln("width(# 21a9) incorrect"); success := FALSE; end if; # LEFTWARDS ARROW WITH HOOK
839    if width('\16#021b8;') <> 1 then writeln("width(# 21b8) incorrect"); success := FALSE; end if; # NORTH WEST ARROW TO LONG BAR
840    if width('\16#021b9;') <> 1 then writeln("width(# 21b9) incorrect"); success := FALSE; end if; # LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR
841    if width('\16#021ba;') <> 1 then writeln("width(# 21ba) incorrect"); success := FALSE; end if; # ANTICLOCKWISE OPEN CIRCLE ARROW
842    if width('\16#021c6;') <> 1 then writeln("width(# 21c6) incorrect"); success := FALSE; end if; # LEFTWARDS ARROW OVER RIGHTWARDS ARROW
843    if width('\16#021d2;') <> 1 then writeln("width(# 21d2) incorrect"); success := FALSE; end if; # RIGHTWARDS DOUBLE ARROW
844    if width('\16#021d3;') <> 1 then writeln("width(# 21d3) incorrect"); success := FALSE; end if; # DOWNWARDS DOUBLE ARROW
845    if width('\16#021d4;') <> 1 then writeln("width(# 21d4) incorrect"); success := FALSE; end if; # LEFT RIGHT DOUBLE ARROW
846    if width('\16#021d5;') <> 1 then writeln("width(# 21d5) incorrect"); success := FALSE; end if; # UP DOWN DOUBLE ARROW
847    if width('\16#021de;') <> 1 then writeln("width(# 21de) incorrect"); success := FALSE; end if; # UPWARDS ARROW WITH DOUBLE STROKE
848    if width('\16#021e7;') <> 1 then writeln("width(# 21e7) incorrect"); success := FALSE; end if; # UPWARDS WHITE ARROW
849    if width('\16#021e8;') <> 1 then writeln("width(# 21e8) incorrect"); success := FALSE; end if; # RIGHTWARDS WHITE ARROW
850    if width('\16#021f4;') <> 1 then writeln("width(# 21f4) incorrect"); success := FALSE; end if; # RIGHT ARROW WITH SMALL CIRCLE
851    if width('\16#02200;') <> 1 then writeln("width(# 2200) incorrect"); success := FALSE; end if; # FOR ALL
852    if width('\16#02201;') <> 1 then writeln("width(# 2201) incorrect"); success := FALSE; end if; # COMPLEMENT
853    if width('\16#02202;') <> 1 then writeln("width(# 2202) incorrect"); success := FALSE; end if; # PARTIAL DIFFERENTIAL
854    if width('\16#02203;') <> 1 then writeln("width(# 2203) incorrect"); success := FALSE; end if; # THERE EXISTS
855    if width('\16#02204;') <> 1 then writeln("width(# 2204) incorrect"); success := FALSE; end if; # THERE DOES NOT EXIST
856    if width('\16#02205;') <> 1 then writeln("width(# 2205) incorrect"); success := FALSE; end if; # EMPTY SET
857    if width('\16#02207;') <> 1 then writeln("width(# 2207) incorrect"); success := FALSE; end if; # NABLA
858    if width('\16#02208;') <> 1 then writeln("width(# 2208) incorrect"); success := FALSE; end if; # ELEMENT OF
859    if width('\16#02209;') <> 1 then writeln("width(# 2209) incorrect"); success := FALSE; end if; # NOT AN ELEMENT OF
860    if width('\16#0220a;') <> 1 then writeln("width(# 220a) incorrect"); success := FALSE; end if; # SMALL ELEMENT OF
861    if width('\16#0220b;') <> 1 then writeln("width(# 220b) incorrect"); success := FALSE; end if; # CONTAINS AS MEMBER
862    if width('\16#0220c;') <> 1 then writeln("width(# 220c) incorrect"); success := FALSE; end if; # DOES NOT CONTAIN AS MEMBER
863    if width('\16#0220d;') <> 1 then writeln("width(# 220d) incorrect"); success := FALSE; end if; # SMALL CONTAINS AS MEMBER
864    if width('\16#0220f;') <> 1 then writeln("width(# 220f) incorrect"); success := FALSE; end if; # N-ARY PRODUCT
865    if width('\16#02210;') <> 1 then writeln("width(# 2210) incorrect"); success := FALSE; end if; # N-ARY COPRODUCT
866    if width('\16#02211;') <> 1 then writeln("width(# 2211) incorrect"); success := FALSE; end if; # N-ARY SUMMATION
867    if width('\16#02212;') <> 1 then writeln("width(# 2212) incorrect"); success := FALSE; end if; # MINUS SIGN
868    if width('\16#02213;') <> 1 then writeln("width(# 2213) incorrect"); success := FALSE; end if; # MINUS-OR-PLUS SIGN
869    if width('\16#02215;') <> 1 then writeln("width(# 2215) incorrect"); success := FALSE; end if; # DIVISION SLASH
870    if width('\16#02216;') <> 1 then writeln("width(# 2216) incorrect"); success := FALSE; end if; # SET MINUS
871    if width('\16#02218;') <> 1 then writeln("width(# 2218) incorrect"); success := FALSE; end if; # RING OPERATOR
872    if width('\16#0221a;') <> 1 then writeln("width(# 221a) incorrect"); success := FALSE; end if; # SQUARE ROOT
873    if width('\16#0221b;') <> 1 then writeln("width(# 221b) incorrect"); success := FALSE; end if; # CUBE ROOT
874    if width('\16#0221c;') <> 1 then writeln("width(# 221c) incorrect"); success := FALSE; end if; # FOURTH ROOT
875    if width('\16#0221d;') <> 1 then writeln("width(# 221d) incorrect"); success := FALSE; end if; # PROPORTIONAL TO
876    if width('\16#0221f;') <> 1 then writeln("width(# 221f) incorrect"); success := FALSE; end if; # RIGHT ANGLE
877    if width('\16#02221;') <> 1 then writeln("width(# 2221) incorrect"); success := FALSE; end if; # MEASURED ANGLE
878    if width('\16#02222;') <> 1 then writeln("width(# 2222) incorrect"); success := FALSE; end if; # SPHERICAL ANGLE
879    if width('\16#02223;') <> 1 then writeln("width(# 2223) incorrect"); success := FALSE; end if; # DIVIDES
880    if width('\16#02224;') <> 1 then writeln("width(# 2224) incorrect"); success := FALSE; end if; # DOES NOT DIVIDE
881    if width('\16#02225;') <> 1 then writeln("width(# 2225) incorrect"); success := FALSE; end if; # PARALLEL TO
882    if width('\16#02226;') <> 1 then writeln("width(# 2226) incorrect"); success := FALSE; end if; # NOT PARALLEL TO
883    if width('\16#02227;') <> 1 then writeln("width(# 2227) incorrect"); success := FALSE; end if; # LOGICAL AND
884    if width('\16#0222a;') <> 1 then writeln("width(# 222a) incorrect"); success := FALSE; end if; # UNION
885    if width('\16#0222d;') <> 1 then writeln("width(# 222d) incorrect"); success := FALSE; end if; # TRIPLE INTEGRAL
886    if width('\16#0222e;') <> 1 then writeln("width(# 222e) incorrect"); success := FALSE; end if; # CONTOUR INTEGRAL
887    if width('\16#0222f;') <> 1 then writeln("width(# 222f) incorrect"); success := FALSE; end if; # SURFACE INTEGRAL
888    if width('\16#02231;') <> 1 then writeln("width(# 2231) incorrect"); success := FALSE; end if; # CLOCKWISE INTEGRAL
889    if width('\16#02234;') <> 1 then writeln("width(# 2234) incorrect"); success := FALSE; end if; # THEREFORE
890    if width('\16#02236;') <> 1 then writeln("width(# 2236) incorrect"); success := FALSE; end if; # RATIO
891    if width('\16#02238;') <> 1 then writeln("width(# 2238) incorrect"); success := FALSE; end if; # DOT MINUS
892    if width('\16#0223a;') <> 1 then writeln("width(# 223a) incorrect"); success := FALSE; end if; # GEOMETRIC PROPORTION
893    if width('\16#0223c;') <> 1 then writeln("width(# 223c) incorrect"); success := FALSE; end if; # TILDE OPERATOR
894    if width('\16#0223d;') <> 1 then writeln("width(# 223d) incorrect"); success := FALSE; end if; # REVERSED TILDE
895    if width('\16#0223e;') <> 1 then writeln("width(# 223e) incorrect"); success := FALSE; end if; # INVERTED LAZY S
896    if width('\16#02243;') <> 1 then writeln("width(# 2243) incorrect"); success := FALSE; end if; # ASYMPTOTICALLY EQUAL TO
897    if width('\16#02248;') <> 1 then writeln("width(# 2248) incorrect"); success := FALSE; end if; # ALMOST EQUAL TO
898    if width('\16#02249;') <> 1 then writeln("width(# 2249) incorrect"); success := FALSE; end if; # NOT ALMOST EQUAL TO
899    if width('\16#0224a;') <> 1 then writeln("width(# 224a) incorrect"); success := FALSE; end if; # ALMOST EQUAL OR EQUAL TO
900    if width('\16#0224c;') <> 1 then writeln("width(# 224c) incorrect"); success := FALSE; end if; # ALL EQUAL TO
901    if width('\16#0224d;') <> 1 then writeln("width(# 224d) incorrect"); success := FALSE; end if; # EQUIVALENT TO
902    if width('\16#0224f;') <> 1 then writeln("width(# 224f) incorrect"); success := FALSE; end if; # DIFFERENCE BETWEEN
903    if width('\16#02252;') <> 1 then writeln("width(# 2252) incorrect"); success := FALSE; end if; # APPROXIMATELY EQUAL TO OR THE IMAGE OF
904    if width('\16#02253;') <> 1 then writeln("width(# 2253) incorrect"); success := FALSE; end if; # IMAGE OF OR APPROXIMATELY EQUAL TO
905    if width('\16#02259;') <> 1 then writeln("width(# 2259) incorrect"); success := FALSE; end if; # ESTIMATES
906    if width('\16#02260;') <> 1 then writeln("width(# 2260) incorrect"); success := FALSE; end if; # NOT EQUAL TO
907    if width('\16#02261;') <> 1 then writeln("width(# 2261) incorrect"); success := FALSE; end if; # IDENTICAL TO
908    if width('\16#02262;') <> 1 then writeln("width(# 2262) incorrect"); success := FALSE; end if; # NOT IDENTICAL TO
909    if width('\16#02263;') <> 1 then writeln("width(# 2263) incorrect"); success := FALSE; end if; # STRICTLY EQUIVALENT TO
910    if width('\16#02264;') <> 1 then writeln("width(# 2264) incorrect"); success := FALSE; end if; # LESS-THAN OR EQUAL TO
911    if width('\16#02266;') <> 1 then writeln("width(# 2266) incorrect"); success := FALSE; end if; # LESS-THAN OVER EQUAL TO
912    if width('\16#02268;') <> 1 then writeln("width(# 2268) incorrect"); success := FALSE; end if; # LESS-THAN BUT NOT EQUAL TO
913    if width('\16#02269;') <> 1 then writeln("width(# 2269) incorrect"); success := FALSE; end if; # GREATER-THAN BUT NOT EQUAL TO
914    if width('\16#0226a;') <> 1 then writeln("width(# 226a) incorrect"); success := FALSE; end if; # MUCH LESS-THAN
915    if width('\16#0226b;') <> 1 then writeln("width(# 226b) incorrect"); success := FALSE; end if; # MUCH GREATER-THAN
916    if width('\16#0226c;') <> 1 then writeln("width(# 226c) incorrect"); success := FALSE; end if; # BETWEEN
917    if width('\16#0226d;') <> 1 then writeln("width(# 226d) incorrect"); success := FALSE; end if; # NOT EQUIVALENT TO
918    if width('\16#0226e;') <> 1 then writeln("width(# 226e) incorrect"); success := FALSE; end if; # NOT LESS-THAN
919    if width('\16#0226f;') <> 1 then writeln("width(# 226f) incorrect"); success := FALSE; end if; # NOT GREATER-THAN
920    if width('\16#02270;') <> 1 then writeln("width(# 2270) incorrect"); success := FALSE; end if; # NEITHER LESS-THAN NOR EQUAL TO
921    if width('\16#02279;') <> 1 then writeln("width(# 2279) incorrect"); success := FALSE; end if; # NEITHER GREATER-THAN NOR LESS-THAN
922    if width('\16#02282;') <> 1 then writeln("width(# 2282) incorrect"); success := FALSE; end if; # SUBSET OF
923    if width('\16#02283;') <> 1 then writeln("width(# 2283) incorrect"); success := FALSE; end if; # SUPERSET OF
924    if width('\16#02284;') <> 1 then writeln("width(# 2284) incorrect"); success := FALSE; end if; # NOT A SUBSET OF
925    if width('\16#02285;') <> 1 then writeln("width(# 2285) incorrect"); success := FALSE; end if; # NOT A SUPERSET OF
926    if width('\16#02286;') <> 1 then writeln("width(# 2286) incorrect"); success := FALSE; end if; # SUBSET OF OR EQUAL TO
927    if width('\16#02287;') <> 1 then writeln("width(# 2287) incorrect"); success := FALSE; end if; # SUPERSET OF OR EQUAL TO
928    if width('\16#02288;') <> 1 then writeln("width(# 2288) incorrect"); success := FALSE; end if; # NEITHER A SUBSET OF NOR EQUAL TO
929    if width('\16#0228e;') <> 1 then writeln("width(# 228e) incorrect"); success := FALSE; end if; # MULTISET UNION
930    if width('\16#02295;') <> 1 then writeln("width(# 2295) incorrect"); success := FALSE; end if; # CIRCLED PLUS
931    if width('\16#02296;') <> 1 then writeln("width(# 2296) incorrect"); success := FALSE; end if; # CIRCLED MINUS
932    if width('\16#02297;') <> 1 then writeln("width(# 2297) incorrect"); success := FALSE; end if; # CIRCLED TIMES
933    if width('\16#02299;') <> 1 then writeln("width(# 2299) incorrect"); success := FALSE; end if; # CIRCLED DOT OPERATOR
934    if width('\16#0229a;') <> 1 then writeln("width(# 229a) incorrect"); success := FALSE; end if; # CIRCLED RING OPERATOR
935    if width('\16#0229f;') <> 1 then writeln("width(# 229f) incorrect"); success := FALSE; end if; # SQUARED MINUS
936    if width('\16#022a5;') <> 1 then writeln("width(# 22a5) incorrect"); success := FALSE; end if; # UP TACK
937    if width('\16#022a6;') <> 1 then writeln("width(# 22a6) incorrect"); success := FALSE; end if; # ASSERTION
938    if width('\16#022b2;') <> 1 then writeln("width(# 22b2) incorrect"); success := FALSE; end if; # NORMAL SUBGROUP OF
939    if width('\16#022bf;') <> 1 then writeln("width(# 22bf) incorrect"); success := FALSE; end if; # RIGHT TRIANGLE
940    if width('\16#022c0;') <> 1 then writeln("width(# 22c0) incorrect"); success := FALSE; end if; # N-ARY LOGICAL AND
941    if width('\16#022e9;') <> 1 then writeln("width(# 22e9) incorrect"); success := FALSE; end if; # SUCCEEDS BUT NOT EQUIVALENT TO
942    if width('\16#02312;') <> 1 then writeln("width(# 2312) incorrect"); success := FALSE; end if; # ARC
943    if width('\16#02313;') <> 1 then writeln("width(# 2313) incorrect"); success := FALSE; end if; # SEGMENT
944    if width('\16#0231e;') <> 1 then writeln("width(# 231e) incorrect"); success := FALSE; end if; # BOTTOM LEFT CORNER
945    if width('\16#02329;') <> 1 then writeln("width(# 2329) incorrect"); success := FALSE; end if; # LEFT-POINTING ANGLE BRACKET
946    if width('\16#0232a;') <> 2 then writeln("width(# 232a) incorrect"); success := FALSE; end if; # RIGHT-POINTING ANGLE BRACKET
947    if width('\16#0232b;') <> 2 then writeln("width(# 232b) incorrect"); success := FALSE; end if; # ERASE TO THE LEFT
948    if width('\16#023c5;') <> 1 then writeln("width(# 23c5) incorrect"); success := FALSE; end if; # DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE
949    if width('\16#02460;') <> 1 then writeln("width(# 2460) incorrect"); success := FALSE; end if; # CIRCLED DIGIT ONE
950    if width('\16#024a5;') <> 1 then writeln("width(# 24a5) incorrect"); success := FALSE; end if; # PARENTHESIZED LATIN SMALL LETTER J
951    if width('\16#024ea;') <> 1 then writeln("width(# 24ea) incorrect"); success := FALSE; end if; # CIRCLED DIGIT ZERO
952    if width('\16#024eb;') <> 1 then writeln("width(# 24eb) incorrect"); success := FALSE; end if; # NEGATIVE CIRCLED NUMBER ELEVEN
953    if width('\16#0251b;') <> 1 then writeln("width(# 251b) incorrect"); success := FALSE; end if; # BOX DRAWINGS HEAVY UP AND LEFT
954    if width('\16#0254c;') <> 1 then writeln("width(# 254c) incorrect"); success := FALSE; end if; # BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL
955    if width('\16#0254e;') <> 1 then writeln("width(# 254e) incorrect"); success := FALSE; end if; # BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL
956    if width('\16#02550;') <> 1 then writeln("width(# 2550) incorrect"); success := FALSE; end if; # BOX DRAWINGS DOUBLE HORIZONTAL
957    if width('\16#02562;') <> 1 then writeln("width(# 2562) incorrect"); success := FALSE; end if; # BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
958    if width('\16#02574;') <> 1 then writeln("width(# 2574) incorrect"); success := FALSE; end if; # BOX DRAWINGS LIGHT LEFT
959    if width('\16#0257a;') <> 1 then writeln("width(# 257a) incorrect"); success := FALSE; end if; # BOX DRAWINGS HEAVY RIGHT
960    if width('\16#02580;') <> 1 then writeln("width(# 2580) incorrect"); success := FALSE; end if; # UPPER HALF BLOCK
961    if width('\16#02588;') <> 1 then writeln("width(# 2588) incorrect"); success := FALSE; end if; # FULL BLOCK
962    if width('\16#02590;') <> 1 then writeln("width(# 2590) incorrect"); success := FALSE; end if; # RIGHT HALF BLOCK
963    if width('\16#02591;') <> 1 then writeln("width(# 2591) incorrect"); success := FALSE; end if; # LIGHT SHADE
964    if width('\16#02592;') <> 1 then writeln("width(# 2592) incorrect"); success := FALSE; end if; # MEDIUM SHADE
965    if width('\16#02594;') <> 1 then writeln("width(# 2594) incorrect"); success := FALSE; end if; # UPPER ONE EIGHTH BLOCK
966    if width('\16#02596;') <> 1 then writeln("width(# 2596) incorrect"); success := FALSE; end if; # QUADRANT LOWER LEFT
967    if width('\16#0259b;') <> 1 then writeln("width(# 259b) incorrect"); success := FALSE; end if; # QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT
968    if width('\16#025a0;') <> 1 then writeln("width(# 25a0) incorrect"); success := FALSE; end if; # BLACK SQUARE
969    if width('\16#025a1;') <> 1 then writeln("width(# 25a1) incorrect"); success := FALSE; end if; # WHITE SQUARE
970    if width('\16#025a2;') <> 1 then writeln("width(# 25a2) incorrect"); success := FALSE; end if; # WHITE SQUARE WITH ROUNDED CORNERS
971    if width('\16#025a3;') <> 1 then writeln("width(# 25a3) incorrect"); success := FALSE; end if; # WHITE SQUARE CONTAINING BLACK SMALL SQUARE
972    if width('\16#025a6;') <> 1 then writeln("width(# 25a6) incorrect"); success := FALSE; end if; # SQUARE WITH ORTHOGONAL CROSSHATCH FILL
973    if width('\16#025aa;') <> 1 then writeln("width(# 25aa) incorrect"); success := FALSE; end if; # BLACK SMALL SQUARE
974    if width('\16#025ae;') <> 1 then writeln("width(# 25ae) incorrect"); success := FALSE; end if; # BLACK VERTICAL RECTANGLE
975    if width('\16#025b2;') <> 1 then writeln("width(# 25b2) incorrect"); success := FALSE; end if; # BLACK UP-POINTING TRIANGLE
976    if width('\16#025b3;') <> 1 then writeln("width(# 25b3) incorrect"); success := FALSE; end if; # WHITE UP-POINTING TRIANGLE
977    if width('\16#025b4;') <> 1 then writeln("width(# 25b4) incorrect"); success := FALSE; end if; # BLACK UP-POINTING SMALL TRIANGLE
978    if width('\16#025b5;') <> 1 then writeln("width(# 25b5) incorrect"); success := FALSE; end if; # WHITE UP-POINTING SMALL TRIANGLE
979    if width('\16#025b6;') <> 1 then writeln("width(# 25b6) incorrect"); success := FALSE; end if; # BLACK RIGHT-POINTING TRIANGLE
980    if width('\16#025b7;') <> 1 then writeln("width(# 25b7) incorrect"); success := FALSE; end if; # WHITE RIGHT-POINTING TRIANGLE
981    if width('\16#025b8;') <> 1 then writeln("width(# 25b8) incorrect"); success := FALSE; end if; # BLACK RIGHT-POINTING SMALL TRIANGLE
982    if width('\16#025ba;') <> 1 then writeln("width(# 25ba) incorrect"); success := FALSE; end if; # BLACK RIGHT-POINTING POINTER
983    if width('\16#025bc;') <> 1 then writeln("width(# 25bc) incorrect"); success := FALSE; end if; # BLACK DOWN-POINTING TRIANGLE
984    if width('\16#025bd;') <> 1 then writeln("width(# 25bd) incorrect"); success := FALSE; end if; # WHITE DOWN-POINTING TRIANGLE
985    if width('\16#025be;') <> 1 then writeln("width(# 25be) incorrect"); success := FALSE; end if; # BLACK DOWN-POINTING SMALL TRIANGLE
986    if width('\16#025bf;') <> 1 then writeln("width(# 25bf) incorrect"); success := FALSE; end if; # WHITE DOWN-POINTING SMALL TRIANGLE
987    if width('\16#025c0;') <> 1 then writeln("width(# 25c0) incorrect"); success := FALSE; end if; # BLACK LEFT-POINTING TRIANGLE
988    if width('\16#025c1;') <> 1 then writeln("width(# 25c1) incorrect"); success := FALSE; end if; # WHITE LEFT-POINTING TRIANGLE
989    if width('\16#025c2;') <> 1 then writeln("width(# 25c2) incorrect"); success := FALSE; end if; # BLACK LEFT-POINTING SMALL TRIANGLE
990    if width('\16#025c4;') <> 1 then writeln("width(# 25c4) incorrect"); success := FALSE; end if; # BLACK LEFT-POINTING POINTER
991    if width('\16#025c6;') <> 1 then writeln("width(# 25c6) incorrect"); success := FALSE; end if; # BLACK DIAMOND
992    if width('\16#025c7;') <> 1 then writeln("width(# 25c7) incorrect"); success := FALSE; end if; # WHITE DIAMOND
993    if width('\16#025c9;') <> 1 then writeln("width(# 25c9) incorrect"); success := FALSE; end if; # FISHEYE
994    if width('\16#025ca;') <> 1 then writeln("width(# 25ca) incorrect"); success := FALSE; end if; # LOZENGE
995    if width('\16#025cb;') <> 1 then writeln("width(# 25cb) incorrect"); success := FALSE; end if; # WHITE CIRCLE
996    if width('\16#025cc;') <> 1 then writeln("width(# 25cc) incorrect"); success := FALSE; end if; # DOTTED CIRCLE
997    if width('\16#025cd;') <> 1 then writeln("width(# 25cd) incorrect"); success := FALSE; end if; # CIRCLE WITH VERTICAL FILL
998    if width('\16#025ce;') <> 1 then writeln("width(# 25ce) incorrect"); success := FALSE; end if; # BULLSEYE
999    if width('\16#025d0;') <> 1 then writeln("width(# 25d0) incorrect"); success := FALSE; end if; # CIRCLE WITH LEFT HALF BLACK
1000    if width('\16#025d2;') <> 1 then writeln("width(# 25d2) incorrect"); success := FALSE; end if; # CIRCLE WITH LOWER HALF BLACK
1001    if width('\16#025da;') <> 1 then writeln("width(# 25da) incorrect"); success := FALSE; end if; # UPPER HALF INVERSE WHITE CIRCLE
1002    if width('\16#025e2;') <> 1 then writeln("width(# 25e2) incorrect"); success := FALSE; end if; # BLACK LOWER RIGHT TRIANGLE
1003    if width('\16#025e4;') <> 1 then writeln("width(# 25e4) incorrect"); success := FALSE; end if; # BLACK UPPER LEFT TRIANGLE
1004    if width('\16#025e6;') <> 1 then writeln("width(# 25e6) incorrect"); success := FALSE; end if; # WHITE BULLET
1005    if width('\16#025ea;') <> 1 then writeln("width(# 25ea) incorrect"); success := FALSE; end if; # SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK
1006    if width('\16#025ef;') <> 1 then writeln("width(# 25ef) incorrect"); success := FALSE; end if; # LARGE CIRCLE
1007    if width('\16#025f0;') <> 1 then writeln("width(# 25f0) incorrect"); success := FALSE; end if; # WHITE SQUARE WITH UPPER LEFT QUADRANT
1008    if width('\16#025fa;') <> 1 then writeln("width(# 25fa) incorrect"); success := FALSE; end if; # LOWER LEFT TRIANGLE
1009    if width('\16#02605;') <> 1 then writeln("width(# 2605) incorrect"); success := FALSE; end if; # BLACK STAR
1010    if width('\16#02606;') <> 1 then writeln("width(# 2606) incorrect"); success := FALSE; end if; # WHITE STAR
1011    if width('\16#02607;') <> 1 then writeln("width(# 2607) incorrect"); success := FALSE; end if; # LIGHTNING
1012    if width('\16#02608;') <> 1 then writeln("width(# 2608) incorrect"); success := FALSE; end if; # THUNDERSTORM
1013    if width('\16#02609;') <> 1 then writeln("width(# 2609) incorrect"); success := FALSE; end if; # SUN
1014    if width('\16#0260a;') <> 1 then writeln("width(# 260a) incorrect"); success := FALSE; end if; # ASCENDING NODE
1015    if width('\16#0260c;') <> 1 then writeln("width(# 260c) incorrect"); success := FALSE; end if; # CONJUNCTION
1016    if width('\16#0260e;') <> 1 then writeln("width(# 260e) incorrect"); success := FALSE; end if; # BLACK TELEPHONE
1017    if width('\16#0260f;') <> 1 then writeln("width(# 260f) incorrect"); success := FALSE; end if; # WHITE TELEPHONE
1018    if width('\16#02610;') <> 1 then writeln("width(# 2610) incorrect"); success := FALSE; end if; # BALLOT BOX
1019    if width('\16#02612;') <> 1 then writeln("width(# 2612) incorrect"); success := FALSE; end if; # BALLOT BOX WITH X
1020    if width('\16#02614;') <> 1 then writeln("width(# 2614) incorrect"); success := FALSE; end if; # UMBRELLA WITH RAIN DROPS
1021    if width('\16#02615;') <> 1 then writeln("width(# 2615) incorrect"); success := FALSE; end if; # HOT BEVERAGE
1022    if width('\16#02616;') <> 1 then writeln("width(# 2616) incorrect"); success := FALSE; end if; # WHITE SHOGI PIECE
1023    if width('\16#02619;') <> 1 then writeln("width(# 2619) incorrect"); success := FALSE; end if; # REVERSED ROTATED FLORAL HEART BULLET
1024    if width('\16#0261c;') <> 1 then writeln("width(# 261c) incorrect"); success := FALSE; end if; # WHITE LEFT POINTING INDEX
1025    if width('\16#0261d;') <> 1 then writeln("width(# 261d) incorrect"); success := FALSE; end if; # WHITE UP POINTING INDEX
1026    if width('\16#0261e;') <> 1 then writeln("width(# 261e) incorrect"); success := FALSE; end if; # WHITE RIGHT POINTING INDEX
1027    if width('\16#0261f;') <> 1 then writeln("width(# 261f) incorrect"); success := FALSE; end if; # WHITE DOWN POINTING INDEX
1028    if width('\16#0262f;') <> 1 then writeln("width(# 262f) incorrect"); success := FALSE; end if; # YIN YANG
1029    if width('\16#02640;') <> 1 then writeln("width(# 2640) incorrect"); success := FALSE; end if; # FEMALE SIGN
1030    if width('\16#02641;') <> 1 then writeln("width(# 2641) incorrect"); success := FALSE; end if; # EARTH
1031    if width('\16#02642;') <> 1 then writeln("width(# 2642) incorrect"); success := FALSE; end if; # MALE SIGN
1032    if width('\16#02643;') <> 1 then writeln("width(# 2643) incorrect"); success := FALSE; end if; # JUPITER
1033    if width('\16#02651;') <> 1 then writeln("width(# 2651) incorrect"); success := FALSE; end if; # CAPRICORN
1034    if width('\16#02660;') <> 1 then writeln("width(# 2660) incorrect"); success := FALSE; end if; # BLACK SPADE SUIT
1035    if width('\16#02661;') <> 1 then writeln("width(# 2661) incorrect"); success := FALSE; end if; # WHITE HEART SUIT
1036    if width('\16#02662;') <> 1 then writeln("width(# 2662) incorrect"); success := FALSE; end if; # WHITE DIAMOND SUIT
1037    if width('\16#02663;') <> 1 then writeln("width(# 2663) incorrect"); success := FALSE; end if; # BLACK CLUB SUIT
1038    if width('\16#02664;') <> 1 then writeln("width(# 2664) incorrect"); success := FALSE; end if; # WHITE SPADE SUIT
1039    if width('\16#02666;') <> 1 then writeln("width(# 2666) incorrect"); success := FALSE; end if; # BLACK DIAMOND SUIT
1040    if width('\16#02667;') <> 1 then writeln("width(# 2667) incorrect"); success := FALSE; end if; # WHITE CLUB SUIT
1041    if width('\16#02669;') <> 1 then writeln("width(# 2669) incorrect"); success := FALSE; end if; # QUARTER NOTE
1042    if width('\16#0266b;') <> 1 then writeln("width(# 266b) incorrect"); success := FALSE; end if; # BEAMED EIGHTH NOTES
1043    if width('\16#0266c;') <> 1 then writeln("width(# 266c) incorrect"); success := FALSE; end if; # BEAMED SIXTEENTH NOTES
1044    if width('\16#0266d;') <> 1 then writeln("width(# 266d) incorrect"); success := FALSE; end if; # MUSIC FLAT SIGN
1045    if width('\16#0266e;') <> 1 then writeln("width(# 266e) incorrect"); success := FALSE; end if; # MUSIC NATURAL SIGN
1046    if width('\16#0266f;') <> 1 then writeln("width(# 266f) incorrect"); success := FALSE; end if; # MUSIC SHARP SIGN
1047    if width('\16#02670;') <> 1 then writeln("width(# 2670) incorrect"); success := FALSE; end if; # WEST SYRIAC CROSS
1048    if width('\16#02687;') <> 1 then writeln("width(# 2687) incorrect"); success := FALSE; end if; # WHITE CIRCLE WITH TWO DOTS
1049    if width('\16#0269e;') <> 1 then writeln("width(# 269e) incorrect"); success := FALSE; end if; # THREE LINES CONVERGING RIGHT
1050    if width('\16#0269f;') <> 1 then writeln("width(# 269f) incorrect"); success := FALSE; end if; # THREE LINES CONVERGING LEFT
1051    if width('\16#026a0;') <> 1 then writeln("width(# 26a0) incorrect"); success := FALSE; end if; # WARNING SIGN
1052    if width('\16#026af;') <> 1 then writeln("width(# 26af) incorrect"); success := FALSE; end if; # UNMARRIED PARTNERSHIP SYMBOL
1053    if width('\16#026be;') <> 1 then writeln("width(# 26be) incorrect"); success := FALSE; end if; # BASEBALL
1054    if width('\16#026bf;') <> 1 then writeln("width(# 26bf) incorrect"); success := FALSE; end if; # SQUARED KEY
1055    if width('\16#026c0;') <> 1 then writeln("width(# 26c0) incorrect"); success := FALSE; end if; # WHITE DRAUGHTS MAN
1056    if width('\16#026c2;') <> 1 then writeln("width(# 26c2) incorrect"); success := FALSE; end if; # BLACK DRAUGHTS MAN
1057    if width('\16#026c4;') <> 1 then writeln("width(# 26c4) incorrect"); success := FALSE; end if; # SNOWMAN WITHOUT SNOW
1058    if width('\16#026c9;') <> 1 then writeln("width(# 26c9) incorrect"); success := FALSE; end if; # TURNED WHITE SHOGI PIECE
1059    if width('\16#026ce;') <> 1 then writeln("width(# 26ce) incorrect"); success := FALSE; end if; # OPHIUCHUS
1060    if width('\16#026cf;') <> 1 then writeln("width(# 26cf) incorrect"); success := FALSE; end if; # PICK
1061    if width('\16#026d8;') <> 1 then writeln("width(# 26d8) incorrect"); success := FALSE; end if; # BLACK LEFT LANE MERGE
1062    if width('\16#026e2;') <> 1 then writeln("width(# 26e2) incorrect"); success := FALSE; end if; # ASTRONOMICAL SYMBOL FOR URANUS
1063    if width('\16#026e3;') <> 1 then writeln("width(# 26e3) incorrect"); success := FALSE; end if; # HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
1064    if width('\16#026e4;') <> 1 then writeln("width(# 26e4) incorrect"); success := FALSE; end if; # PENTAGRAM
1065    if width('\16#026e6;') <> 1 then writeln("width(# 26e6) incorrect"); success := FALSE; end if; # LEFT-HANDED INTERLACED PENTAGRAM
1066    if width('\16#026e8;') <> 1 then writeln("width(# 26e8) incorrect"); success := FALSE; end if; # BLACK CROSS ON SHIELD
1067    if width('\16#026f4;') <> 1 then writeln("width(# 26f4) incorrect"); success := FALSE; end if; # FERRY
1068    if width('\16#02700;') <> 1 then writeln("width(# 2700) incorrect"); success := FALSE; end if; # <unassigned-2700>
1069    if width('\16#0271e;') <> 1 then writeln("width(# 271e) incorrect"); success := FALSE; end if; # SHADOWED WHITE LATIN CROSS
1070    if width('\16#0273d;') <> 1 then writeln("width(# 273d) incorrect"); success := FALSE; end if; # HEAVY TEARDROP-SPOKED ASTERISK
1071    if width('\16#0273e;') <> 1 then writeln("width(# 273e) incorrect"); success := FALSE; end if; # SIX PETALLED BLACK AND WHITE FLORETTE
1072    if width('\16#0274a;') <> 1 then writeln("width(# 274a) incorrect"); success := FALSE; end if; # EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
1073    if width('\16#02757;') <> 1 then writeln("width(# 2757) incorrect"); success := FALSE; end if; # HEAVY EXCLAMATION MARK SYMBOL
1074    if width('\16#02758;') <> 1 then writeln("width(# 2758) incorrect"); success := FALSE; end if; # LIGHT VERTICAL BAR
1075    if width('\16#02767;') <> 1 then writeln("width(# 2767) incorrect"); success := FALSE; end if; # ROTATED FLORAL HEART BULLET
1076    if width('\16#02776;') <> 1 then writeln("width(# 2776) incorrect"); success := FALSE; end if; # DINGBAT NEGATIVE CIRCLED DIGIT ONE
1077    if width('\16#0277b;') <> 1 then writeln("width(# 277b) incorrect"); success := FALSE; end if; # DINGBAT NEGATIVE CIRCLED DIGIT SIX
1078    if width('\16#02780;') <> 1 then writeln("width(# 2780) incorrect"); success := FALSE; end if; # DINGBAT CIRCLED SANS-SERIF DIGIT ONE
1079    if width('\16#027b3;') <> 1 then writeln("width(# 27b3) incorrect"); success := FALSE; end if; # WHITE-FEATHERED RIGHTWARDS ARROW
1080    if width('\16#027e6;') <> 1 then writeln("width(# 27e6) incorrect"); success := FALSE; end if; # MATHEMATICAL LEFT WHITE SQUARE BRACKET
1081    if width('\16#027ea;') <> 1 then writeln("width(# 27ea) incorrect"); success := FALSE; end if; # MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
1082    if width('\16#027ee;') <> 1 then writeln("width(# 27ee) incorrect"); success := FALSE; end if; # MATHEMATICAL LEFT FLATTENED PARENTHESIS
1083    if width('\16#028b9;') <> 1 then writeln("width(# 28b9) incorrect"); success := FALSE; end if; # BRAILLE PATTERN DOTS-14568
1084    if width('\16#02985;') <> 1 then writeln("width(# 2985) incorrect"); success := FALSE; end if; # LEFT WHITE PARENTHESIS
1085    if width('\16#02986;') <> 1 then writeln("width(# 2986) incorrect"); success := FALSE; end if; # RIGHT WHITE PARENTHESIS
1086    if width('\16#02987;') <> 1 then writeln("width(# 2987) incorrect"); success := FALSE; end if; # Z NOTATION LEFT IMAGE BRACKET
1087    if width('\16#02a6e;') <> 1 then writeln("width(# 2a6e) incorrect"); success := FALSE; end if; # EQUALS WITH ASTERISK
1088    if width('\16#02b55;') <> 1 then writeln("width(# 2b55) incorrect"); success := FALSE; end if; # HEAVY LARGE CIRCLE
1089    if width('\16#02b57;') <> 1 then writeln("width(# 2b57) incorrect"); success := FALSE; end if; # HEAVY CIRCLE WITH CIRCLE INSIDE
1090    if width('\16#02b5a;') <> 1 then writeln("width(# 2b5a) incorrect"); success := FALSE; end if; # <unassigned-2B5A>
1091    if width('\16#02ced;') <> 1 then writeln("width(# 2ced) incorrect"); success := FALSE; end if; # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
1092    if width('\16#02e80;') <> 1 then writeln("width(# 2e80) incorrect"); success := FALSE; end if; # CJK RADICAL REPEAT
1093    if width('\16#02e8d;') <> 2 then writeln("width(# 2e8d) incorrect"); success := FALSE; end if; # CJK RADICAL SMALL TWO
1094    if width('\16#02e9b;') <> 1 then writeln("width(# 2e9b) incorrect"); success := FALSE; end if; # CJK RADICAL CHOKE
1095    if width('\16#02ec7;') <> 2 then writeln("width(# 2ec7) incorrect"); success := FALSE; end if; # CJK RADICAL HORN
1096    if width('\16#02efa;') <> 1 then writeln("width(# 2efa) incorrect"); success := FALSE; end if; # <unassigned-2EFA>
1097    if width('\16#02f00;') <> 1 then writeln("width(# 2f00) incorrect"); success := FALSE; end if; # KANGXI RADICAL ONE
1098    if width('\16#02f6b;') <> 2 then writeln("width(# 2f6b) incorrect"); success := FALSE; end if; # KANGXI RADICAL DISH
1099    if width('\16#02ff0;') <> 1 then writeln("width(# 2ff0) incorrect"); success := FALSE; end if; # IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT
1100    if width('\16#02ff6;') <> 2 then writeln("width(# 2ff6) incorrect"); success := FALSE; end if; # IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW
1101    if width('\16#03000;') <> 1 then writeln("width(# 3000) incorrect"); success := FALSE; end if; # IDEOGRAPHIC SPACE
1102    if width('\16#03001;') <> 2 then writeln("width(# 3001) incorrect"); success := FALSE; end if; # IDEOGRAPHIC COMMA
1103    if width('\16#03020;') <> 2 then writeln("width(# 3020) incorrect"); success := FALSE; end if; # POSTAL MARK FACE
1104    if width('\16#0303f;') <> 2 then writeln("width(# 303f) incorrect"); success := FALSE; end if; # IDEOGRAPHIC HALF FILL SPACE
1105    if width('\16#03040;') <> 1 then writeln("width(# 3040) incorrect"); success := FALSE; end if; # <unassigned-3040>
1106    if width('\16#03041;') <> 1 then writeln("width(# 3041) incorrect"); success := FALSE; end if; # HIRAGANA LETTER SMALL A
1107    if width('\16#0306c;') <> 2 then writeln("width(# 306c) incorrect"); success := FALSE; end if; # HIRAGANA LETTER NU
1108    if width('\16#03099;') <> 0 then writeln("width(# 3099) incorrect"); success := FALSE; end if; # COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK
1109    if width('\16#030cc;') <> 2 then writeln("width(# 30cc) incorrect"); success := FALSE; end if; # KATAKANA LETTER NU
1110    if width('\16#03105;') <> 1 then writeln("width(# 3105) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER B
1111    if width('\16#03119;') <> 2 then writeln("width(# 3119) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER S
1112    if width('\16#0312e;') <> 1 then writeln("width(# 312e) incorrect"); success := FALSE; end if; # <unassigned-312E>
1113    if width('\16#0312f;') <> 1 then writeln("width(# 312f) incorrect"); success := FALSE; end if; # <unassigned-312F>
1114    if width('\16#03131;') <> 1 then writeln("width(# 3131) incorrect"); success := FALSE; end if; # HANGUL LETTER KIYEOK
1115    if width('\16#03160;') <> 2 then writeln("width(# 3160) incorrect"); success := FALSE; end if; # HANGUL LETTER YU
1116    if width('\16#03190;') <> 1 then writeln("width(# 3190) incorrect"); success := FALSE; end if; # IDEOGRAPHIC ANNOTATION LINKING MARK
1117    if width('\16#031a5;') <> 2 then writeln("width(# 31a5) incorrect"); success := FALSE; end if; # BOPOMOFO LETTER ENN
1118    if width('\16#031bb;') <> 1 then writeln("width(# 31bb) incorrect"); success := FALSE; end if; # <unassigned-31BB>
1119    if width('\16#031bd;') <> 1 then writeln("width(# 31bd) incorrect"); success := FALSE; end if; # <unassigned-31BD>
1120    if width('\16#031c0;') <> 1 then writeln("width(# 31c0) incorrect"); success := FALSE; end if; # CJK STROKE T
1121    if width('\16#031d2;') <> 1 then writeln("width(# 31d2) incorrect"); success := FALSE; end if; # CJK STROKE P
1122    if width('\16#031e4;') <> 1 then writeln("width(# 31e4) incorrect"); success := FALSE; end if; # <unassigned-31E4>
1123    if width('\16#031ea;') <> 1 then writeln("width(# 31ea) incorrect"); success := FALSE; end if; # <unassigned-31EA>
1124    if width('\16#031f0;') <> 1 then writeln("width(# 31f0) incorrect"); success := FALSE; end if; # KATAKANA LETTER SMALL KU
1125    if width('\16#03207;') <> 2 then writeln("width(# 3207) incorrect"); success := FALSE; end if; # PARENTHESIZED HANGUL IEUNG
1126    if width('\16#03220;') <> 1 then writeln("width(# 3220) incorrect"); success := FALSE; end if; # PARENTHESIZED IDEOGRAPH ONE
1127    if width('\16#03234;') <> 2 then writeln("width(# 3234) incorrect"); success := FALSE; end if; # PARENTHESIZED IDEOGRAPH NAME
1128    if width('\16#03248;') <> 1 then writeln("width(# 3248) incorrect"); success := FALSE; end if; # CIRCLED NUMBER TEN ON BLACK SQUARE
1129    if width('\16#0324c;') <> 1 then writeln("width(# 324c) incorrect"); success := FALSE; end if; # CIRCLED NUMBER FIFTY ON BLACK SQUARE
1130    if width('\16#03250;') <> 1 then writeln("width(# 3250) incorrect"); success := FALSE; end if; # PARTNERSHIP SIGN
1131    if width('\16#032a7;') <> 2 then writeln("width(# 32a7) incorrect"); success := FALSE; end if; # CIRCLED IDEOGRAPH LEFT
1132    if width('\16#03300;') <> 1 then writeln("width(# 3300) incorrect"); success := FALSE; end if; # SQUARE APAATO
1133    if width('\16#04060;') <> 2 then writeln("width(# 4060) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-4060
1134    if width('\16#04dc0;') <> 1 then writeln("width(# 4dc0) incorrect"); success := FALSE; end if; # HEXAGRAM FOR THE CREATIVE HEAVEN
1135    if width('\16#04de0;') <> 1 then writeln("width(# 4de0) incorrect"); success := FALSE; end if; # HEXAGRAM FOR RETREAT
1136    if width('\16#04e00;') <> 1 then writeln("width(# 4e00) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-4E00
1137    if width('\16#07946;') <> 2 then writeln("width(# 7946) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-7946
1138    if width('\16#0a490;') <> 1 then writeln("width(# a490) incorrect"); success := FALSE; end if; # YI RADICAL QOT
1139    if width('\16#0a4ab;') <> 2 then writeln("width(# a4ab) incorrect"); success := FALSE; end if; # YI RADICAL ZOT
1140    if width('\16#0a713;') <> 1 then writeln("width(# a713) incorrect"); success := FALSE; end if; # MODIFIER LETTER HIGH LEFT-STEM TONE BAR
1141    if width('\16#0a960;') <> 1 then writeln("width(# a960) incorrect"); success := FALSE; end if; # HANGUL CHOSEONG TIKEUT-MIEUM
1142    if width('\16#0a96e;') <> 1 then writeln("width(# a96e) incorrect"); success := FALSE; end if; # HANGUL CHOSEONG RIEUL-KHIEUKH
1143    if width('\16#0aabe;') <> 1 then writeln("width(# aabe) incorrect"); success := FALSE; end if; # TAI VIET VOWEL AM
1144    if width('\16#0ac00;') <> 1 then writeln("width(# ac00) incorrect"); success := FALSE; end if; # HANGUL SYLLABLE GA
1145    if width('\16#0c1d2;') <> 2 then writeln("width(# c1d2) incorrect"); success := FALSE; end if; # HANGUL SYLLABLE SWAELP
1146    if width('\16#0d7b0;') <> 1 then writeln("width(# d7b0) incorrect"); success := FALSE; end if; # HANGUL JUNGSEONG O-YEO
1147    if width('\16#0d7bb;') <> 1 then writeln("width(# d7bb) incorrect"); success := FALSE; end if; # HANGUL JUNGSEONG EU-E
1148    if width('\16#0d7cb;') <> 1 then writeln("width(# d7cb) incorrect"); success := FALSE; end if; # HANGUL JONGSEONG NIEUN-RIEUL
1149    if width('\16#0d7e3;') <> 1 then writeln("width(# d7e3) incorrect"); success := FALSE; end if; # HANGUL JONGSEONG PIEUP-TIKEUT
1150    if width('\16#0d7fc;') <> 1 then writeln("width(# d7fc) incorrect"); success := FALSE; end if; # <unassigned-D7FC>
1151    if width('\16#0dbfe;') <> 1 then writeln("width(# dbfe) incorrect"); success := FALSE; end if; # <lead surrogate-DBFE>
1152    if width('\16#0e000;') <> 1 then writeln("width(# e000) incorrect"); success := FALSE; end if; # <private use area-E000>
1153    if width('\16#0ec80;') <> 1 then writeln("width(# ec80) incorrect"); success := FALSE; end if; # <private use area-EC80>
1154    if width('\16#0f900;') <> 1 then writeln("width(# f900) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-F900
1155    if width('\16#0fa00;') <> 2 then writeln("width(# fa00) incorrect"); success := FALSE; end if; # CJK COMPATIBILITY IDEOGRAPH-FA00
1156    if width('\16#0fb00;') <> 1 then writeln("width(# fb00) incorrect"); success := FALSE; end if; # LATIN SMALL LIGATURE FF
1157    if width('\16#0fc80;') <> 1 then writeln("width(# fc80) incorrect"); success := FALSE; end if; # ARABIC LIGATURE KAF WITH ALEF FINAL FORM
1158    if width('\16#0fe10;') <> 1 then writeln("width(# fe10) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL COMMA
1159    if width('\16#0fe15;') <> 1 then writeln("width(# fe15) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
1160    if width('\16#0fe25;') <> 1 then writeln("width(# fe25) incorrect"); success := FALSE; end if; # COMBINING MACRON RIGHT HALF
1161    if width('\16#0fe30;') <> 1 then writeln("width(# fe30) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
1162    if width('\16#0fe41;') <> 2 then writeln("width(# fe41) incorrect"); success := FALSE; end if; # PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
1163    if width('\16#0fe54;') <> 1 then writeln("width(# fe54) incorrect"); success := FALSE; end if; # SMALL SEMICOLON
1164    if width('\16#0fe5d;') <> 2 then writeln("width(# fe5d) incorrect"); success := FALSE; end if; # SMALL LEFT TORTOISE SHELL BRACKET
1165    if width('\16#0fe68;') <> 1 then writeln("width(# fe68) incorrect"); success := FALSE; end if; # SMALL REVERSE SOLIDUS
1166    if width('\16#0fe6a;') <> 2 then writeln("width(# fe6a) incorrect"); success := FALSE; end if; # SMALL PERCENT SIGN
1167    if width('\16#0feb6;') <> 1 then writeln("width(# feb6) incorrect"); success := FALSE; end if; # ARABIC LETTER SHEEN FINAL FORM
1168    if width('\16#0ff01;') <> 1 then writeln("width(# ff01) incorrect"); success := FALSE; end if; # FULLWIDTH EXCLAMATION MARK
1169    if width('\16#0ff31;') <> 2 then writeln("width(# ff31) incorrect"); success := FALSE; end if; # FULLWIDTH LATIN CAPITAL LETTER Q
1170    if width('\16#0ff61;') <> 2 then writeln("width(# ff61) incorrect"); success := FALSE; end if; # HALFWIDTH IDEOGRAPHIC FULL STOP
1171    if width('\16#0ff90;') <> 1 then writeln("width(# ff90) incorrect"); success := FALSE; end if; # HALFWIDTH KATAKANA LETTER MI
1172    if width('\16#0ffc2;') <> 1 then writeln("width(# ffc2) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER A
1173    if width('\16#0ffc5;') <> 1 then writeln("width(# ffc5) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER YAE
1174    if width('\16#0ffca;') <> 1 then writeln("width(# ffca) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER YEO
1175    if width('\16#0ffcd;') <> 1 then writeln("width(# ffcd) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER WA
1176    if width('\16#0ffd2;') <> 1 then writeln("width(# ffd2) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER YO
1177    if width('\16#0ffd5;') <> 1 then writeln("width(# ffd5) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER WE
1178    if width('\16#0ffda;') <> 1 then writeln("width(# ffda) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER EU
1179    if width('\16#0ffdb;') <> 1 then writeln("width(# ffdb) incorrect"); success := FALSE; end if; # HALFWIDTH HANGUL LETTER YI
1180    if width('\16#0ffe0;') <> 1 then writeln("width(# ffe0) incorrect"); success := FALSE; end if; # FULLWIDTH CENT SIGN
1181    if width('\16#0ffe3;') <> 2 then writeln("width(# ffe3) incorrect"); success := FALSE; end if; # FULLWIDTH MACRON
1182    if width('\16#0ffeb;') <> 1 then writeln("width(# ffeb) incorrect"); success := FALSE; end if; # HALFWIDTH RIGHTWARDS ARROW
1183    if width('\16#0fffd;') <> 1 then writeln("width(# fffd) incorrect"); success := FALSE; end if; # REPLACEMENT CHARACTER
1184    if width('\16#1b000;') <> 1 then writeln("width(#1b000) incorrect"); success := FALSE; end if; # KATAKANA LETTER ARCHAIC E
1185    if width('\16#1b001;') <> 1 then writeln("width(#1b001) incorrect"); success := FALSE; end if; # HIRAGANA LETTER ARCHAIC YE
1186    if width('\16#1b002;') <> 1 then writeln("width(#1b002) incorrect"); success := FALSE; end if; # <unassigned-1B002>
1187    if width('\16#1d081;') <> 1 then writeln("width(#1d081) incorrect"); success := FALSE; end if; # BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION
1188    if width('\16#1f100;') <> 1 then writeln("width(#1f100) incorrect"); success := FALSE; end if; # DIGIT ZERO FULL STOP
1189    if width('\16#1f105;') <> 1 then writeln("width(#1f105) incorrect"); success := FALSE; end if; # DIGIT FOUR COMMA
1190    if width('\16#1f10b;') <> 1 then writeln("width(#1f10b) incorrect"); success := FALSE; end if; # <unassigned-1F10B>
1191    if width('\16#1f10d;') <> 1 then writeln("width(#1f10d) incorrect"); success := FALSE; end if; # <unassigned-1F10D>
1192    if width('\16#1f110;') <> 1 then writeln("width(#1f110) incorrect"); success := FALSE; end if; # PARENTHESIZED LATIN CAPITAL LETTER A
1193    if width('\16#1f11f;') <> 1 then writeln("width(#1f11f) incorrect"); success := FALSE; end if; # PARENTHESIZED LATIN CAPITAL LETTER P
1194    if width('\16#1f12e;') <> 1 then writeln("width(#1f12e) incorrect"); success := FALSE; end if; # CIRCLED WZ
1195    if width('\16#1f12f;') <> 1 then writeln("width(#1f12f) incorrect"); success := FALSE; end if; # <unassigned-1F12F>
1196    if width('\16#1f130;') <> 1 then writeln("width(#1f130) incorrect"); success := FALSE; end if; # SQUARED LATIN CAPITAL LETTER A
1197    if width('\16#1f14d;') <> 1 then writeln("width(#1f14d) incorrect"); success := FALSE; end if; # SQUARED SS
1198    if width('\16#1f16a;') <> 1 then writeln("width(#1f16a) incorrect"); success := FALSE; end if; # <unassigned-1F16A>
1199    if width('\16#1f16d;') <> 1 then writeln("width(#1f16d) incorrect"); success := FALSE; end if; # <unassigned-1F16D>
1200    if width('\16#1f170;') <> 1 then writeln("width(#1f170) incorrect"); success := FALSE; end if; # NEGATIVE SQUARED LATIN CAPITAL LETTER A
1201    if width('\16#1f185;') <> 1 then writeln("width(#1f185) incorrect"); success := FALSE; end if; # NEGATIVE SQUARED LATIN CAPITAL LETTER V
1202    if width('\16#1f200;') <> 1 then writeln("width(#1f200) incorrect"); success := FALSE; end if; # SQUARE HIRAGANA HOKA
1203    if width('\16#1f201;') <> 1 then writeln("width(#1f201) incorrect"); success := FALSE; end if; # SQUARED KATAKANA KOKO
1204    if width('\16#1f210;') <> 1 then writeln("width(#1f210) incorrect"); success := FALSE; end if; # SQUARED CJK UNIFIED IDEOGRAPH-624B
1205    if width('\16#1f225;') <> 1 then writeln("width(#1f225) incorrect"); success := FALSE; end if; # SQUARED CJK UNIFIED IDEOGRAPH-54390
1206    if width('\16#1f240;') <> 1 then writeln("width(#1f240) incorrect"); success := FALSE; end if; # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
1207    if width('\16#1f244;') <> 1 then writeln("width(#1f244) incorrect"); success := FALSE; end if; # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9
1208    if width('\16#1f250;') <> 1 then writeln("width(#1f250) incorrect"); success := FALSE; end if; # CIRCLED IDEOGRAPH ADVANTAGE
1209    if width('\16#1f251;') <> 1 then writeln("width(#1f251) incorrect"); success := FALSE; end if; # CIRCLED IDEOGRAPH ACCEPT
1210    if width('\16#20000;') <> 1 then writeln("width(#20000) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-20000
1211    if width('\16#27fff;') <> 2 then writeln("width(#27fff) incorrect"); success := FALSE; end if; # CJK UNIFIED IDEOGRAPH-27FFF
1212    if success then
1213      writeln("width function works correctly.");
1214    end if;
1215  end func;
1216
1217
1218const func string: literalFunction (in char: ch) is
1219  return literal(ch);
1220
1221
1222const func string: cLiteralFunction (in char: ch) is
1223  return c_literal(ch);
1224
1225
1226const proc: check_literal_functions is func
1227  local
1228    var boolean: okay is TRUE;
1229    var boolean: ok is TRUE;
1230    var string: stri is "";
1231  begin
1232    if  literal('\0;')   <> "'\\0;'" or
1233        literal('\1;')   <> "'\\1;'" or
1234        literal('\2;')   <> "'\\2;'" or
1235        literal('\3;')   <> "'\\3;'" or
1236        literal('\4;')   <> "'\\4;'" or
1237        literal('\5;')   <> "'\\5;'" or
1238        literal('\6;')   <> "'\\6;'" or
1239        literal('\a')    <> "'\\a'" or
1240        literal('\b')    <> "'\\b'" or
1241        literal('\t')    <> "'\\t'" or
1242        literal('\n')    <> "'\\n'" or
1243        literal('\v')    <> "'\\v'" or
1244        literal('\f')    <> "'\\f'" or
1245        literal('\r')    <> "'\\r'" or
1246        literal('\14;')  <> "'\\14;'" or
1247        literal('\15;')  <> "'\\15;'" or
1248        literal('\16;')  <> "'\\16;'" or
1249        literal('\17;')  <> "'\\17;'" or
1250        literal('\18;')  <> "'\\18;'" or
1251        literal('\19;')  <> "'\\19;'" or
1252        literal('\20;')  <> "'\\20;'" or
1253        literal('\21;')  <> "'\\21;'" or
1254        literal('\22;')  <> "'\\22;'" or
1255        literal('\23;')  <> "'\\23;'" or
1256        literal('\24;')  <> "'\\24;'" or
1257        literal('\25;')  <> "'\\25;'" or
1258        literal('\26;')  <> "'\\26;'" or
1259        literal('\e')    <> "'\\e'" or
1260        literal('\28;')  <> "'\\28;'" or
1261        literal('\29;')  <> "'\\29;'" or
1262        literal('\30;')  <> "'\\30;'" or
1263        literal('\31;')  <> "'\\31;'" or
1264        literal(' ')     <> "' '" or
1265        literal('"')     <> "'\\\"'" or
1266        literal('\\')    <> "'\\\\'" or
1267        literal('\'')    <> "'\\''" or
1268        literal('~')     <> "'~'" or
1269        literal('\128;') <> "'\\128;'" or
1270        literal('\128;') <> "'\\128;'" or
1271        literal('\129;') <> "'\\129;'" or
1272        literal('\130;') <> "'\\130;'" or
1273        literal('\131;') <> "'\\131;'" or
1274        literal('\132;') <> "'\\132;'" or
1275        literal('\133;') <> "'\\133;'" or
1276        literal('\134;') <> "'\\134;'" or
1277        literal('\135;') <> "'\\135;'" or
1278        literal('\136;') <> "'\\136;'" or
1279        literal('\137;') <> "'\\137;'" or
1280        literal('\138;') <> "'\\138;'" or
1281        literal('\139;') <> "'\\139;'" or
1282        literal('\140;') <> "'\\140;'" or
1283        literal('\141;') <> "'\\141;'" or
1284        literal('\142;') <> "'\\142;'" or
1285        literal('\143;') <> "'\\143;'" or
1286        literal('\144;') <> "'\\144;'" or
1287        literal('\145;') <> "'\\145;'" or
1288        literal('\146;') <> "'\\146;'" or
1289        literal('\147;') <> "'\\147;'" or
1290        literal('\148;') <> "'\\148;'" or
1291        literal('\149;') <> "'\\149;'" or
1292        literal('\150;') <> "'\\150;'" or
1293        literal('\151;') <> "'\\151;'" or
1294        literal('\152;') <> "'\\152;'" or
1295        literal('\153;') <> "'\\153;'" or
1296        literal('\154;') <> "'\\154;'" or
1297        literal('\155;') <> "'\\155;'" or
1298        literal('\156;') <> "'\\156;'" or
1299        literal('\157;') <> "'\\157;'" or
1300        literal('\158;') <> "'\\158;'" or
1301        literal('\159;') <> "'\\159;'" or
1302        literal('\160;') <> "'\\160;'" or
1303        literal('¡')     <> "'¡'" or
1304        literal('¤')     <> "'¤'" or
1305        literal('§')     <> "'§'" or
1306        literal('¬')     <> "'¬'" or
1307        literal('­')     <> "'­'" or
1308        literal('µ')     <> "'µ'" or
1309        literal('¿')     <> "'¿'" or
1310        literal('Ä')     <> "'Ä'" or
1311        literal('×')     <> "'×'" or
1312        literal('ß')     <> "'ß'" or
1313        literal('ä')     <> "'ä'" or
1314        literal('÷')     <> "'÷'" or
1315        literal('ÿ')     <> "'ÿ'" or
1316        literal('Œ')     <> "'\\338;'" or
1317        literal('Š')     <> "'\\352;'" or
1318        literal('ƒ')     <> "'\\402;'" or
1319        literal('†')     <> "'\\8224;'" or
1320        literal('•')     <> "'\\8226;'" or
1321        literal('‰')     <> "'\\8240;'" or
1322        literal('€')     <> "'\\8364;'" or
1323        literal('™')     <> "'\\8482;'" then
1324      writeln(" ***** Function literal(ch) does not work correct. (1)");
1325      okay := FALSE;
1326    end if;
1327
1328    if  literal(charExpr('\0;'))   <> "'\\0;'" or
1329        literal(charExpr('\1;'))   <> "'\\1;'" or
1330        literal(charExpr('\2;'))   <> "'\\2;'" or
1331        literal(charExpr('\3;'))   <> "'\\3;'" or
1332        literal(charExpr('\4;'))   <> "'\\4;'" or
1333        literal(charExpr('\5;'))   <> "'\\5;'" or
1334        literal(charExpr('\6;'))   <> "'\\6;'" or
1335        literal(charExpr('\a'))    <> "'\\a'" or
1336        literal(charExpr('\b'))    <> "'\\b'" or
1337        literal(charExpr('\t'))    <> "'\\t'" or
1338        literal(charExpr('\n'))    <> "'\\n'" or
1339        literal(charExpr('\v'))    <> "'\\v'" or
1340        literal(charExpr('\f'))    <> "'\\f'" or
1341        literal(charExpr('\r'))    <> "'\\r'" or
1342        literal(charExpr('\14;'))  <> "'\\14;'" or
1343        literal(charExpr('\15;'))  <> "'\\15;'" or
1344        literal(charExpr('\16;'))  <> "'\\16;'" or
1345        literal(charExpr('\17;'))  <> "'\\17;'" or
1346        literal(charExpr('\18;'))  <> "'\\18;'" or
1347        literal(charExpr('\19;'))  <> "'\\19;'" or
1348        literal(charExpr('\20;'))  <> "'\\20;'" or
1349        literal(charExpr('\21;'))  <> "'\\21;'" or
1350        literal(charExpr('\22;'))  <> "'\\22;'" or
1351        literal(charExpr('\23;'))  <> "'\\23;'" or
1352        literal(charExpr('\24;'))  <> "'\\24;'" or
1353        literal(charExpr('\25;'))  <> "'\\25;'" or
1354        literal(charExpr('\26;'))  <> "'\\26;'" or
1355        literal(charExpr('\e'))    <> "'\\e'" or
1356        literal(charExpr('\28;'))  <> "'\\28;'" or
1357        literal(charExpr('\29;'))  <> "'\\29;'" or
1358        literal(charExpr('\30;'))  <> "'\\30;'" or
1359        literal(charExpr('\31;'))  <> "'\\31;'" or
1360        literal(charExpr(' '))     <> "' '" or
1361        literal(charExpr('"'))     <> "'\\\"'" or
1362        literal(charExpr('\\'))    <> "'\\\\'" or
1363        literal(charExpr('\''))    <> "'\\''" or
1364        literal(charExpr('~'))     <> "'~'" or
1365        literal(charExpr('\128;')) <> "'\\128;'" or
1366        literal(charExpr('\128;')) <> "'\\128;'" or
1367        literal(charExpr('\129;')) <> "'\\129;'" or
1368        literal(charExpr('\130;')) <> "'\\130;'" or
1369        literal(charExpr('\131;')) <> "'\\131;'" or
1370        literal(charExpr('\132;')) <> "'\\132;'" or
1371        literal(charExpr('\133;')) <> "'\\133;'" or
1372        literal(charExpr('\134;')) <> "'\\134;'" or
1373        literal(charExpr('\135;')) <> "'\\135;'" or
1374        literal(charExpr('\136;')) <> "'\\136;'" or
1375        literal(charExpr('\137;')) <> "'\\137;'" or
1376        literal(charExpr('\138;')) <> "'\\138;'" or
1377        literal(charExpr('\139;')) <> "'\\139;'" or
1378        literal(charExpr('\140;')) <> "'\\140;'" or
1379        literal(charExpr('\141;')) <> "'\\141;'" or
1380        literal(charExpr('\142;')) <> "'\\142;'" or
1381        literal(charExpr('\143;')) <> "'\\143;'" or
1382        literal(charExpr('\144;')) <> "'\\144;'" or
1383        literal(charExpr('\145;')) <> "'\\145;'" or
1384        literal(charExpr('\146;')) <> "'\\146;'" or
1385        literal(charExpr('\147;')) <> "'\\147;'" or
1386        literal(charExpr('\148;')) <> "'\\148;'" or
1387        literal(charExpr('\149;')) <> "'\\149;'" or
1388        literal(charExpr('\150;')) <> "'\\150;'" or
1389        literal(charExpr('\151;')) <> "'\\151;'" or
1390        literal(charExpr('\152;')) <> "'\\152;'" or
1391        literal(charExpr('\153;')) <> "'\\153;'" or
1392        literal(charExpr('\154;')) <> "'\\154;'" or
1393        literal(charExpr('\155;')) <> "'\\155;'" or
1394        literal(charExpr('\156;')) <> "'\\156;'" or
1395        literal(charExpr('\157;')) <> "'\\157;'" or
1396        literal(charExpr('\158;')) <> "'\\158;'" or
1397        literal(charExpr('\159;')) <> "'\\159;'" or
1398        literal(charExpr('\160;')) <> "'\\160;'" or
1399        literal(charExpr('¡'))     <> "'¡'" or
1400        literal(charExpr('¤'))     <> "'¤'" or
1401        literal(charExpr('§'))     <> "'§'" or
1402        literal(charExpr('¬'))     <> "'¬'" or
1403        literal(charExpr('­'))     <> "'­'" or
1404        literal(charExpr('µ'))     <> "'µ'" or
1405        literal(charExpr('¿'))     <> "'¿'" or
1406        literal(charExpr('Ä'))     <> "'Ä'" or
1407        literal(charExpr('×'))     <> "'×'" or
1408        literal(charExpr('ß'))     <> "'ß'" or
1409        literal(charExpr('ä'))     <> "'ä'" or
1410        literal(charExpr('÷'))     <> "'÷'" or
1411        literal(charExpr('ÿ'))     <> "'ÿ'" or
1412        literal(charExpr('Œ'))     <> "'\\338;'" or
1413        literal(charExpr('Š'))     <> "'\\352;'" or
1414        literal(charExpr('ƒ'))     <> "'\\402;'" or
1415        literal(charExpr('†'))     <> "'\\8224;'" or
1416        literal(charExpr('•'))     <> "'\\8226;'" or
1417        literal(charExpr('‰'))     <> "'\\8240;'" or
1418        literal(charExpr('€'))     <> "'\\8364;'" or
1419        literal(charExpr('™'))     <> "'\\8482;'" then
1420      writeln(" ***** Function literal(ch) does not work correct. (2)");
1421      okay := FALSE;
1422    end if;
1423
1424    stri := literal('\0;');   ok := ok and stri = "'\\0;'";
1425    stri := literal('\1;');   ok := ok and stri = "'\\1;'";
1426    stri := literal('\2;');   ok := ok and stri = "'\\2;'";
1427    stri := literal('\3;');   ok := ok and stri = "'\\3;'";
1428    stri := literal('\4;');   ok := ok and stri = "'\\4;'";
1429    stri := literal('\5;');   ok := ok and stri = "'\\5;'";
1430    stri := literal('\6;');   ok := ok and stri = "'\\6;'";
1431    stri := literal('\a');    ok := ok and stri = "'\\a'";
1432    stri := literal('\b');    ok := ok and stri = "'\\b'";
1433    stri := literal('\t');    ok := ok and stri = "'\\t'";
1434    stri := literal('\n');    ok := ok and stri = "'\\n'";
1435    stri := literal('\v');    ok := ok and stri = "'\\v'";
1436    stri := literal('\f');    ok := ok and stri = "'\\f'";
1437    stri := literal('\r');    ok := ok and stri = "'\\r'";
1438    stri := literal('\14;');  ok := ok and stri = "'\\14;'";
1439    stri := literal('\15;');  ok := ok and stri = "'\\15;'";
1440    stri := literal('\16;');  ok := ok and stri = "'\\16;'";
1441    stri := literal('\17;');  ok := ok and stri = "'\\17;'";
1442    stri := literal('\18;');  ok := ok and stri = "'\\18;'";
1443    stri := literal('\19;');  ok := ok and stri = "'\\19;'";
1444    stri := literal('\20;');  ok := ok and stri = "'\\20;'";
1445    stri := literal('\21;');  ok := ok and stri = "'\\21;'";
1446    stri := literal('\22;');  ok := ok and stri = "'\\22;'";
1447    stri := literal('\23;');  ok := ok and stri = "'\\23;'";
1448    stri := literal('\24;');  ok := ok and stri = "'\\24;'";
1449    stri := literal('\25;');  ok := ok and stri = "'\\25;'";
1450    stri := literal('\26;');  ok := ok and stri = "'\\26;'";
1451    stri := literal('\e');    ok := ok and stri = "'\\e'";
1452    stri := literal('\28;');  ok := ok and stri = "'\\28;'";
1453    stri := literal('\29;');  ok := ok and stri = "'\\29;'";
1454    stri := literal('\30;');  ok := ok and stri = "'\\30;'";
1455    stri := literal('\31;');  ok := ok and stri = "'\\31;'";
1456    stri := literal(' ');     ok := ok and stri = "' '";
1457    stri := literal('"');     ok := ok and stri = "'\\\"'";
1458    stri := literal('\\');    ok := ok and stri = "'\\\\'";
1459    stri := literal('\'');    ok := ok and stri = "'\\''";
1460    stri := literal('~');     ok := ok and stri = "'~'";
1461    stri := literal('\128;'); ok := ok and stri = "'\\128;'";
1462    stri := literal('\128;'); ok := ok and stri = "'\\128;'";
1463    stri := literal('\129;'); ok := ok and stri = "'\\129;'";
1464    stri := literal('\130;'); ok := ok and stri = "'\\130;'";
1465    stri := literal('\131;'); ok := ok and stri = "'\\131;'";
1466    stri := literal('\132;'); ok := ok and stri = "'\\132;'";
1467    stri := literal('\133;'); ok := ok and stri = "'\\133;'";
1468    stri := literal('\134;'); ok := ok and stri = "'\\134;'";
1469    stri := literal('\135;'); ok := ok and stri = "'\\135;'";
1470    stri := literal('\136;'); ok := ok and stri = "'\\136;'";
1471    stri := literal('\137;'); ok := ok and stri = "'\\137;'";
1472    stri := literal('\138;'); ok := ok and stri = "'\\138;'";
1473    stri := literal('\139;'); ok := ok and stri = "'\\139;'";
1474    stri := literal('\140;'); ok := ok and stri = "'\\140;'";
1475    stri := literal('\141;'); ok := ok and stri = "'\\141;'";
1476    stri := literal('\142;'); ok := ok and stri = "'\\142;'";
1477    stri := literal('\143;'); ok := ok and stri = "'\\143;'";
1478    stri := literal('\144;'); ok := ok and stri = "'\\144;'";
1479    stri := literal('\145;'); ok := ok and stri = "'\\145;'";
1480    stri := literal('\146;'); ok := ok and stri = "'\\146;'";
1481    stri := literal('\147;'); ok := ok and stri = "'\\147;'";
1482    stri := literal('\148;'); ok := ok and stri = "'\\148;'";
1483    stri := literal('\149;'); ok := ok and stri = "'\\149;'";
1484    stri := literal('\150;'); ok := ok and stri = "'\\150;'";
1485    stri := literal('\151;'); ok := ok and stri = "'\\151;'";
1486    stri := literal('\152;'); ok := ok and stri = "'\\152;'";
1487    stri := literal('\153;'); ok := ok and stri = "'\\153;'";
1488    stri := literal('\154;'); ok := ok and stri = "'\\154;'";
1489    stri := literal('\155;'); ok := ok and stri = "'\\155;'";
1490    stri := literal('\156;'); ok := ok and stri = "'\\156;'";
1491    stri := literal('\157;'); ok := ok and stri = "'\\157;'";
1492    stri := literal('\158;'); ok := ok and stri = "'\\158;'";
1493    stri := literal('\159;'); ok := ok and stri = "'\\159;'";
1494    stri := literal('\160;'); ok := ok and stri = "'\\160;'";
1495    stri := literal('¡');     ok := ok and stri = "'¡'";
1496    stri := literal('¤');     ok := ok and stri = "'¤'";
1497    stri := literal('§');     ok := ok and stri = "'§'";
1498    stri := literal('¬');     ok := ok and stri = "'¬'";
1499    stri := literal('­');     ok := ok and stri = "'­'";
1500    stri := literal('µ');     ok := ok and stri = "'µ'";
1501    stri := literal('¿');     ok := ok and stri = "'¿'";
1502    stri := literal('Ä');     ok := ok and stri = "'Ä'";
1503    stri := literal('×');     ok := ok and stri = "'×'";
1504    stri := literal('ß');     ok := ok and stri = "'ß'";
1505    stri := literal('ä');     ok := ok and stri = "'ä'";
1506    stri := literal('÷');     ok := ok and stri = "'÷'";
1507    stri := literal('ÿ');     ok := ok and stri = "'ÿ'";
1508    stri := literal('Œ');     ok := ok and stri = "'\\338;'";
1509    stri := literal('Š');     ok := ok and stri = "'\\352;'";
1510    stri := literal('ƒ');     ok := ok and stri = "'\\402;'";
1511    stri := literal('†');     ok := ok and stri = "'\\8224;'";
1512    stri := literal('•');     ok := ok and stri = "'\\8226;'";
1513    stri := literal('‰');     ok := ok and stri = "'\\8240;'";
1514    stri := literal('€');     ok := ok and stri = "'\\8364;'";
1515    stri := literal('™');     ok := ok and stri = "'\\8482;'";
1516    if not ok then
1517      writeln(" ***** Function literal(ch) does not work correct. (3)");
1518      okay := FALSE;
1519    end if;
1520
1521    ok := TRUE;
1522    stri := literal(charExpr('\0;'));   ok := ok and stri = "'\\0;'";
1523    stri := literal(charExpr('\1;'));   ok := ok and stri = "'\\1;'";
1524    stri := literal(charExpr('\2;'));   ok := ok and stri = "'\\2;'";
1525    stri := literal(charExpr('\3;'));   ok := ok and stri = "'\\3;'";
1526    stri := literal(charExpr('\4;'));   ok := ok and stri = "'\\4;'";
1527    stri := literal(charExpr('\5;'));   ok := ok and stri = "'\\5;'";
1528    stri := literal(charExpr('\6;'));   ok := ok and stri = "'\\6;'";
1529    stri := literal(charExpr('\a'));    ok := ok and stri = "'\\a'";
1530    stri := literal(charExpr('\b'));    ok := ok and stri = "'\\b'";
1531    stri := literal(charExpr('\t'));    ok := ok and stri = "'\\t'";
1532    stri := literal(charExpr('\n'));    ok := ok and stri = "'\\n'";
1533    stri := literal(charExpr('\v'));    ok := ok and stri = "'\\v'";
1534    stri := literal(charExpr('\f'));    ok := ok and stri = "'\\f'";
1535    stri := literal(charExpr('\r'));    ok := ok and stri = "'\\r'";
1536    stri := literal(charExpr('\14;'));  ok := ok and stri = "'\\14;'";
1537    stri := literal(charExpr('\15;'));  ok := ok and stri = "'\\15;'";
1538    stri := literal(charExpr('\16;'));  ok := ok and stri = "'\\16;'";
1539    stri := literal(charExpr('\17;'));  ok := ok and stri = "'\\17;'";
1540    stri := literal(charExpr('\18;'));  ok := ok and stri = "'\\18;'";
1541    stri := literal(charExpr('\19;'));  ok := ok and stri = "'\\19;'";
1542    stri := literal(charExpr('\20;'));  ok := ok and stri = "'\\20;'";
1543    stri := literal(charExpr('\21;'));  ok := ok and stri = "'\\21;'";
1544    stri := literal(charExpr('\22;'));  ok := ok and stri = "'\\22;'";
1545    stri := literal(charExpr('\23;'));  ok := ok and stri = "'\\23;'";
1546    stri := literal(charExpr('\24;'));  ok := ok and stri = "'\\24;'";
1547    stri := literal(charExpr('\25;'));  ok := ok and stri = "'\\25;'";
1548    stri := literal(charExpr('\26;'));  ok := ok and stri = "'\\26;'";
1549    stri := literal(charExpr('\e'));    ok := ok and stri = "'\\e'";
1550    stri := literal(charExpr('\28;'));  ok := ok and stri = "'\\28;'";
1551    stri := literal(charExpr('\29;'));  ok := ok and stri = "'\\29;'";
1552    stri := literal(charExpr('\30;'));  ok := ok and stri = "'\\30;'";
1553    stri := literal(charExpr('\31;'));  ok := ok and stri = "'\\31;'";
1554    stri := literal(charExpr(' '));     ok := ok and stri = "' '";
1555    stri := literal(charExpr('"'));     ok := ok and stri = "'\\\"'";
1556    stri := literal(charExpr('\\'));    ok := ok and stri = "'\\\\'";
1557    stri := literal(charExpr('\''));    ok := ok and stri = "'\\''";
1558    stri := literal(charExpr('~'));     ok := ok and stri = "'~'";
1559    stri := literal(charExpr('\128;')); ok := ok and stri = "'\\128;'";
1560    stri := literal(charExpr('\128;')); ok := ok and stri = "'\\128;'";
1561    stri := literal(charExpr('\129;')); ok := ok and stri = "'\\129;'";
1562    stri := literal(charExpr('\130;')); ok := ok and stri = "'\\130;'";
1563    stri := literal(charExpr('\131;')); ok := ok and stri = "'\\131;'";
1564    stri := literal(charExpr('\132;')); ok := ok and stri = "'\\132;'";
1565    stri := literal(charExpr('\133;')); ok := ok and stri = "'\\133;'";
1566    stri := literal(charExpr('\134;')); ok := ok and stri = "'\\134;'";
1567    stri := literal(charExpr('\135;')); ok := ok and stri = "'\\135;'";
1568    stri := literal(charExpr('\136;')); ok := ok and stri = "'\\136;'";
1569    stri := literal(charExpr('\137;')); ok := ok and stri = "'\\137;'";
1570    stri := literal(charExpr('\138;')); ok := ok and stri = "'\\138;'";
1571    stri := literal(charExpr('\139;')); ok := ok and stri = "'\\139;'";
1572    stri := literal(charExpr('\140;')); ok := ok and stri = "'\\140;'";
1573    stri := literal(charExpr('\141;')); ok := ok and stri = "'\\141;'";
1574    stri := literal(charExpr('\142;')); ok := ok and stri = "'\\142;'";
1575    stri := literal(charExpr('\143;')); ok := ok and stri = "'\\143;'";
1576    stri := literal(charExpr('\144;')); ok := ok and stri = "'\\144;'";
1577    stri := literal(charExpr('\145;')); ok := ok and stri = "'\\145;'";
1578    stri := literal(charExpr('\146;')); ok := ok and stri = "'\\146;'";
1579    stri := literal(charExpr('\147;')); ok := ok and stri = "'\\147;'";
1580    stri := literal(charExpr('\148;')); ok := ok and stri = "'\\148;'";
1581    stri := literal(charExpr('\149;')); ok := ok and stri = "'\\149;'";
1582    stri := literal(charExpr('\150;')); ok := ok and stri = "'\\150;'";
1583    stri := literal(charExpr('\151;')); ok := ok and stri = "'\\151;'";
1584    stri := literal(charExpr('\152;')); ok := ok and stri = "'\\152;'";
1585    stri := literal(charExpr('\153;')); ok := ok and stri = "'\\153;'";
1586    stri := literal(charExpr('\154;')); ok := ok and stri = "'\\154;'";
1587    stri := literal(charExpr('\155;')); ok := ok and stri = "'\\155;'";
1588    stri := literal(charExpr('\156;')); ok := ok and stri = "'\\156;'";
1589    stri := literal(charExpr('\157;')); ok := ok and stri = "'\\157;'";
1590    stri := literal(charExpr('\158;')); ok := ok and stri = "'\\158;'";
1591    stri := literal(charExpr('\159;')); ok := ok and stri = "'\\159;'";
1592    stri := literal(charExpr('\160;')); ok := ok and stri = "'\\160;'";
1593    stri := literal(charExpr('¡'));     ok := ok and stri = "'¡'";
1594    stri := literal(charExpr('¤'));     ok := ok and stri = "'¤'";
1595    stri := literal(charExpr('§'));     ok := ok and stri = "'§'";
1596    stri := literal(charExpr('¬'));     ok := ok and stri = "'¬'";
1597    stri := literal(charExpr('­'));     ok := ok and stri = "'­'";
1598    stri := literal(charExpr('µ'));     ok := ok and stri = "'µ'";
1599    stri := literal(charExpr('¿'));     ok := ok and stri = "'¿'";
1600    stri := literal(charExpr('Ä'));     ok := ok and stri = "'Ä'";
1601    stri := literal(charExpr('×'));     ok := ok and stri = "'×'";
1602    stri := literal(charExpr('ß'));     ok := ok and stri = "'ß'";
1603    stri := literal(charExpr('ä'));     ok := ok and stri = "'ä'";
1604    stri := literal(charExpr('÷'));     ok := ok and stri = "'÷'";
1605    stri := literal(charExpr('ÿ'));     ok := ok and stri = "'ÿ'";
1606    stri := literal(charExpr('Œ'));     ok := ok and stri = "'\\338;'";
1607    stri := literal(charExpr('Š'));     ok := ok and stri = "'\\352;'";
1608    stri := literal(charExpr('ƒ'));     ok := ok and stri = "'\\402;'";
1609    stri := literal(charExpr('†'));     ok := ok and stri = "'\\8224;'";
1610    stri := literal(charExpr('•'));     ok := ok and stri = "'\\8226;'";
1611    stri := literal(charExpr('‰'));     ok := ok and stri = "'\\8240;'";
1612    stri := literal(charExpr('€'));     ok := ok and stri = "'\\8364;'";
1613    stri := literal(charExpr('™'));     ok := ok and stri = "'\\8482;'";
1614    if not ok then
1615      writeln(" ***** Function literal(ch) does not work correct. (4)");
1616      okay := FALSE;
1617    end if;
1618
1619    if  literalFunction('\0;')   <> "'\\0;'" or
1620        literalFunction('\1;')   <> "'\\1;'" or
1621        literalFunction('\2;')   <> "'\\2;'" or
1622        literalFunction('\3;')   <> "'\\3;'" or
1623        literalFunction('\4;')   <> "'\\4;'" or
1624        literalFunction('\5;')   <> "'\\5;'" or
1625        literalFunction('\6;')   <> "'\\6;'" or
1626        literalFunction('\a')    <> "'\\a'" or
1627        literalFunction('\b')    <> "'\\b'" or
1628        literalFunction('\t')    <> "'\\t'" or
1629        literalFunction('\n')    <> "'\\n'" or
1630        literalFunction('\v')    <> "'\\v'" or
1631        literalFunction('\f')    <> "'\\f'" or
1632        literalFunction('\r')    <> "'\\r'" or
1633        literalFunction('\14;')  <> "'\\14;'" or
1634        literalFunction('\15;')  <> "'\\15;'" or
1635        literalFunction('\16;')  <> "'\\16;'" or
1636        literalFunction('\17;')  <> "'\\17;'" or
1637        literalFunction('\18;')  <> "'\\18;'" or
1638        literalFunction('\19;')  <> "'\\19;'" or
1639        literalFunction('\20;')  <> "'\\20;'" or
1640        literalFunction('\21;')  <> "'\\21;'" or
1641        literalFunction('\22;')  <> "'\\22;'" or
1642        literalFunction('\23;')  <> "'\\23;'" or
1643        literalFunction('\24;')  <> "'\\24;'" or
1644        literalFunction('\25;')  <> "'\\25;'" or
1645        literalFunction('\26;')  <> "'\\26;'" or
1646        literalFunction('\e')    <> "'\\e'" or
1647        literalFunction('\28;')  <> "'\\28;'" or
1648        literalFunction('\29;')  <> "'\\29;'" or
1649        literalFunction('\30;')  <> "'\\30;'" or
1650        literalFunction('\31;')  <> "'\\31;'" or
1651        literalFunction(' ')     <> "' '" or
1652        literalFunction('"')     <> "'\\\"'" or
1653        literalFunction('\\')    <> "'\\\\'" or
1654        literalFunction('\'')    <> "'\\''" or
1655        literalFunction('~')     <> "'~'" or
1656        literalFunction('\128;') <> "'\\128;'" or
1657        literalFunction('\128;') <> "'\\128;'" or
1658        literalFunction('\129;') <> "'\\129;'" or
1659        literalFunction('\130;') <> "'\\130;'" or
1660        literalFunction('\131;') <> "'\\131;'" or
1661        literalFunction('\132;') <> "'\\132;'" or
1662        literalFunction('\133;') <> "'\\133;'" or
1663        literalFunction('\134;') <> "'\\134;'" or
1664        literalFunction('\135;') <> "'\\135;'" or
1665        literalFunction('\136;') <> "'\\136;'" or
1666        literalFunction('\137;') <> "'\\137;'" or
1667        literalFunction('\138;') <> "'\\138;'" or
1668        literalFunction('\139;') <> "'\\139;'" or
1669        literalFunction('\140;') <> "'\\140;'" or
1670        literalFunction('\141;') <> "'\\141;'" or
1671        literalFunction('\142;') <> "'\\142;'" or
1672        literalFunction('\143;') <> "'\\143;'" or
1673        literalFunction('\144;') <> "'\\144;'" or
1674        literalFunction('\145;') <> "'\\145;'" or
1675        literalFunction('\146;') <> "'\\146;'" or
1676        literalFunction('\147;') <> "'\\147;'" or
1677        literalFunction('\148;') <> "'\\148;'" or
1678        literalFunction('\149;') <> "'\\149;'" or
1679        literalFunction('\150;') <> "'\\150;'" or
1680        literalFunction('\151;') <> "'\\151;'" or
1681        literalFunction('\152;') <> "'\\152;'" or
1682        literalFunction('\153;') <> "'\\153;'" or
1683        literalFunction('\154;') <> "'\\154;'" or
1684        literalFunction('\155;') <> "'\\155;'" or
1685        literalFunction('\156;') <> "'\\156;'" or
1686        literalFunction('\157;') <> "'\\157;'" or
1687        literalFunction('\158;') <> "'\\158;'" or
1688        literalFunction('\159;') <> "'\\159;'" or
1689        literalFunction('\160;') <> "'\\160;'" or
1690        literalFunction('¡')     <> "'¡'" or
1691        literalFunction('¤')     <> "'¤'" or
1692        literalFunction('§')     <> "'§'" or
1693        literalFunction('¬')     <> "'¬'" or
1694        literalFunction('­')     <> "'­'" or
1695        literalFunction('µ')     <> "'µ'" or
1696        literalFunction('¿')     <> "'¿'" or
1697        literalFunction('Ä')     <> "'Ä'" or
1698        literalFunction('×')     <> "'×'" or
1699        literalFunction('ß')     <> "'ß'" or
1700        literalFunction('ä')     <> "'ä'" or
1701        literalFunction('÷')     <> "'÷'" or
1702        literalFunction('ÿ')     <> "'ÿ'" or
1703        literalFunction('Œ')     <> "'\\338;'" or
1704        literalFunction('Š')     <> "'\\352;'" or
1705        literalFunction('ƒ')     <> "'\\402;'" or
1706        literalFunction('†')     <> "'\\8224;'" or
1707        literalFunction('•')     <> "'\\8226;'" or
1708        literalFunction('‰')     <> "'\\8240;'" or
1709        literalFunction('€')     <> "'\\8364;'" or
1710        literalFunction('™')     <> "'\\8482;'" then
1711      writeln(" ***** Function literal(ch) via a function does not work correct. (1)");
1712      okay := FALSE;
1713    end if;
1714
1715    if  literalFunction(charExpr('\0;'))   <> "'\\0;'" or
1716        literalFunction(charExpr('\1;'))   <> "'\\1;'" or
1717        literalFunction(charExpr('\2;'))   <> "'\\2;'" or
1718        literalFunction(charExpr('\3;'))   <> "'\\3;'" or
1719        literalFunction(charExpr('\4;'))   <> "'\\4;'" or
1720        literalFunction(charExpr('\5;'))   <> "'\\5;'" or
1721        literalFunction(charExpr('\6;'))   <> "'\\6;'" or
1722        literalFunction(charExpr('\a'))    <> "'\\a'" or
1723        literalFunction(charExpr('\b'))    <> "'\\b'" or
1724        literalFunction(charExpr('\t'))    <> "'\\t'" or
1725        literalFunction(charExpr('\n'))    <> "'\\n'" or
1726        literalFunction(charExpr('\v'))    <> "'\\v'" or
1727        literalFunction(charExpr('\f'))    <> "'\\f'" or
1728        literalFunction(charExpr('\r'))    <> "'\\r'" or
1729        literalFunction(charExpr('\14;'))  <> "'\\14;'" or
1730        literalFunction(charExpr('\15;'))  <> "'\\15;'" or
1731        literalFunction(charExpr('\16;'))  <> "'\\16;'" or
1732        literalFunction(charExpr('\17;'))  <> "'\\17;'" or
1733        literalFunction(charExpr('\18;'))  <> "'\\18;'" or
1734        literalFunction(charExpr('\19;'))  <> "'\\19;'" or
1735        literalFunction(charExpr('\20;'))  <> "'\\20;'" or
1736        literalFunction(charExpr('\21;'))  <> "'\\21;'" or
1737        literalFunction(charExpr('\22;'))  <> "'\\22;'" or
1738        literalFunction(charExpr('\23;'))  <> "'\\23;'" or
1739        literalFunction(charExpr('\24;'))  <> "'\\24;'" or
1740        literalFunction(charExpr('\25;'))  <> "'\\25;'" or
1741        literalFunction(charExpr('\26;'))  <> "'\\26;'" or
1742        literalFunction(charExpr('\e'))    <> "'\\e'" or
1743        literalFunction(charExpr('\28;'))  <> "'\\28;'" or
1744        literalFunction(charExpr('\29;'))  <> "'\\29;'" or
1745        literalFunction(charExpr('\30;'))  <> "'\\30;'" or
1746        literalFunction(charExpr('\31;'))  <> "'\\31;'" or
1747        literalFunction(charExpr(' '))     <> "' '" or
1748        literalFunction(charExpr('"'))     <> "'\\\"'" or
1749        literalFunction(charExpr('\\'))    <> "'\\\\'" or
1750        literalFunction(charExpr('\''))    <> "'\\''" or
1751        literalFunction(charExpr('~'))     <> "'~'" or
1752        literalFunction(charExpr('\128;')) <> "'\\128;'" or
1753        literalFunction(charExpr('\128;')) <> "'\\128;'" or
1754        literalFunction(charExpr('\129;')) <> "'\\129;'" or
1755        literalFunction(charExpr('\130;')) <> "'\\130;'" or
1756        literalFunction(charExpr('\131;')) <> "'\\131;'" or
1757        literalFunction(charExpr('\132;')) <> "'\\132;'" or
1758        literalFunction(charExpr('\133;')) <> "'\\133;'" or
1759        literalFunction(charExpr('\134;')) <> "'\\134;'" or
1760        literalFunction(charExpr('\135;')) <> "'\\135;'" or
1761        literalFunction(charExpr('\136;')) <> "'\\136;'" or
1762        literalFunction(charExpr('\137;')) <> "'\\137;'" or
1763        literalFunction(charExpr('\138;')) <> "'\\138;'" or
1764        literalFunction(charExpr('\139;')) <> "'\\139;'" or
1765        literalFunction(charExpr('\140;')) <> "'\\140;'" or
1766        literalFunction(charExpr('\141;')) <> "'\\141;'" or
1767        literalFunction(charExpr('\142;')) <> "'\\142;'" or
1768        literalFunction(charExpr('\143;')) <> "'\\143;'" or
1769        literalFunction(charExpr('\144;')) <> "'\\144;'" or
1770        literalFunction(charExpr('\145;')) <> "'\\145;'" or
1771        literalFunction(charExpr('\146;')) <> "'\\146;'" or
1772        literalFunction(charExpr('\147;')) <> "'\\147;'" or
1773        literalFunction(charExpr('\148;')) <> "'\\148;'" or
1774        literalFunction(charExpr('\149;')) <> "'\\149;'" or
1775        literalFunction(charExpr('\150;')) <> "'\\150;'" or
1776        literalFunction(charExpr('\151;')) <> "'\\151;'" or
1777        literalFunction(charExpr('\152;')) <> "'\\152;'" or
1778        literalFunction(charExpr('\153;')) <> "'\\153;'" or
1779        literalFunction(charExpr('\154;')) <> "'\\154;'" or
1780        literalFunction(charExpr('\155;')) <> "'\\155;'" or
1781        literalFunction(charExpr('\156;')) <> "'\\156;'" or
1782        literalFunction(charExpr('\157;')) <> "'\\157;'" or
1783        literalFunction(charExpr('\158;')) <> "'\\158;'" or
1784        literalFunction(charExpr('\159;')) <> "'\\159;'" or
1785        literalFunction(charExpr('\160;')) <> "'\\160;'" or
1786        literalFunction(charExpr('¡'))     <> "'¡'" or
1787        literalFunction(charExpr('¤'))     <> "'¤'" or
1788        literalFunction(charExpr('§'))     <> "'§'" or
1789        literalFunction(charExpr('¬'))     <> "'¬'" or
1790        literalFunction(charExpr('­'))     <> "'­'" or
1791        literalFunction(charExpr('µ'))     <> "'µ'" or
1792        literalFunction(charExpr('¿'))     <> "'¿'" or
1793        literalFunction(charExpr('Ä'))     <> "'Ä'" or
1794        literalFunction(charExpr('×'))     <> "'×'" or
1795        literalFunction(charExpr('ß'))     <> "'ß'" or
1796        literalFunction(charExpr('ä'))     <> "'ä'" or
1797        literalFunction(charExpr('÷'))     <> "'÷'" or
1798        literalFunction(charExpr('ÿ'))     <> "'ÿ'" or
1799        literalFunction(charExpr('Œ'))     <> "'\\338;'" or
1800        literalFunction(charExpr('Š'))     <> "'\\352;'" or
1801        literalFunction(charExpr('ƒ'))     <> "'\\402;'" or
1802        literalFunction(charExpr('†'))     <> "'\\8224;'" or
1803        literalFunction(charExpr('•'))     <> "'\\8226;'" or
1804        literalFunction(charExpr('‰'))     <> "'\\8240;'" or
1805        literalFunction(charExpr('€'))     <> "'\\8364;'" or
1806        literalFunction(charExpr('™'))     <> "'\\8482;'" then
1807      writeln(" ***** Function literal(ch) via a function does not work correct. (2)");
1808      okay := FALSE;
1809    end if;
1810
1811    if  c_literal('\0;')   <> "'\\000'" or
1812        c_literal('\1;')   <> "'\\001'" or
1813        c_literal('\2;')   <> "'\\002'" or
1814        c_literal('\3;')   <> "'\\003'" or
1815        c_literal('\4;')   <> "'\\004'" or
1816        c_literal('\5;')   <> "'\\005'" or
1817        c_literal('\6;')   <> "'\\006'" or
1818        c_literal('\7;')   <> "'\\007'" or
1819        c_literal('\b')    <> "'\\b'" or
1820        c_literal('\t')    <> "'\\t'" or
1821        c_literal('\n')    <> "'\\n'" or
1822        c_literal('\11;')  <> "'\\013'" or
1823        c_literal('\f')    <> "'\\f'" or
1824        c_literal('\r')    <> "'\\r'" or
1825        c_literal('\14;')  <> "'\\016'" or
1826        c_literal('\15;')  <> "'\\017'" or
1827        c_literal('\16;')  <> "'\\020'" or
1828        c_literal('\17;')  <> "'\\021'" or
1829        c_literal('\18;')  <> "'\\022'" or
1830        c_literal('\19;')  <> "'\\023'" or
1831        c_literal('\20;')  <> "'\\024'" or
1832        c_literal('\21;')  <> "'\\025'" or
1833        c_literal('\22;')  <> "'\\026'" or
1834        c_literal('\23;')  <> "'\\027'" or
1835        c_literal('\24;')  <> "'\\030'" or
1836        c_literal('\25;')  <> "'\\031'" or
1837        c_literal('\26;')  <> "'\\032'" or
1838        c_literal('\27;')  <> "'\\033'" or
1839        c_literal('\28;')  <> "'\\034'" or
1840        c_literal('\29;')  <> "'\\035'" or
1841        c_literal('\30;')  <> "'\\036'" or
1842        c_literal('\31;')  <> "'\\037'" or
1843        c_literal(' ')     <> "' '" or
1844        c_literal('!')     <> "'!'" or
1845        c_literal('"')     <> "'\"'" or
1846        c_literal('\\')    <> "'\\\\'" or
1847        c_literal('\'')    <> "'\\''" or
1848        c_literal('~')     <> "'~'" or
1849        c_literal('\128;') <> "128" or
1850        c_literal('\129;') <> "129" or
1851        c_literal('\130;') <> "130" or
1852        c_literal('\131;') <> "131" or
1853        c_literal('\132;') <> "132" or
1854        c_literal('\133;') <> "133" or
1855        c_literal('\134;') <> "134" or
1856        c_literal('\135;') <> "135" or
1857        c_literal('\136;') <> "136" or
1858        c_literal('\137;') <> "137" or
1859        c_literal('\138;') <> "138" or
1860        c_literal('\139;') <> "139" or
1861        c_literal('\140;') <> "140" or
1862        c_literal('\141;') <> "141" or
1863        c_literal('\142;') <> "142" or
1864        c_literal('\143;') <> "143" or
1865        c_literal('\144;') <> "144" or
1866        c_literal('\145;') <> "145" or
1867        c_literal('\146;') <> "146" or
1868        c_literal('\147;') <> "147" or
1869        c_literal('\148;') <> "148" or
1870        c_literal('\149;') <> "149" or
1871        c_literal('\150;') <> "150" or
1872        c_literal('\151;') <> "151" or
1873        c_literal('\152;') <> "152" or
1874        c_literal('\153;') <> "153" or
1875        c_literal('\154;') <> "154" or
1876        c_literal('\155;') <> "155" or
1877        c_literal('\156;') <> "156" or
1878        c_literal('\157;') <> "157" or
1879        c_literal('\158;') <> "158" or
1880        c_literal('\159;') <> "159" or
1881        c_literal('\160;') <> "160" or
1882        c_literal('¡')     <> "161" or
1883        c_literal('¤')     <> "164" or
1884        c_literal('§')     <> "167" or
1885        c_literal('¬')     <> "172" or
1886        c_literal('­')     <> "173" or
1887        c_literal('µ')     <> "181" or
1888        c_literal('¿')     <> "191" or
1889        c_literal('Ä')     <> "196" or
1890        c_literal('×')     <> "215" or
1891        c_literal('ß')     <> "223" or
1892        c_literal('ä')     <> "228" or
1893        c_literal('÷')     <> "247" or
1894        c_literal('ÿ')     <> "255" or
1895        c_literal('Œ')     <> "338" or
1896        c_literal('Š')     <> "352" or
1897        c_literal('ƒ')     <> "402" or
1898        c_literal('†')     <> "8224" or
1899        c_literal('•')     <> "8226" or
1900        c_literal('‰')     <> "8240" or
1901        c_literal('€')     <> "8364" or
1902        c_literal('™')     <> "8482" then
1903      writeln(" ***** Function c_literal(ch) does not work correct. (1)");
1904      okay := FALSE;
1905    end if;
1906
1907    if  c_literal(charExpr('\0;'))   <> "'\\000'" or
1908        c_literal(charExpr('\1;'))   <> "'\\001'" or
1909        c_literal(charExpr('\2;'))   <> "'\\002'" or
1910        c_literal(charExpr('\3;'))   <> "'\\003'" or
1911        c_literal(charExpr('\4;'))   <> "'\\004'" or
1912        c_literal(charExpr('\5;'))   <> "'\\005'" or
1913        c_literal(charExpr('\6;'))   <> "'\\006'" or
1914        c_literal(charExpr('\7;'))   <> "'\\007'" or
1915        c_literal(charExpr('\b'))    <> "'\\b'" or
1916        c_literal(charExpr('\t'))    <> "'\\t'" or
1917        c_literal(charExpr('\n'))    <> "'\\n'" or
1918        c_literal(charExpr('\11;'))  <> "'\\013'" or
1919        c_literal(charExpr('\f'))    <> "'\\f'" or
1920        c_literal(charExpr('\r'))    <> "'\\r'" or
1921        c_literal(charExpr('\14;'))  <> "'\\016'" or
1922        c_literal(charExpr('\15;'))  <> "'\\017'" or
1923        c_literal(charExpr('\16;'))  <> "'\\020'" or
1924        c_literal(charExpr('\17;'))  <> "'\\021'" or
1925        c_literal(charExpr('\18;'))  <> "'\\022'" or
1926        c_literal(charExpr('\19;'))  <> "'\\023'" or
1927        c_literal(charExpr('\20;'))  <> "'\\024'" or
1928        c_literal(charExpr('\21;'))  <> "'\\025'" or
1929        c_literal(charExpr('\22;'))  <> "'\\026'" or
1930        c_literal(charExpr('\23;'))  <> "'\\027'" or
1931        c_literal(charExpr('\24;'))  <> "'\\030'" or
1932        c_literal(charExpr('\25;'))  <> "'\\031'" or
1933        c_literal(charExpr('\26;'))  <> "'\\032'" or
1934        c_literal(charExpr('\27;'))  <> "'\\033'" or
1935        c_literal(charExpr('\28;'))  <> "'\\034'" or
1936        c_literal(charExpr('\29;'))  <> "'\\035'" or
1937        c_literal(charExpr('\30;'))  <> "'\\036'" or
1938        c_literal(charExpr('\31;'))  <> "'\\037'" or
1939        c_literal(charExpr(' '))     <> "' '" or
1940        c_literal(charExpr('!'))     <> "'!'" or
1941        c_literal(charExpr('"'))     <> "'\"'" or
1942        c_literal(charExpr('\\'))    <> "'\\\\'" or
1943        c_literal(charExpr('\''))    <> "'\\''" or
1944        c_literal(charExpr('~'))     <> "'~'" or
1945        c_literal(charExpr('\128;')) <> "128" or
1946        c_literal(charExpr('\129;')) <> "129" or
1947        c_literal(charExpr('\130;')) <> "130" or
1948        c_literal(charExpr('\131;')) <> "131" or
1949        c_literal(charExpr('\132;')) <> "132" or
1950        c_literal(charExpr('\133;')) <> "133" or
1951        c_literal(charExpr('\134;')) <> "134" or
1952        c_literal(charExpr('\135;')) <> "135" or
1953        c_literal(charExpr('\136;')) <> "136" or
1954        c_literal(charExpr('\137;')) <> "137" or
1955        c_literal(charExpr('\138;')) <> "138" or
1956        c_literal(charExpr('\139;')) <> "139" or
1957        c_literal(charExpr('\140;')) <> "140" or
1958        c_literal(charExpr('\141;')) <> "141" or
1959        c_literal(charExpr('\142;')) <> "142" or
1960        c_literal(charExpr('\143;')) <> "143" or
1961        c_literal(charExpr('\144;')) <> "144" or
1962        c_literal(charExpr('\145;')) <> "145" or
1963        c_literal(charExpr('\146;')) <> "146" or
1964        c_literal(charExpr('\147;')) <> "147" or
1965        c_literal(charExpr('\148;')) <> "148" or
1966        c_literal(charExpr('\149;')) <> "149" or
1967        c_literal(charExpr('\150;')) <> "150" or
1968        c_literal(charExpr('\151;')) <> "151" or
1969        c_literal(charExpr('\152;')) <> "152" or
1970        c_literal(charExpr('\153;')) <> "153" or
1971        c_literal(charExpr('\154;')) <> "154" or
1972        c_literal(charExpr('\155;')) <> "155" or
1973        c_literal(charExpr('\156;')) <> "156" or
1974        c_literal(charExpr('\157;')) <> "157" or
1975        c_literal(charExpr('\158;')) <> "158" or
1976        c_literal(charExpr('\159;')) <> "159" or
1977        c_literal(charExpr('\160;')) <> "160" or
1978        c_literal(charExpr('¡'))     <> "161" or
1979        c_literal(charExpr('¤'))     <> "164" or
1980        c_literal(charExpr('§'))     <> "167" or
1981        c_literal(charExpr('¬'))     <> "172" or
1982        c_literal(charExpr('­'))     <> "173" or
1983        c_literal(charExpr('µ'))     <> "181" or
1984        c_literal(charExpr('¿'))     <> "191" or
1985        c_literal(charExpr('Ä'))     <> "196" or
1986        c_literal(charExpr('×'))     <> "215" or
1987        c_literal(charExpr('ß'))     <> "223" or
1988        c_literal(charExpr('ä'))     <> "228" or
1989        c_literal(charExpr('÷'))     <> "247" or
1990        c_literal(charExpr('ÿ'))     <> "255" or
1991        c_literal(charExpr('Œ'))     <> "338" or
1992        c_literal(charExpr('Š'))     <> "352" or
1993        c_literal(charExpr('ƒ'))     <> "402" or
1994        c_literal(charExpr('†'))     <> "8224" or
1995        c_literal(charExpr('•'))     <> "8226" or
1996        c_literal(charExpr('‰'))     <> "8240" or
1997        c_literal(charExpr('€'))     <> "8364" or
1998        c_literal(charExpr('™'))     <> "8482" then
1999      writeln(" ***** Function c_literal(ch) does not work correct. (2)");
2000      okay := FALSE;
2001    end if;
2002
2003    ok := TRUE;
2004    stri := c_literal('\0;');   ok := ok and stri = "'\\000'";
2005    stri := c_literal('\1;');   ok := ok and stri = "'\\001'";
2006    stri := c_literal('\2;');   ok := ok and stri = "'\\002'";
2007    stri := c_literal('\3;');   ok := ok and stri = "'\\003'";
2008    stri := c_literal('\4;');   ok := ok and stri = "'\\004'";
2009    stri := c_literal('\5;');   ok := ok and stri = "'\\005'";
2010    stri := c_literal('\6;');   ok := ok and stri = "'\\006'";
2011    stri := c_literal('\7;');   ok := ok and stri = "'\\007'";
2012    stri := c_literal('\b');    ok := ok and stri = "'\\b'";
2013    stri := c_literal('\t');    ok := ok and stri = "'\\t'";
2014    stri := c_literal('\n');    ok := ok and stri = "'\\n'";
2015    stri := c_literal('\11;');  ok := ok and stri = "'\\013'";
2016    stri := c_literal('\f');    ok := ok and stri = "'\\f'";
2017    stri := c_literal('\r');    ok := ok and stri = "'\\r'";
2018    stri := c_literal('\14;');  ok := ok and stri = "'\\016'";
2019    stri := c_literal('\15;');  ok := ok and stri = "'\\017'";
2020    stri := c_literal('\16;');  ok := ok and stri = "'\\020'";
2021    stri := c_literal('\17;');  ok := ok and stri = "'\\021'";
2022    stri := c_literal('\18;');  ok := ok and stri = "'\\022'";
2023    stri := c_literal('\19;');  ok := ok and stri = "'\\023'";
2024    stri := c_literal('\20;');  ok := ok and stri = "'\\024'";
2025    stri := c_literal('\21;');  ok := ok and stri = "'\\025'";
2026    stri := c_literal('\22;');  ok := ok and stri = "'\\026'";
2027    stri := c_literal('\23;');  ok := ok and stri = "'\\027'";
2028    stri := c_literal('\24;');  ok := ok and stri = "'\\030'";
2029    stri := c_literal('\25;');  ok := ok and stri = "'\\031'";
2030    stri := c_literal('\26;');  ok := ok and stri = "'\\032'";
2031    stri := c_literal('\27;');  ok := ok and stri = "'\\033'";
2032    stri := c_literal('\28;');  ok := ok and stri = "'\\034'";
2033    stri := c_literal('\29;');  ok := ok and stri = "'\\035'";
2034    stri := c_literal('\30;');  ok := ok and stri = "'\\036'";
2035    stri := c_literal('\31;');  ok := ok and stri = "'\\037'";
2036    stri := c_literal(' ');     ok := ok and stri = "' '";
2037    stri := c_literal('!');     ok := ok and stri = "'!'";
2038    stri := c_literal('"');     ok := ok and stri = "'\"'";
2039    stri := c_literal('\\');    ok := ok and stri = "'\\\\'";
2040    stri := c_literal('\'');    ok := ok and stri = "'\\''";
2041    stri := c_literal('~');     ok := ok and stri = "'~'";
2042    stri := c_literal('\128;'); ok := ok and stri = "128";
2043    stri := c_literal('\129;'); ok := ok and stri = "129";
2044    stri := c_literal('\130;'); ok := ok and stri = "130";
2045    stri := c_literal('\131;'); ok := ok and stri = "131";
2046    stri := c_literal('\132;'); ok := ok and stri = "132";
2047    stri := c_literal('\133;'); ok := ok and stri = "133";
2048    stri := c_literal('\134;'); ok := ok and stri = "134";
2049    stri := c_literal('\135;'); ok := ok and stri = "135";
2050    stri := c_literal('\136;'); ok := ok and stri = "136";
2051    stri := c_literal('\137;'); ok := ok and stri = "137";
2052    stri := c_literal('\138;'); ok := ok and stri = "138";
2053    stri := c_literal('\139;'); ok := ok and stri = "139";
2054    stri := c_literal('\140;'); ok := ok and stri = "140";
2055    stri := c_literal('\141;'); ok := ok and stri = "141";
2056    stri := c_literal('\142;'); ok := ok and stri = "142";
2057    stri := c_literal('\143;'); ok := ok and stri = "143";
2058    stri := c_literal('\144;'); ok := ok and stri = "144";
2059    stri := c_literal('\145;'); ok := ok and stri = "145";
2060    stri := c_literal('\146;'); ok := ok and stri = "146";
2061    stri := c_literal('\147;'); ok := ok and stri = "147";
2062    stri := c_literal('\148;'); ok := ok and stri = "148";
2063    stri := c_literal('\149;'); ok := ok and stri = "149";
2064    stri := c_literal('\150;'); ok := ok and stri = "150";
2065    stri := c_literal('\151;'); ok := ok and stri = "151";
2066    stri := c_literal('\152;'); ok := ok and stri = "152";
2067    stri := c_literal('\153;'); ok := ok and stri = "153";
2068    stri := c_literal('\154;'); ok := ok and stri = "154";
2069    stri := c_literal('\155;'); ok := ok and stri = "155";
2070    stri := c_literal('\156;'); ok := ok and stri = "156";
2071    stri := c_literal('\157;'); ok := ok and stri = "157";
2072    stri := c_literal('\158;'); ok := ok and stri = "158";
2073    stri := c_literal('\159;'); ok := ok and stri = "159";
2074    stri := c_literal('\160;'); ok := ok and stri = "160";
2075    stri := c_literal('¡');     ok := ok and stri = "161";
2076    stri := c_literal('¤');     ok := ok and stri = "164";
2077    stri := c_literal('§');     ok := ok and stri = "167";
2078    stri := c_literal('¬');     ok := ok and stri = "172";
2079    stri := c_literal('­');     ok := ok and stri = "173";
2080    stri := c_literal('µ');     ok := ok and stri = "181";
2081    stri := c_literal('¿');     ok := ok and stri = "191";
2082    stri := c_literal('Ä');     ok := ok and stri = "196";
2083    stri := c_literal('×');     ok := ok and stri = "215";
2084    stri := c_literal('ß');     ok := ok and stri = "223";
2085    stri := c_literal('ä');     ok := ok and stri = "228";
2086    stri := c_literal('÷');     ok := ok and stri = "247";
2087    stri := c_literal('ÿ');     ok := ok and stri = "255";
2088    stri := c_literal('Œ');     ok := ok and stri = "338";
2089    stri := c_literal('Š');     ok := ok and stri = "352";
2090    stri := c_literal('ƒ');     ok := ok and stri = "402";
2091    stri := c_literal('†');     ok := ok and stri = "8224";
2092    stri := c_literal('•');     ok := ok and stri = "8226";
2093    stri := c_literal('‰');     ok := ok and stri = "8240";
2094    stri := c_literal('€');     ok := ok and stri = "8364";
2095    stri := c_literal('™');     ok := ok and stri = "8482";
2096    if not ok then
2097      writeln(" ***** Function c_literal(ch) does not work correct. (3)");
2098      okay := FALSE;
2099    end if;
2100
2101    ok := TRUE;
2102    stri := c_literal(charExpr('\0;'));   ok := ok and stri = "'\\000'";
2103    stri := c_literal(charExpr('\1;'));   ok := ok and stri = "'\\001'";
2104    stri := c_literal(charExpr('\2;'));   ok := ok and stri = "'\\002'";
2105    stri := c_literal(charExpr('\3;'));   ok := ok and stri = "'\\003'";
2106    stri := c_literal(charExpr('\4;'));   ok := ok and stri = "'\\004'";
2107    stri := c_literal(charExpr('\5;'));   ok := ok and stri = "'\\005'";
2108    stri := c_literal(charExpr('\6;'));   ok := ok and stri = "'\\006'";
2109    stri := c_literal(charExpr('\7;'));   ok := ok and stri = "'\\007'";
2110    stri := c_literal(charExpr('\b'));    ok := ok and stri = "'\\b'";
2111    stri := c_literal(charExpr('\t'));    ok := ok and stri = "'\\t'";
2112    stri := c_literal(charExpr('\n'));    ok := ok and stri = "'\\n'";
2113    stri := c_literal(charExpr('\11;'));  ok := ok and stri = "'\\013'";
2114    stri := c_literal(charExpr('\f'));    ok := ok and stri = "'\\f'";
2115    stri := c_literal(charExpr('\r'));    ok := ok and stri = "'\\r'";
2116    stri := c_literal(charExpr('\14;'));  ok := ok and stri = "'\\016'";
2117    stri := c_literal(charExpr('\15;'));  ok := ok and stri = "'\\017'";
2118    stri := c_literal(charExpr('\16;'));  ok := ok and stri = "'\\020'";
2119    stri := c_literal(charExpr('\17;'));  ok := ok and stri = "'\\021'";
2120    stri := c_literal(charExpr('\18;'));  ok := ok and stri = "'\\022'";
2121    stri := c_literal(charExpr('\19;'));  ok := ok and stri = "'\\023'";
2122    stri := c_literal(charExpr('\20;'));  ok := ok and stri = "'\\024'";
2123    stri := c_literal(charExpr('\21;'));  ok := ok and stri = "'\\025'";
2124    stri := c_literal(charExpr('\22;'));  ok := ok and stri = "'\\026'";
2125    stri := c_literal(charExpr('\23;'));  ok := ok and stri = "'\\027'";
2126    stri := c_literal(charExpr('\24;'));  ok := ok and stri = "'\\030'";
2127    stri := c_literal(charExpr('\25;'));  ok := ok and stri = "'\\031'";
2128    stri := c_literal(charExpr('\26;'));  ok := ok and stri = "'\\032'";
2129    stri := c_literal(charExpr('\27;'));  ok := ok and stri = "'\\033'";
2130    stri := c_literal(charExpr('\28;'));  ok := ok and stri = "'\\034'";
2131    stri := c_literal(charExpr('\29;'));  ok := ok and stri = "'\\035'";
2132    stri := c_literal(charExpr('\30;'));  ok := ok and stri = "'\\036'";
2133    stri := c_literal(charExpr('\31;'));  ok := ok and stri = "'\\037'";
2134    stri := c_literal(charExpr(' '));     ok := ok and stri = "' '";
2135    stri := c_literal(charExpr('!'));     ok := ok and stri = "'!'";
2136    stri := c_literal(charExpr('"'));     ok := ok and stri = "'\"'";
2137    stri := c_literal(charExpr('\\'));    ok := ok and stri = "'\\\\'";
2138    stri := c_literal(charExpr('\''));    ok := ok and stri = "'\\''";
2139    stri := c_literal(charExpr('~'));     ok := ok and stri = "'~'";
2140    stri := c_literal(charExpr('\128;')); ok := ok and stri = "128";
2141    stri := c_literal(charExpr('\129;')); ok := ok and stri = "129";
2142    stri := c_literal(charExpr('\130;')); ok := ok and stri = "130";
2143    stri := c_literal(charExpr('\131;')); ok := ok and stri = "131";
2144    stri := c_literal(charExpr('\132;')); ok := ok and stri = "132";
2145    stri := c_literal(charExpr('\133;')); ok := ok and stri = "133";
2146    stri := c_literal(charExpr('\134;')); ok := ok and stri = "134";
2147    stri := c_literal(charExpr('\135;')); ok := ok and stri = "135";
2148    stri := c_literal(charExpr('\136;')); ok := ok and stri = "136";
2149    stri := c_literal(charExpr('\137;')); ok := ok and stri = "137";
2150    stri := c_literal(charExpr('\138;')); ok := ok and stri = "138";
2151    stri := c_literal(charExpr('\139;')); ok := ok and stri = "139";
2152    stri := c_literal(charExpr('\140;')); ok := ok and stri = "140";
2153    stri := c_literal(charExpr('\141;')); ok := ok and stri = "141";
2154    stri := c_literal(charExpr('\142;')); ok := ok and stri = "142";
2155    stri := c_literal(charExpr('\143;')); ok := ok and stri = "143";
2156    stri := c_literal(charExpr('\144;')); ok := ok and stri = "144";
2157    stri := c_literal(charExpr('\145;')); ok := ok and stri = "145";
2158    stri := c_literal(charExpr('\146;')); ok := ok and stri = "146";
2159    stri := c_literal(charExpr('\147;')); ok := ok and stri = "147";
2160    stri := c_literal(charExpr('\148;')); ok := ok and stri = "148";
2161    stri := c_literal(charExpr('\149;')); ok := ok and stri = "149";
2162    stri := c_literal(charExpr('\150;')); ok := ok and stri = "150";
2163    stri := c_literal(charExpr('\151;')); ok := ok and stri = "151";
2164    stri := c_literal(charExpr('\152;')); ok := ok and stri = "152";
2165    stri := c_literal(charExpr('\153;')); ok := ok and stri = "153";
2166    stri := c_literal(charExpr('\154;')); ok := ok and stri = "154";
2167    stri := c_literal(charExpr('\155;')); ok := ok and stri = "155";
2168    stri := c_literal(charExpr('\156;')); ok := ok and stri = "156";
2169    stri := c_literal(charExpr('\157;')); ok := ok and stri = "157";
2170    stri := c_literal(charExpr('\158;')); ok := ok and stri = "158";
2171    stri := c_literal(charExpr('\159;')); ok := ok and stri = "159";
2172    stri := c_literal(charExpr('\160;')); ok := ok and stri = "160";
2173    stri := c_literal(charExpr('¡'));     ok := ok and stri = "161";
2174    stri := c_literal(charExpr('¤'));     ok := ok and stri = "164";
2175    stri := c_literal(charExpr('§'));     ok := ok and stri = "167";
2176    stri := c_literal(charExpr('¬'));     ok := ok and stri = "172";
2177    stri := c_literal(charExpr('­'));     ok := ok and stri = "173";
2178    stri := c_literal(charExpr('µ'));     ok := ok and stri = "181";
2179    stri := c_literal(charExpr('¿'));     ok := ok and stri = "191";
2180    stri := c_literal(charExpr('Ä'));     ok := ok and stri = "196";
2181    stri := c_literal(charExpr('×'));     ok := ok and stri = "215";
2182    stri := c_literal(charExpr('ß'));     ok := ok and stri = "223";
2183    stri := c_literal(charExpr('ä'));     ok := ok and stri = "228";
2184    stri := c_literal(charExpr('÷'));     ok := ok and stri = "247";
2185    stri := c_literal(charExpr('ÿ'));     ok := ok and stri = "255";
2186    stri := c_literal(charExpr('Œ'));     ok := ok and stri = "338";
2187    stri := c_literal(charExpr('Š'));     ok := ok and stri = "352";
2188    stri := c_literal(charExpr('ƒ'));     ok := ok and stri = "402";
2189    stri := c_literal(charExpr('†'));     ok := ok and stri = "8224";
2190    stri := c_literal(charExpr('•'));     ok := ok and stri = "8226";
2191    stri := c_literal(charExpr('‰'));     ok := ok and stri = "8240";
2192    stri := c_literal(charExpr('€'));     ok := ok and stri = "8364";
2193    stri := c_literal(charExpr('™'));     ok := ok and stri = "8482";
2194    if not ok then
2195      writeln(" ***** Function c_literal(ch) does not work correct. (4)");
2196      okay := FALSE;
2197    end if;
2198
2199    if  cLiteralFunction('\0;')   <> "'\\000'" or
2200        cLiteralFunction('\1;')   <> "'\\001'" or
2201        cLiteralFunction('\2;')   <> "'\\002'" or
2202        cLiteralFunction('\3;')   <> "'\\003'" or
2203        cLiteralFunction('\4;')   <> "'\\004'" or
2204        cLiteralFunction('\5;')   <> "'\\005'" or
2205        cLiteralFunction('\6;')   <> "'\\006'" or
2206        cLiteralFunction('\7;')   <> "'\\007'" or
2207        cLiteralFunction('\b')    <> "'\\b'" or
2208        cLiteralFunction('\t')    <> "'\\t'" or
2209        cLiteralFunction('\n')    <> "'\\n'" or
2210        cLiteralFunction('\11;')  <> "'\\013'" or
2211        cLiteralFunction('\f')    <> "'\\f'" or
2212        cLiteralFunction('\r')    <> "'\\r'" or
2213        cLiteralFunction('\14;')  <> "'\\016'" or
2214        cLiteralFunction('\15;')  <> "'\\017'" or
2215        cLiteralFunction('\16;')  <> "'\\020'" or
2216        cLiteralFunction('\17;')  <> "'\\021'" or
2217        cLiteralFunction('\18;')  <> "'\\022'" or
2218        cLiteralFunction('\19;')  <> "'\\023'" or
2219        cLiteralFunction('\20;')  <> "'\\024'" or
2220        cLiteralFunction('\21;')  <> "'\\025'" or
2221        cLiteralFunction('\22;')  <> "'\\026'" or
2222        cLiteralFunction('\23;')  <> "'\\027'" or
2223        cLiteralFunction('\24;')  <> "'\\030'" or
2224        cLiteralFunction('\25;')  <> "'\\031'" or
2225        cLiteralFunction('\26;')  <> "'\\032'" or
2226        cLiteralFunction('\27;')  <> "'\\033'" or
2227        cLiteralFunction('\28;')  <> "'\\034'" or
2228        cLiteralFunction('\29;')  <> "'\\035'" or
2229        cLiteralFunction('\30;')  <> "'\\036'" or
2230        cLiteralFunction('\31;')  <> "'\\037'" or
2231        cLiteralFunction(' ')     <> "' '" or
2232        cLiteralFunction('!')     <> "'!'" or
2233        cLiteralFunction('"')     <> "'\"'" or
2234        cLiteralFunction('\\')    <> "'\\\\'" or
2235        cLiteralFunction('\'')    <> "'\\''" or
2236        cLiteralFunction('~')     <> "'~'" or
2237        cLiteralFunction('\128;') <> "128" or
2238        cLiteralFunction('\129;') <> "129" or
2239        cLiteralFunction('\130;') <> "130" or
2240        cLiteralFunction('\131;') <> "131" or
2241        cLiteralFunction('\132;') <> "132" or
2242        cLiteralFunction('\133;') <> "133" or
2243        cLiteralFunction('\134;') <> "134" or
2244        cLiteralFunction('\135;') <> "135" or
2245        cLiteralFunction('\136;') <> "136" or
2246        cLiteralFunction('\137;') <> "137" or
2247        cLiteralFunction('\138;') <> "138" or
2248        cLiteralFunction('\139;') <> "139" or
2249        cLiteralFunction('\140;') <> "140" or
2250        cLiteralFunction('\141;') <> "141" or
2251        cLiteralFunction('\142;') <> "142" or
2252        cLiteralFunction('\143;') <> "143" or
2253        cLiteralFunction('\144;') <> "144" or
2254        cLiteralFunction('\145;') <> "145" or
2255        cLiteralFunction('\146;') <> "146" or
2256        cLiteralFunction('\147;') <> "147" or
2257        cLiteralFunction('\148;') <> "148" or
2258        cLiteralFunction('\149;') <> "149" or
2259        cLiteralFunction('\150;') <> "150" or
2260        cLiteralFunction('\151;') <> "151" or
2261        cLiteralFunction('\152;') <> "152" or
2262        cLiteralFunction('\153;') <> "153" or
2263        cLiteralFunction('\154;') <> "154" or
2264        cLiteralFunction('\155;') <> "155" or
2265        cLiteralFunction('\156;') <> "156" or
2266        cLiteralFunction('\157;') <> "157" or
2267        cLiteralFunction('\158;') <> "158" or
2268        cLiteralFunction('\159;') <> "159" or
2269        cLiteralFunction('\160;') <> "160" or
2270        cLiteralFunction('¡')     <> "161" or
2271        cLiteralFunction('¤')     <> "164" or
2272        cLiteralFunction('§')     <> "167" or
2273        cLiteralFunction('¬')     <> "172" or
2274        cLiteralFunction('­')     <> "173" or
2275        cLiteralFunction('µ')     <> "181" or
2276        cLiteralFunction('¿')     <> "191" or
2277        cLiteralFunction('Ä')     <> "196" or
2278        cLiteralFunction('×')     <> "215" or
2279        cLiteralFunction('ß')     <> "223" or
2280        cLiteralFunction('ä')     <> "228" or
2281        cLiteralFunction('÷')     <> "247" or
2282        cLiteralFunction('ÿ')     <> "255" or
2283        cLiteralFunction('Œ')     <> "338" or
2284        cLiteralFunction('Š')     <> "352" or
2285        cLiteralFunction('ƒ')     <> "402" or
2286        cLiteralFunction('†')     <> "8224" or
2287        cLiteralFunction('•')     <> "8226" or
2288        cLiteralFunction('‰')     <> "8240" or
2289        cLiteralFunction('€')     <> "8364" or
2290        cLiteralFunction('™')     <> "8482" then
2291      writeln(" ***** Function c_literal(ch) via a function does not work correct. (1)");
2292      okay := FALSE;
2293    end if;
2294
2295    if  cLiteralFunction(charExpr('\0;'))   <> "'\\000'" or
2296        cLiteralFunction(charExpr('\1;'))   <> "'\\001'" or
2297        cLiteralFunction(charExpr('\2;'))   <> "'\\002'" or
2298        cLiteralFunction(charExpr('\3;'))   <> "'\\003'" or
2299        cLiteralFunction(charExpr('\4;'))   <> "'\\004'" or
2300        cLiteralFunction(charExpr('\5;'))   <> "'\\005'" or
2301        cLiteralFunction(charExpr('\6;'))   <> "'\\006'" or
2302        cLiteralFunction(charExpr('\7;'))   <> "'\\007'" or
2303        cLiteralFunction(charExpr('\b'))    <> "'\\b'" or
2304        cLiteralFunction(charExpr('\t'))    <> "'\\t'" or
2305        cLiteralFunction(charExpr('\n'))    <> "'\\n'" or
2306        cLiteralFunction(charExpr('\11;'))  <> "'\\013'" or
2307        cLiteralFunction(charExpr('\f'))    <> "'\\f'" or
2308        cLiteralFunction(charExpr('\r'))    <> "'\\r'" or
2309        cLiteralFunction(charExpr('\14;'))  <> "'\\016'" or
2310        cLiteralFunction(charExpr('\15;'))  <> "'\\017'" or
2311        cLiteralFunction(charExpr('\16;'))  <> "'\\020'" or
2312        cLiteralFunction(charExpr('\17;'))  <> "'\\021'" or
2313        cLiteralFunction(charExpr('\18;'))  <> "'\\022'" or
2314        cLiteralFunction(charExpr('\19;'))  <> "'\\023'" or
2315        cLiteralFunction(charExpr('\20;'))  <> "'\\024'" or
2316        cLiteralFunction(charExpr('\21;'))  <> "'\\025'" or
2317        cLiteralFunction(charExpr('\22;'))  <> "'\\026'" or
2318        cLiteralFunction(charExpr('\23;'))  <> "'\\027'" or
2319        cLiteralFunction(charExpr('\24;'))  <> "'\\030'" or
2320        cLiteralFunction(charExpr('\25;'))  <> "'\\031'" or
2321        cLiteralFunction(charExpr('\26;'))  <> "'\\032'" or
2322        cLiteralFunction(charExpr('\27;'))  <> "'\\033'" or
2323        cLiteralFunction(charExpr('\28;'))  <> "'\\034'" or
2324        cLiteralFunction(charExpr('\29;'))  <> "'\\035'" or
2325        cLiteralFunction(charExpr('\30;'))  <> "'\\036'" or
2326        cLiteralFunction(charExpr('\31;'))  <> "'\\037'" or
2327        cLiteralFunction(charExpr(' '))     <> "' '" or
2328        cLiteralFunction(charExpr('!'))     <> "'!'" or
2329        cLiteralFunction(charExpr('"'))     <> "'\"'" or
2330        cLiteralFunction(charExpr('\\'))    <> "'\\\\'" or
2331        cLiteralFunction(charExpr('\''))    <> "'\\''" or
2332        cLiteralFunction(charExpr('~'))     <> "'~'" or
2333        cLiteralFunction(charExpr('\128;')) <> "128" or
2334        cLiteralFunction(charExpr('\129;')) <> "129" or
2335        cLiteralFunction(charExpr('\130;')) <> "130" or
2336        cLiteralFunction(charExpr('\131;')) <> "131" or
2337        cLiteralFunction(charExpr('\132;')) <> "132" or
2338        cLiteralFunction(charExpr('\133;')) <> "133" or
2339        cLiteralFunction(charExpr('\134;')) <> "134" or
2340        cLiteralFunction(charExpr('\135;')) <> "135" or
2341        cLiteralFunction(charExpr('\136;')) <> "136" or
2342        cLiteralFunction(charExpr('\137;')) <> "137" or
2343        cLiteralFunction(charExpr('\138;')) <> "138" or
2344        cLiteralFunction(charExpr('\139;')) <> "139" or
2345        cLiteralFunction(charExpr('\140;')) <> "140" or
2346        cLiteralFunction(charExpr('\141;')) <> "141" or
2347        cLiteralFunction(charExpr('\142;')) <> "142" or
2348        cLiteralFunction(charExpr('\143;')) <> "143" or
2349        cLiteralFunction(charExpr('\144;')) <> "144" or
2350        cLiteralFunction(charExpr('\145;')) <> "145" or
2351        cLiteralFunction(charExpr('\146;')) <> "146" or
2352        cLiteralFunction(charExpr('\147;')) <> "147" or
2353        cLiteralFunction(charExpr('\148;')) <> "148" or
2354        cLiteralFunction(charExpr('\149;')) <> "149" or
2355        cLiteralFunction(charExpr('\150;')) <> "150" or
2356        cLiteralFunction(charExpr('\151;')) <> "151" or
2357        cLiteralFunction(charExpr('\152;')) <> "152" or
2358        cLiteralFunction(charExpr('\153;')) <> "153" or
2359        cLiteralFunction(charExpr('\154;')) <> "154" or
2360        cLiteralFunction(charExpr('\155;')) <> "155" or
2361        cLiteralFunction(charExpr('\156;')) <> "156" or
2362        cLiteralFunction(charExpr('\157;')) <> "157" or
2363        cLiteralFunction(charExpr('\158;')) <> "158" or
2364        cLiteralFunction(charExpr('\159;')) <> "159" or
2365        cLiteralFunction(charExpr('\160;')) <> "160" or
2366        cLiteralFunction(charExpr('¡'))     <> "161" or
2367        cLiteralFunction(charExpr('¤'))     <> "164" or
2368        cLiteralFunction(charExpr('§'))     <> "167" or
2369        cLiteralFunction(charExpr('¬'))     <> "172" or
2370        cLiteralFunction(charExpr('­'))     <> "173" or
2371        cLiteralFunction(charExpr('µ'))     <> "181" or
2372        cLiteralFunction(charExpr('¿'))     <> "191" or
2373        cLiteralFunction(charExpr('Ä'))     <> "196" or
2374        cLiteralFunction(charExpr('×'))     <> "215" or
2375        cLiteralFunction(charExpr('ß'))     <> "223" or
2376        cLiteralFunction(charExpr('ä'))     <> "228" or
2377        cLiteralFunction(charExpr('÷'))     <> "247" or
2378        cLiteralFunction(charExpr('ÿ'))     <> "255" or
2379        cLiteralFunction(charExpr('Œ'))     <> "338" or
2380        cLiteralFunction(charExpr('Š'))     <> "352" or
2381        cLiteralFunction(charExpr('ƒ'))     <> "402" or
2382        cLiteralFunction(charExpr('†'))     <> "8224" or
2383        cLiteralFunction(charExpr('•'))     <> "8226" or
2384        cLiteralFunction(charExpr('‰'))     <> "8240" or
2385        cLiteralFunction(charExpr('€'))     <> "8364" or
2386        cLiteralFunction(charExpr('™'))     <> "8482" then
2387      writeln(" ***** Function c_literal(ch) via a function does not work correct. (2)");
2388      okay := FALSE;
2389    end if;
2390
2391    if okay then
2392      writeln("Char literal functions work correct.");
2393    end if;
2394  end func;
2395
2396
2397const proc: check_ternary is func
2398  local
2399    var boolean: okay is TRUE;
2400    var boolean: ok is TRUE;
2401    var char: ch is ' ';
2402  begin
2403    if  ( TRUE ?  'a' : 'b') <> 'a' or
2404        (FALSE ?  'a' : 'b') <> 'b' or
2405        ( TRUE ?  'a' : charExpr('b')) <> 'a' or
2406        (FALSE ?  'a' : charExpr('b')) <> 'b' or
2407        ( TRUE ?  charExpr('a') : 'b') <> 'a' or
2408        (FALSE ?  charExpr('a') : 'b') <> 'b' or
2409        ( TRUE ?  charExpr('a') : charExpr('b')) <> 'a' or
2410        (FALSE ?  charExpr('a') : charExpr('b')) <> 'b' or
2411        (boolExpr( TRUE) ?  'a' : 'b') <> 'a' or
2412        (boolExpr(FALSE) ?  'a' : 'b') <> 'b' or
2413        (boolExpr( TRUE) ?  'a' : charExpr('b')) <> 'a' or
2414        (boolExpr(FALSE) ?  'a' : charExpr('b')) <> 'b' or
2415        (boolExpr( TRUE) ?  charExpr('a') : 'b') <> 'a' or
2416        (boolExpr(FALSE) ?  charExpr('a') : 'b') <> 'b' or
2417        (boolExpr( TRUE) ?  charExpr('a') : charExpr('b')) <> 'a' or
2418        (boolExpr(FALSE) ?  charExpr('a') : charExpr('b')) <> 'b' then
2419      writeln(" ***** The ternary operator ? : does not work correct. (1)");
2420      okay := FALSE;
2421    end if;
2422
2423    ch :=  TRUE ?  'a' : 'b'; ok := ok and ch = 'a';
2424    ch := FALSE ?  'a' : 'b'; ok := ok and ch = 'b';
2425    ch :=  TRUE ?  'a' : charExpr('b'); ok := ok and ch = 'a';
2426    ch := FALSE ?  'a' : charExpr('b'); ok := ok and ch = 'b';
2427    ch :=  TRUE ?  charExpr('a') : 'b'; ok := ok and ch = 'a';
2428    ch := FALSE ?  charExpr('a') : 'b'; ok := ok and ch = 'b';
2429    ch :=  TRUE ?  charExpr('a') : charExpr('b'); ok := ok and ch = 'a';
2430    ch := FALSE ?  charExpr('a') : charExpr('b'); ok := ok and ch = 'b';
2431    ch := boolExpr( TRUE) ?  'a' : 'b'; ok := ok and ch = 'a';
2432    ch := boolExpr(FALSE) ?  'a' : 'b'; ok := ok and ch = 'b';
2433    ch := boolExpr( TRUE) ?  'a' : charExpr('b'); ok := ok and ch = 'a';
2434    ch := boolExpr(FALSE) ?  'a' : charExpr('b'); ok := ok and ch = 'b';
2435    ch := boolExpr( TRUE) ?  charExpr('a') : 'b'; ok := ok and ch = 'a';
2436    ch := boolExpr(FALSE) ?  charExpr('a') : 'b'; ok := ok and ch = 'b';
2437    ch := boolExpr( TRUE) ?  charExpr('a') : charExpr('b'); ok := ok and ch = 'a';
2438    ch := boolExpr(FALSE) ?  charExpr('a') : charExpr('b'); ok := ok and ch = 'b';
2439    if not ok then
2440      writeln(" ***** The ternary operator ? : does not work correct. (2)");
2441      okay := FALSE;
2442    end if;
2443
2444    if okay then
2445      writeln("The ternary operator ? : works correct for char.");
2446    else
2447      writeln(" ***** The ternary operator ? : does not work correct.");
2448    end if;
2449  end func;
2450
2451
2452const proc: main is func
2453
2454  begin
2455    writeln;
2456    check_isLetter();
2457    check_width();
2458    check_literal_functions();
2459    check_ternary();
2460  end func;
2461