[patch, RFC] Fix PR 30389 - ASCII functions
Thomas Koenig
Thomas.Koenig@online.de
Wed Jan 24 21:04:00 GMT 2007
On Mon, Jan 22, 2007 at 11:26:45PM -0800, Brooks Moses wrote:
> Thus, assuming that everything is ASCII, I suggest that returning the
> same results as CHAR for all in-range values is appropriate. Whether we
> want to use the lowest eight bits or return CHAR(0) for out-of-range
> values is debateable; I prefer CHAR(0) but have no strong preferences.
Thanks, Brooks, for the work you have done researching this.
Here is an updated patch, also with a new test case. I added the
warnings that Brooks suggested. I also changed the handling of
extract_int (which was broken before, because it should never fail,
and if it did, we'd be assigning a random value to the function
return).
OK?
2007-01-22 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/30389
* gfortran.h: Remove gfc_simplify_init_1.
* arith.h: Remove third argument from gfc_compare_string.
* arith.c(gfc_compare_expression): Remove third argument
from call to gfc_compare_string.
(gfc_compare_string): Remove third argument xcoll_table.
Remove use of xcoll_table.
* misc.c(gfc_init_1): Remove call to gfc_simplify_init_1.
* simplify.c(ascii_table): Remove.
(xascii_table): Likewise.
(gfc_simplify_achar): ICE if extract_int fails. Remove use of
ascii_table. Warn if -Wsurprising and value < 0 or > 127.
(gfc_simplify_char): ICE if extract_int fails. Warn if
-Wsurprising and value < 0 or value > 255.
(gfc_simplify_iachar): Remove use of xascii_table.
Char values outside of 0..255 are an ICE.
(gfc_simplify_lge): Remove use of xascii_table.
(gfc_simplify_lgt): Likewise.
(gfc_simplify_lle): Likewise.
(gfc_simplify_llt): Likewise.
(invert_table): Remove.
(gfc_simplify_init_1): Remove.
2007-01-22 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/30389
* gfortran.dg/achar_2.f90: New test.
* gfortran.dg/achar_3.f90: New test.
-------------- next part --------------
Index: gfortran.h
===================================================================
--- gfortran.h (revision 121036)
+++ gfortran.h (working copy)
@@ -1970,9 +1970,6 @@ gfc_intrinsic_sym *gfc_find_function (co
match gfc_intrinsic_func_interface (gfc_expr *, int);
match gfc_intrinsic_sub_interface (gfc_code *, int);
-/* simplify.c */
-void gfc_simplify_init_1 (void);
-
/* match.c -- FIXME */
void gfc_free_iterator (gfc_iterator *, int);
void gfc_free_forall_iterator (gfc_forall_iterator *);
Index: arith.c
===================================================================
--- arith.c (revision 121036)
+++ arith.c (working copy)
@@ -1055,7 +1055,7 @@ gfc_compare_expr (gfc_expr *op1, gfc_exp
break;
case BT_CHARACTER:
- rc = gfc_compare_string (op1, op2, NULL);
+ rc = gfc_compare_string (op1, op2);
break;
case BT_LOGICAL:
@@ -1083,11 +1083,11 @@ compare_complex (gfc_expr *op1, gfc_expr
/* Given two constant strings and the inverse collating sequence, compare the
- strings. We return -1 for a < b, 0 for a == b and 1 for a > b. If the
- xcoll_table is NULL, we use the processor's default collating sequence. */
+ strings. We return -1 for a < b, 0 for a == b and 1 for a > b.
+ We use the processor's default collating sequence. */
int
-gfc_compare_string (gfc_expr *a, gfc_expr *b, const int *xcoll_table)
+gfc_compare_string (gfc_expr *a, gfc_expr *b)
{
int len, alen, blen, i, ac, bc;
@@ -1103,12 +1103,6 @@ gfc_compare_string (gfc_expr *a, gfc_exp
ac = (unsigned char) ((i < alen) ? a->value.character.string[i] : ' ');
bc = (unsigned char) ((i < blen) ? b->value.character.string[i] : ' ');
- if (xcoll_table != NULL)
- {
- ac = xcoll_table[ac];
- bc = xcoll_table[bc];
- }
-
if (ac < bc)
return -1;
if (ac > bc)
Index: arith.h
===================================================================
--- arith.h (revision 121036)
+++ arith.h (working copy)
@@ -40,7 +40,7 @@ gfc_expr *gfc_constant_result (bt, int,
arith gfc_range_check (gfc_expr *);
int gfc_compare_expr (gfc_expr *, gfc_expr *);
-int gfc_compare_string (gfc_expr *, gfc_expr *, const int *);
+int gfc_compare_string (gfc_expr *, gfc_expr *);
/* Constant folding for gfc_expr trees. */
gfc_expr *gfc_uplus (gfc_expr * op);
Index: misc.c
===================================================================
--- misc.c (revision 121036)
+++ misc.c (working copy)
@@ -249,7 +249,6 @@ gfc_init_1 (void)
gfc_scanner_init_1 ();
gfc_arith_init_1 ();
gfc_intrinsic_init_1 ();
- gfc_simplify_init_1 ();
}
Index: simplify.c
===================================================================
--- simplify.c (revision 121036)
+++ simplify.c (working copy)
@@ -64,31 +64,6 @@ gfc_expr gfc_bad_expr;
everything is reasonably straight-forward. The Standard, chapter 13
is the best comment you'll find for this file anyway. */
-/* Static table for converting non-ascii character sets to ascii.
- The xascii_table[] is the inverse table. */
-
-static int ascii_table[256] = {
- '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
- '\b', '\t', '\n', '\v', '\0', '\r', '\0', '\0',
- '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
- '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0',
- ' ', '!', '"', '#', '$', '%', '&', '\'',
- '(', ')', '*', '+', ',', '-', '.', '/',
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', ':', ';', '<', '=', '>', '?',
- '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', '[', '\\', ']', '^', '_',
- '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',
- 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
- 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
- 'x', 'y', 'z', '{', '|', '}', '~', '\?'
-};
-
-static int xascii_table[256];
-
-
/* Range checks an expression node. If all goes well, returns the
node, otherwise returns &gfc_bad_expr and frees the node. */
@@ -266,24 +241,27 @@ gfc_simplify_abs (gfc_expr *e)
return result;
}
+/* We use the processor's collating sequence, because all
+ sytems that gfortran currently works on are ASCII. */
gfc_expr *
gfc_simplify_achar (gfc_expr *e)
{
gfc_expr *result;
- int index;
+ int c;
+ const char *ch;
if (e->expr_type != EXPR_CONSTANT)
return NULL;
- /* We cannot assume that the native character set is ASCII in this
- function. */
- if (gfc_extract_int (e, &index) != NULL || index < 0 || index > 127)
- {
- gfc_error ("Extended ASCII not implemented: argument of ACHAR at %L "
- "must be between 0 and 127", &e->where);
- return &gfc_bad_expr;
- }
+ ch = gfc_extract_int (e, &c);
+
+ if (ch != NULL)
+ gfc_internal_error ("gfc_simplify_achar: %s", ch);
+
+ if (gfc_option.warn_surprising && (c < 0 || c > 127))
+ gfc_warning ("Argument of ACHAR function at %L outside of range 0..127",
+ &e->where);
result = gfc_constant_result (BT_CHARACTER, gfc_default_character_kind,
&e->where);
@@ -291,7 +269,7 @@ gfc_simplify_achar (gfc_expr *e)
result->value.character.string = gfc_getmem (2);
result->value.character.length = 1;
- result->value.character.string[0] = ascii_table[index];
+ result->value.character.string[0] = c;
result->value.character.string[1] = '\0'; /* For debugger */
return result;
}
@@ -700,6 +678,7 @@ gfc_simplify_char (gfc_expr *e, gfc_expr
{
gfc_expr *result;
int c, kind;
+ const char *ch;
kind = get_kind (BT_CHARACTER, k, "CHAR", gfc_default_character_kind);
if (kind == -1)
@@ -708,11 +687,14 @@ gfc_simplify_char (gfc_expr *e, gfc_expr
if (e->expr_type != EXPR_CONSTANT)
return NULL;
- if (gfc_extract_int (e, &c) != NULL || c < 0 || c > UCHAR_MAX)
- {
- gfc_error ("Bad character in CHAR function at %L", &e->where);
- return &gfc_bad_expr;
- }
+ ch = gfc_extract_int (e, &c);
+
+ if (ch != NULL)
+ gfc_internal_error ("gfc_simplify_char: %s", ch);
+
+ if (gfc_option.warn_surprising && (c < 0 || c > UCHAR_MAX))
+ gfc_warning ("Argument of CHAR function at %L outside of range 0..255",
+ &e->where);
result = gfc_constant_result (BT_CHARACTER, kind, &e->where);
@@ -1212,6 +1194,8 @@ gfc_simplify_huge (gfc_expr *e)
return result;
}
+/* We use the processor's collating sequence, because all
+ sytems that gfortran currently works on are ASCII. */
gfc_expr *
gfc_simplify_iachar (gfc_expr *e)
@@ -1228,7 +1212,11 @@ gfc_simplify_iachar (gfc_expr *e)
return &gfc_bad_expr;
}
- index = xascii_table[(int) e->value.character.string[0] & 0xFF];
+ index = (unsigned char) e->value.character.string[0];
+
+ if (gfc_option.warn_surprising && index > 127)
+ gfc_warning ("Argument of IACHAR function at %L outside of range 0..127",
+ &e->where);
result = gfc_int_expr (index);
result->where = e->where;
@@ -1409,11 +1397,8 @@ gfc_simplify_ichar (gfc_expr *e)
index = (unsigned char) e->value.character.string[0];
if (index < 0 || index > UCHAR_MAX)
- {
- gfc_error ("Argument of ICHAR at %L out of range of this processor",
- &e->where);
- return &gfc_bad_expr;
- }
+ gfc_internal_error("Argument of ICHAR at %L out of range",
+ &e->where);
result = gfc_int_expr (index);
result->where = e->where;
@@ -2126,7 +2111,7 @@ gfc_simplify_lge (gfc_expr *a, gfc_expr
if (a->expr_type != EXPR_CONSTANT || b->expr_type != EXPR_CONSTANT)
return NULL;
- return gfc_logical_expr (gfc_compare_string (a, b, xascii_table) >= 0,
+ return gfc_logical_expr (gfc_compare_string (a, b) >= 0,
&a->where);
}
@@ -2137,7 +2122,7 @@ gfc_simplify_lgt (gfc_expr *a, gfc_expr
if (a->expr_type != EXPR_CONSTANT || b->expr_type != EXPR_CONSTANT)
return NULL;
- return gfc_logical_expr (gfc_compare_string (a, b, xascii_table) > 0,
+ return gfc_logical_expr (gfc_compare_string (a, b) > 0,
&a->where);
}
@@ -2148,7 +2133,7 @@ gfc_simplify_lle (gfc_expr *a, gfc_expr
if (a->expr_type != EXPR_CONSTANT || b->expr_type != EXPR_CONSTANT)
return NULL;
- return gfc_logical_expr (gfc_compare_string (a, b, xascii_table) <= 0,
+ return gfc_logical_expr (gfc_compare_string (a, b) <= 0,
&a->where);
}
@@ -2159,7 +2144,7 @@ gfc_simplify_llt (gfc_expr *a, gfc_expr
if (a->expr_type != EXPR_CONSTANT || b->expr_type != EXPR_CONSTANT)
return NULL;
- return gfc_logical_expr (gfc_compare_string (a, b, xascii_table) < 0,
+ return gfc_logical_expr (gfc_compare_string (a, b) < 0,
&a->where);
}
@@ -4083,27 +4068,3 @@ gfc_convert_constant (gfc_expr *e, bt ty
return result;
}
-
-
-/****************** Helper functions ***********************/
-
-/* Given a collating table, create the inverse table. */
-
-static void
-invert_table (const int *table, int *xtable)
-{
- int i;
-
- for (i = 0; i < 256; i++)
- xtable[i] = 0;
-
- for (i = 0; i < 256; i++)
- xtable[table[i]] = i;
-}
-
-
-void
-gfc_simplify_init_1 (void)
-{
- invert_table (ascii_table, xascii_table);
-}
-------------- next part --------------
! { dg-do run }
! PR 30389 - we now treat ACHAR equivalent to CHAR, and
! IACHAR equivalent to ICHAR.
program main
integer :: i
character(len=1) :: c
if (iachar(achar(1)) /= 1) call abort
if (iachar ("")/= 1) call abort
if (achar (1) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 1
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(2)) /= 2) call abort
if (iachar ("")/= 2) call abort
if (achar (2) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 2
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(3)) /= 3) call abort
if (iachar ("")/= 3) call abort
if (achar (3) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 3
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(4)) /= 4) call abort
if (iachar ("")/= 4) call abort
if (achar (4) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 4
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(5)) /= 5) call abort
if (iachar ("")/= 5) call abort
if (achar (5) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 5
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(6)) /= 6) call abort
if (iachar ("")/= 6) call abort
if (achar (6) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 6
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(7)) /= 7) call abort
if (iachar ("")/= 7) call abort
if (achar (7) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 7
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(8)) /= 8) call abort
if (iachar ("")/= 8) call abort
if (achar (8) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 8
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(9)) /= 9) call abort
if (iachar (" ")/= 9) call abort
if (achar (9) /= " ") call abort
if (" " /= achar ( ichar ( " "))) call abort
i = 9
c = " "
if (achar(i) /= " ") call abort
if (iachar(c) /= iachar(" ")) call abort
if (iachar(achar(10)) /= 10) call abort
if (iachar(achar(11)) /= 11) call abort
if (iachar ("")/= 11) call abort
if (achar (11) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 11
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(12)) /= 12) call abort
if (iachar ("")/= 12) call abort
if (achar (12) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 12
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(13)) /= 13) call abort
if (iachar(achar(14)) /= 14) call abort
if (iachar ("")/= 14) call abort
if (achar (14) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 14
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(15)) /= 15) call abort
if (iachar ("")/= 15) call abort
if (achar (15) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 15
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(16)) /= 16) call abort
if (iachar ("")/= 16) call abort
if (achar (16) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 16
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(17)) /= 17) call abort
if (iachar ("")/= 17) call abort
if (achar (17) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 17
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(18)) /= 18) call abort
if (iachar ("")/= 18) call abort
if (achar (18) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 18
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(19)) /= 19) call abort
if (iachar ("")/= 19) call abort
if (achar (19) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 19
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(20)) /= 20) call abort
if (iachar ("")/= 20) call abort
if (achar (20) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 20
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(21)) /= 21) call abort
if (iachar ("")/= 21) call abort
if (achar (21) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 21
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(22)) /= 22) call abort
if (iachar ("")/= 22) call abort
if (achar (22) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 22
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(23)) /= 23) call abort
if (iachar ("")/= 23) call abort
if (achar (23) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 23
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(24)) /= 24) call abort
if (iachar ("")/= 24) call abort
if (achar (24) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 24
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(25)) /= 25) call abort
if (iachar ("")/= 25) call abort
if (achar (25) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 25
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(26)) /= 26) call abort
if (iachar(achar(27)) /= 27) call abort
if (iachar ("")/= 27) call abort
if (achar (27) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 27
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(28)) /= 28) call abort
if (iachar ("")/= 28) call abort
if (achar (28) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 28
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(29)) /= 29) call abort
if (iachar ("")/= 29) call abort
if (achar (29) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 29
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(30)) /= 30) call abort
if (iachar ("")/= 30) call abort
if (achar (30) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 30
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(31)) /= 31) call abort
if (iachar ("")/= 31) call abort
if (achar (31) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 31
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(32)) /= 32) call abort
if (iachar (" ")/= 32) call abort
if (achar (32) /= " ") call abort
if (" " /= achar ( ichar ( " "))) call abort
i = 32
c = " "
if (achar(i) /= " ") call abort
if (iachar(c) /= iachar(" ")) call abort
if (iachar(achar(33)) /= 33) call abort
if (iachar ("!")/= 33) call abort
if (achar (33) /= "!") call abort
if ("!" /= achar ( ichar ( "!"))) call abort
i = 33
c = "!"
if (achar(i) /= "!") call abort
if (iachar(c) /= iachar("!")) call abort
if (iachar(achar(34)) /= 34) call abort
if (iachar ('"')/= 34) call abort
if (achar (34) /= '"') call abort
if ('"' /= achar ( ichar ( '"'))) call abort
i = 34
c = '"'
if (achar(i) /= '"') call abort
if (iachar(c) /= iachar('"')) call abort
if (iachar(achar(35)) /= 35) call abort
if (iachar ("#")/= 35) call abort
if (achar (35) /= "#") call abort
if ("#" /= achar ( ichar ( "#"))) call abort
i = 35
c = "#"
if (achar(i) /= "#") call abort
if (iachar(c) /= iachar("#")) call abort
if (iachar(achar(36)) /= 36) call abort
if (iachar ("$")/= 36) call abort
if (achar (36) /= "$") call abort
if ("$" /= achar ( ichar ( "$"))) call abort
i = 36
c = "$"
if (achar(i) /= "$") call abort
if (iachar(c) /= iachar("$")) call abort
if (iachar(achar(37)) /= 37) call abort
if (iachar ("%")/= 37) call abort
if (achar (37) /= "%") call abort
if ("%" /= achar ( ichar ( "%"))) call abort
i = 37
c = "%"
if (achar(i) /= "%") call abort
if (iachar(c) /= iachar("%")) call abort
if (iachar(achar(38)) /= 38) call abort
if (iachar ("&")/= 38) call abort
if (achar (38) /= "&") call abort
if ("&" /= achar ( ichar ( "&"))) call abort
i = 38
c = "&"
if (achar(i) /= "&") call abort
if (iachar(c) /= iachar("&")) call abort
if (iachar(achar(39)) /= 39) call abort
if (iachar ("'")/= 39) call abort
if (achar (39) /= "'") call abort
if ("'" /= achar ( ichar ( "'"))) call abort
i = 39
c = "'"
if (achar(i) /= "'") call abort
if (iachar(c) /= iachar("'")) call abort
if (iachar(achar(40)) /= 40) call abort
if (iachar ("(")/= 40) call abort
if (achar (40) /= "(") call abort
if ("(" /= achar ( ichar ( "("))) call abort
i = 40
c = "("
if (achar(i) /= "(") call abort
if (iachar(c) /= iachar("(")) call abort
if (iachar(achar(41)) /= 41) call abort
if (iachar (")")/= 41) call abort
if (achar (41) /= ")") call abort
if (")" /= achar ( ichar ( ")"))) call abort
i = 41
c = ")"
if (achar(i) /= ")") call abort
if (iachar(c) /= iachar(")")) call abort
if (iachar(achar(42)) /= 42) call abort
if (iachar ("*")/= 42) call abort
if (achar (42) /= "*") call abort
if ("*" /= achar ( ichar ( "*"))) call abort
i = 42
c = "*"
if (achar(i) /= "*") call abort
if (iachar(c) /= iachar("*")) call abort
if (iachar(achar(43)) /= 43) call abort
if (iachar ("+")/= 43) call abort
if (achar (43) /= "+") call abort
if ("+" /= achar ( ichar ( "+"))) call abort
i = 43
c = "+"
if (achar(i) /= "+") call abort
if (iachar(c) /= iachar("+")) call abort
if (iachar(achar(44)) /= 44) call abort
if (iachar (",")/= 44) call abort
if (achar (44) /= ",") call abort
if ("," /= achar ( ichar ( ","))) call abort
i = 44
c = ","
if (achar(i) /= ",") call abort
if (iachar(c) /= iachar(",")) call abort
if (iachar(achar(45)) /= 45) call abort
if (iachar ("-")/= 45) call abort
if (achar (45) /= "-") call abort
if ("-" /= achar ( ichar ( "-"))) call abort
i = 45
c = "-"
if (achar(i) /= "-") call abort
if (iachar(c) /= iachar("-")) call abort
if (iachar(achar(46)) /= 46) call abort
if (iachar (".")/= 46) call abort
if (achar (46) /= ".") call abort
if ("." /= achar ( ichar ( "."))) call abort
i = 46
c = "."
if (achar(i) /= ".") call abort
if (iachar(c) /= iachar(".")) call abort
if (iachar(achar(47)) /= 47) call abort
if (iachar ("/")/= 47) call abort
if (achar (47) /= "/") call abort
if ("/" /= achar ( ichar ( "/"))) call abort
i = 47
c = "/"
if (achar(i) /= "/") call abort
if (iachar(c) /= iachar("/")) call abort
if (iachar(achar(48)) /= 48) call abort
if (iachar ("0")/= 48) call abort
if (achar (48) /= "0") call abort
if ("0" /= achar ( ichar ( "0"))) call abort
i = 48
c = "0"
if (achar(i) /= "0") call abort
if (iachar(c) /= iachar("0")) call abort
if (iachar(achar(49)) /= 49) call abort
if (iachar ("1")/= 49) call abort
if (achar (49) /= "1") call abort
if ("1" /= achar ( ichar ( "1"))) call abort
i = 49
c = "1"
if (achar(i) /= "1") call abort
if (iachar(c) /= iachar("1")) call abort
if (iachar(achar(50)) /= 50) call abort
if (iachar ("2")/= 50) call abort
if (achar (50) /= "2") call abort
if ("2" /= achar ( ichar ( "2"))) call abort
i = 50
c = "2"
if (achar(i) /= "2") call abort
if (iachar(c) /= iachar("2")) call abort
if (iachar(achar(51)) /= 51) call abort
if (iachar ("3")/= 51) call abort
if (achar (51) /= "3") call abort
if ("3" /= achar ( ichar ( "3"))) call abort
i = 51
c = "3"
if (achar(i) /= "3") call abort
if (iachar(c) /= iachar("3")) call abort
if (iachar(achar(52)) /= 52) call abort
if (iachar ("4")/= 52) call abort
if (achar (52) /= "4") call abort
if ("4" /= achar ( ichar ( "4"))) call abort
i = 52
c = "4"
if (achar(i) /= "4") call abort
if (iachar(c) /= iachar("4")) call abort
if (iachar(achar(53)) /= 53) call abort
if (iachar ("5")/= 53) call abort
if (achar (53) /= "5") call abort
if ("5" /= achar ( ichar ( "5"))) call abort
i = 53
c = "5"
if (achar(i) /= "5") call abort
if (iachar(c) /= iachar("5")) call abort
if (iachar(achar(54)) /= 54) call abort
if (iachar ("6")/= 54) call abort
if (achar (54) /= "6") call abort
if ("6" /= achar ( ichar ( "6"))) call abort
i = 54
c = "6"
if (achar(i) /= "6") call abort
if (iachar(c) /= iachar("6")) call abort
if (iachar(achar(55)) /= 55) call abort
if (iachar ("7")/= 55) call abort
if (achar (55) /= "7") call abort
if ("7" /= achar ( ichar ( "7"))) call abort
i = 55
c = "7"
if (achar(i) /= "7") call abort
if (iachar(c) /= iachar("7")) call abort
if (iachar(achar(56)) /= 56) call abort
if (iachar ("8")/= 56) call abort
if (achar (56) /= "8") call abort
if ("8" /= achar ( ichar ( "8"))) call abort
i = 56
c = "8"
if (achar(i) /= "8") call abort
if (iachar(c) /= iachar("8")) call abort
if (iachar(achar(57)) /= 57) call abort
if (iachar ("9")/= 57) call abort
if (achar (57) /= "9") call abort
if ("9" /= achar ( ichar ( "9"))) call abort
i = 57
c = "9"
if (achar(i) /= "9") call abort
if (iachar(c) /= iachar("9")) call abort
if (iachar(achar(58)) /= 58) call abort
if (iachar (":")/= 58) call abort
if (achar (58) /= ":") call abort
if (":" /= achar ( ichar ( ":"))) call abort
i = 58
c = ":"
if (achar(i) /= ":") call abort
if (iachar(c) /= iachar(":")) call abort
if (iachar(achar(59)) /= 59) call abort
if (iachar (";")/= 59) call abort
if (achar (59) /= ";") call abort
if (";" /= achar ( ichar ( ";"))) call abort
i = 59
c = ";"
if (achar(i) /= ";") call abort
if (iachar(c) /= iachar(";")) call abort
if (iachar(achar(60)) /= 60) call abort
if (iachar ("<")/= 60) call abort
if (achar (60) /= "<") call abort
if ("<" /= achar ( ichar ( "<"))) call abort
i = 60
c = "<"
if (achar(i) /= "<") call abort
if (iachar(c) /= iachar("<")) call abort
if (iachar(achar(61)) /= 61) call abort
if (iachar ("=")/= 61) call abort
if (achar (61) /= "=") call abort
if ("=" /= achar ( ichar ( "="))) call abort
i = 61
c = "="
if (achar(i) /= "=") call abort
if (iachar(c) /= iachar("=")) call abort
if (iachar(achar(62)) /= 62) call abort
if (iachar (">")/= 62) call abort
if (achar (62) /= ">") call abort
if (">" /= achar ( ichar ( ">"))) call abort
i = 62
c = ">"
if (achar(i) /= ">") call abort
if (iachar(c) /= iachar(">")) call abort
if (iachar(achar(63)) /= 63) call abort
if (iachar ("?")/= 63) call abort
if (achar (63) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 63
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(64)) /= 64) call abort
if (iachar ("@")/= 64) call abort
if (achar (64) /= "@") call abort
if ("@" /= achar ( ichar ( "@"))) call abort
i = 64
c = "@"
if (achar(i) /= "@") call abort
if (iachar(c) /= iachar("@")) call abort
if (iachar(achar(65)) /= 65) call abort
if (iachar ("A")/= 65) call abort
if (achar (65) /= "A") call abort
if ("A" /= achar ( ichar ( "A"))) call abort
i = 65
c = "A"
if (achar(i) /= "A") call abort
if (iachar(c) /= iachar("A")) call abort
if (iachar(achar(66)) /= 66) call abort
if (iachar ("B")/= 66) call abort
if (achar (66) /= "B") call abort
if ("B" /= achar ( ichar ( "B"))) call abort
i = 66
c = "B"
if (achar(i) /= "B") call abort
if (iachar(c) /= iachar("B")) call abort
if (iachar(achar(67)) /= 67) call abort
if (iachar ("C")/= 67) call abort
if (achar (67) /= "C") call abort
if ("C" /= achar ( ichar ( "C"))) call abort
i = 67
c = "C"
if (achar(i) /= "C") call abort
if (iachar(c) /= iachar("C")) call abort
if (iachar(achar(68)) /= 68) call abort
if (iachar ("D")/= 68) call abort
if (achar (68) /= "D") call abort
if ("D" /= achar ( ichar ( "D"))) call abort
i = 68
c = "D"
if (achar(i) /= "D") call abort
if (iachar(c) /= iachar("D")) call abort
if (iachar(achar(69)) /= 69) call abort
if (iachar ("E")/= 69) call abort
if (achar (69) /= "E") call abort
if ("E" /= achar ( ichar ( "E"))) call abort
i = 69
c = "E"
if (achar(i) /= "E") call abort
if (iachar(c) /= iachar("E")) call abort
if (iachar(achar(70)) /= 70) call abort
if (iachar ("F")/= 70) call abort
if (achar (70) /= "F") call abort
if ("F" /= achar ( ichar ( "F"))) call abort
i = 70
c = "F"
if (achar(i) /= "F") call abort
if (iachar(c) /= iachar("F")) call abort
if (iachar(achar(71)) /= 71) call abort
if (iachar ("G")/= 71) call abort
if (achar (71) /= "G") call abort
if ("G" /= achar ( ichar ( "G"))) call abort
i = 71
c = "G"
if (achar(i) /= "G") call abort
if (iachar(c) /= iachar("G")) call abort
if (iachar(achar(72)) /= 72) call abort
if (iachar ("H")/= 72) call abort
if (achar (72) /= "H") call abort
if ("H" /= achar ( ichar ( "H"))) call abort
i = 72
c = "H"
if (achar(i) /= "H") call abort
if (iachar(c) /= iachar("H")) call abort
if (iachar(achar(73)) /= 73) call abort
if (iachar ("I")/= 73) call abort
if (achar (73) /= "I") call abort
if ("I" /= achar ( ichar ( "I"))) call abort
i = 73
c = "I"
if (achar(i) /= "I") call abort
if (iachar(c) /= iachar("I")) call abort
if (iachar(achar(74)) /= 74) call abort
if (iachar ("J")/= 74) call abort
if (achar (74) /= "J") call abort
if ("J" /= achar ( ichar ( "J"))) call abort
i = 74
c = "J"
if (achar(i) /= "J") call abort
if (iachar(c) /= iachar("J")) call abort
if (iachar(achar(75)) /= 75) call abort
if (iachar ("K")/= 75) call abort
if (achar (75) /= "K") call abort
if ("K" /= achar ( ichar ( "K"))) call abort
i = 75
c = "K"
if (achar(i) /= "K") call abort
if (iachar(c) /= iachar("K")) call abort
if (iachar(achar(76)) /= 76) call abort
if (iachar ("L")/= 76) call abort
if (achar (76) /= "L") call abort
if ("L" /= achar ( ichar ( "L"))) call abort
i = 76
c = "L"
if (achar(i) /= "L") call abort
if (iachar(c) /= iachar("L")) call abort
if (iachar(achar(77)) /= 77) call abort
if (iachar ("M")/= 77) call abort
if (achar (77) /= "M") call abort
if ("M" /= achar ( ichar ( "M"))) call abort
i = 77
c = "M"
if (achar(i) /= "M") call abort
if (iachar(c) /= iachar("M")) call abort
if (iachar(achar(78)) /= 78) call abort
if (iachar ("N")/= 78) call abort
if (achar (78) /= "N") call abort
if ("N" /= achar ( ichar ( "N"))) call abort
i = 78
c = "N"
if (achar(i) /= "N") call abort
if (iachar(c) /= iachar("N")) call abort
if (iachar(achar(79)) /= 79) call abort
if (iachar ("O")/= 79) call abort
if (achar (79) /= "O") call abort
if ("O" /= achar ( ichar ( "O"))) call abort
i = 79
c = "O"
if (achar(i) /= "O") call abort
if (iachar(c) /= iachar("O")) call abort
if (iachar(achar(80)) /= 80) call abort
if (iachar ("P")/= 80) call abort
if (achar (80) /= "P") call abort
if ("P" /= achar ( ichar ( "P"))) call abort
i = 80
c = "P"
if (achar(i) /= "P") call abort
if (iachar(c) /= iachar("P")) call abort
if (iachar(achar(81)) /= 81) call abort
if (iachar ("Q")/= 81) call abort
if (achar (81) /= "Q") call abort
if ("Q" /= achar ( ichar ( "Q"))) call abort
i = 81
c = "Q"
if (achar(i) /= "Q") call abort
if (iachar(c) /= iachar("Q")) call abort
if (iachar(achar(82)) /= 82) call abort
if (iachar ("R")/= 82) call abort
if (achar (82) /= "R") call abort
if ("R" /= achar ( ichar ( "R"))) call abort
i = 82
c = "R"
if (achar(i) /= "R") call abort
if (iachar(c) /= iachar("R")) call abort
if (iachar(achar(83)) /= 83) call abort
if (iachar ("S")/= 83) call abort
if (achar (83) /= "S") call abort
if ("S" /= achar ( ichar ( "S"))) call abort
i = 83
c = "S"
if (achar(i) /= "S") call abort
if (iachar(c) /= iachar("S")) call abort
if (iachar(achar(84)) /= 84) call abort
if (iachar ("T")/= 84) call abort
if (achar (84) /= "T") call abort
if ("T" /= achar ( ichar ( "T"))) call abort
i = 84
c = "T"
if (achar(i) /= "T") call abort
if (iachar(c) /= iachar("T")) call abort
if (iachar(achar(85)) /= 85) call abort
if (iachar ("U")/= 85) call abort
if (achar (85) /= "U") call abort
if ("U" /= achar ( ichar ( "U"))) call abort
i = 85
c = "U"
if (achar(i) /= "U") call abort
if (iachar(c) /= iachar("U")) call abort
if (iachar(achar(86)) /= 86) call abort
if (iachar ("V")/= 86) call abort
if (achar (86) /= "V") call abort
if ("V" /= achar ( ichar ( "V"))) call abort
i = 86
c = "V"
if (achar(i) /= "V") call abort
if (iachar(c) /= iachar("V")) call abort
if (iachar(achar(87)) /= 87) call abort
if (iachar ("W")/= 87) call abort
if (achar (87) /= "W") call abort
if ("W" /= achar ( ichar ( "W"))) call abort
i = 87
c = "W"
if (achar(i) /= "W") call abort
if (iachar(c) /= iachar("W")) call abort
if (iachar(achar(88)) /= 88) call abort
if (iachar ("X")/= 88) call abort
if (achar (88) /= "X") call abort
if ("X" /= achar ( ichar ( "X"))) call abort
i = 88
c = "X"
if (achar(i) /= "X") call abort
if (iachar(c) /= iachar("X")) call abort
if (iachar(achar(89)) /= 89) call abort
if (iachar ("Y")/= 89) call abort
if (achar (89) /= "Y") call abort
if ("Y" /= achar ( ichar ( "Y"))) call abort
i = 89
c = "Y"
if (achar(i) /= "Y") call abort
if (iachar(c) /= iachar("Y")) call abort
if (iachar(achar(90)) /= 90) call abort
if (iachar ("Z")/= 90) call abort
if (achar (90) /= "Z") call abort
if ("Z" /= achar ( ichar ( "Z"))) call abort
i = 90
c = "Z"
if (achar(i) /= "Z") call abort
if (iachar(c) /= iachar("Z")) call abort
if (iachar(achar(91)) /= 91) call abort
if (iachar ("[")/= 91) call abort
if (achar (91) /= "[") call abort
if ("[" /= achar ( ichar ( "["))) call abort
i = 91
c = "["
if (achar(i) /= "[") call abort
if (iachar(c) /= iachar("[")) call abort
if (iachar(achar(92)) /= 92) call abort
if (iachar ("\")/= 92) call abort
if (achar (92) /= "\") call abort
if ("\" /= achar ( ichar ( "\"))) call abort
i = 92
c = "\"
if (achar(i) /= "\") call abort
if (iachar(c) /= iachar("\")) call abort
if (iachar(achar(93)) /= 93) call abort
if (iachar ("]")/= 93) call abort
if (achar (93) /= "]") call abort
if ("]" /= achar ( ichar ( "]"))) call abort
i = 93
c = "]"
if (achar(i) /= "]") call abort
if (iachar(c) /= iachar("]")) call abort
if (iachar(achar(94)) /= 94) call abort
if (iachar ("^")/= 94) call abort
if (achar (94) /= "^") call abort
if ("^" /= achar ( ichar ( "^"))) call abort
i = 94
c = "^"
if (achar(i) /= "^") call abort
if (iachar(c) /= iachar("^")) call abort
if (iachar(achar(95)) /= 95) call abort
if (iachar ("_")/= 95) call abort
if (achar (95) /= "_") call abort
if ("_" /= achar ( ichar ( "_"))) call abort
i = 95
c = "_"
if (achar(i) /= "_") call abort
if (iachar(c) /= iachar("_")) call abort
if (iachar(achar(96)) /= 96) call abort
if (iachar ("`")/= 96) call abort
if (achar (96) /= "`") call abort
if ("`" /= achar ( ichar ( "`"))) call abort
i = 96
c = "`"
if (achar(i) /= "`") call abort
if (iachar(c) /= iachar("`")) call abort
if (iachar(achar(97)) /= 97) call abort
if (iachar ("a")/= 97) call abort
if (achar (97) /= "a") call abort
if ("a" /= achar ( ichar ( "a"))) call abort
i = 97
c = "a"
if (achar(i) /= "a") call abort
if (iachar(c) /= iachar("a")) call abort
if (iachar(achar(98)) /= 98) call abort
if (iachar ("b")/= 98) call abort
if (achar (98) /= "b") call abort
if ("b" /= achar ( ichar ( "b"))) call abort
i = 98
c = "b"
if (achar(i) /= "b") call abort
if (iachar(c) /= iachar("b")) call abort
if (iachar(achar(99)) /= 99) call abort
if (iachar ("c")/= 99) call abort
if (achar (99) /= "c") call abort
if ("c" /= achar ( ichar ( "c"))) call abort
i = 99
c = "c"
if (achar(i) /= "c") call abort
if (iachar(c) /= iachar("c")) call abort
if (iachar(achar(100)) /= 100) call abort
if (iachar ("d")/= 100) call abort
if (achar (100) /= "d") call abort
if ("d" /= achar ( ichar ( "d"))) call abort
i = 100
c = "d"
if (achar(i) /= "d") call abort
if (iachar(c) /= iachar("d")) call abort
if (iachar(achar(101)) /= 101) call abort
if (iachar ("e")/= 101) call abort
if (achar (101) /= "e") call abort
if ("e" /= achar ( ichar ( "e"))) call abort
i = 101
c = "e"
if (achar(i) /= "e") call abort
if (iachar(c) /= iachar("e")) call abort
if (iachar(achar(102)) /= 102) call abort
if (iachar ("f")/= 102) call abort
if (achar (102) /= "f") call abort
if ("f" /= achar ( ichar ( "f"))) call abort
i = 102
c = "f"
if (achar(i) /= "f") call abort
if (iachar(c) /= iachar("f")) call abort
if (iachar(achar(103)) /= 103) call abort
if (iachar ("g")/= 103) call abort
if (achar (103) /= "g") call abort
if ("g" /= achar ( ichar ( "g"))) call abort
i = 103
c = "g"
if (achar(i) /= "g") call abort
if (iachar(c) /= iachar("g")) call abort
if (iachar(achar(104)) /= 104) call abort
if (iachar ("h")/= 104) call abort
if (achar (104) /= "h") call abort
if ("h" /= achar ( ichar ( "h"))) call abort
i = 104
c = "h"
if (achar(i) /= "h") call abort
if (iachar(c) /= iachar("h")) call abort
if (iachar(achar(105)) /= 105) call abort
if (iachar ("i")/= 105) call abort
if (achar (105) /= "i") call abort
if ("i" /= achar ( ichar ( "i"))) call abort
i = 105
c = "i"
if (achar(i) /= "i") call abort
if (iachar(c) /= iachar("i")) call abort
if (iachar(achar(106)) /= 106) call abort
if (iachar ("j")/= 106) call abort
if (achar (106) /= "j") call abort
if ("j" /= achar ( ichar ( "j"))) call abort
i = 106
c = "j"
if (achar(i) /= "j") call abort
if (iachar(c) /= iachar("j")) call abort
if (iachar(achar(107)) /= 107) call abort
if (iachar ("k")/= 107) call abort
if (achar (107) /= "k") call abort
if ("k" /= achar ( ichar ( "k"))) call abort
i = 107
c = "k"
if (achar(i) /= "k") call abort
if (iachar(c) /= iachar("k")) call abort
if (iachar(achar(108)) /= 108) call abort
if (iachar ("l")/= 108) call abort
if (achar (108) /= "l") call abort
if ("l" /= achar ( ichar ( "l"))) call abort
i = 108
c = "l"
if (achar(i) /= "l") call abort
if (iachar(c) /= iachar("l")) call abort
if (iachar(achar(109)) /= 109) call abort
if (iachar ("m")/= 109) call abort
if (achar (109) /= "m") call abort
if ("m" /= achar ( ichar ( "m"))) call abort
i = 109
c = "m"
if (achar(i) /= "m") call abort
if (iachar(c) /= iachar("m")) call abort
if (iachar(achar(110)) /= 110) call abort
if (iachar ("n")/= 110) call abort
if (achar (110) /= "n") call abort
if ("n" /= achar ( ichar ( "n"))) call abort
i = 110
c = "n"
if (achar(i) /= "n") call abort
if (iachar(c) /= iachar("n")) call abort
if (iachar(achar(111)) /= 111) call abort
if (iachar ("o")/= 111) call abort
if (achar (111) /= "o") call abort
if ("o" /= achar ( ichar ( "o"))) call abort
i = 111
c = "o"
if (achar(i) /= "o") call abort
if (iachar(c) /= iachar("o")) call abort
if (iachar(achar(112)) /= 112) call abort
if (iachar ("p")/= 112) call abort
if (achar (112) /= "p") call abort
if ("p" /= achar ( ichar ( "p"))) call abort
i = 112
c = "p"
if (achar(i) /= "p") call abort
if (iachar(c) /= iachar("p")) call abort
if (iachar(achar(113)) /= 113) call abort
if (iachar ("q")/= 113) call abort
if (achar (113) /= "q") call abort
if ("q" /= achar ( ichar ( "q"))) call abort
i = 113
c = "q"
if (achar(i) /= "q") call abort
if (iachar(c) /= iachar("q")) call abort
if (iachar(achar(114)) /= 114) call abort
if (iachar ("r")/= 114) call abort
if (achar (114) /= "r") call abort
if ("r" /= achar ( ichar ( "r"))) call abort
i = 114
c = "r"
if (achar(i) /= "r") call abort
if (iachar(c) /= iachar("r")) call abort
if (iachar(achar(115)) /= 115) call abort
if (iachar ("s")/= 115) call abort
if (achar (115) /= "s") call abort
if ("s" /= achar ( ichar ( "s"))) call abort
i = 115
c = "s"
if (achar(i) /= "s") call abort
if (iachar(c) /= iachar("s")) call abort
if (iachar(achar(116)) /= 116) call abort
if (iachar ("t")/= 116) call abort
if (achar (116) /= "t") call abort
if ("t" /= achar ( ichar ( "t"))) call abort
i = 116
c = "t"
if (achar(i) /= "t") call abort
if (iachar(c) /= iachar("t")) call abort
if (iachar(achar(117)) /= 117) call abort
if (iachar ("u")/= 117) call abort
if (achar (117) /= "u") call abort
if ("u" /= achar ( ichar ( "u"))) call abort
i = 117
c = "u"
if (achar(i) /= "u") call abort
if (iachar(c) /= iachar("u")) call abort
if (iachar(achar(118)) /= 118) call abort
if (iachar ("v")/= 118) call abort
if (achar (118) /= "v") call abort
if ("v" /= achar ( ichar ( "v"))) call abort
i = 118
c = "v"
if (achar(i) /= "v") call abort
if (iachar(c) /= iachar("v")) call abort
if (iachar(achar(119)) /= 119) call abort
if (iachar ("w")/= 119) call abort
if (achar (119) /= "w") call abort
if ("w" /= achar ( ichar ( "w"))) call abort
i = 119
c = "w"
if (achar(i) /= "w") call abort
if (iachar(c) /= iachar("w")) call abort
if (iachar(achar(120)) /= 120) call abort
if (iachar ("x")/= 120) call abort
if (achar (120) /= "x") call abort
if ("x" /= achar ( ichar ( "x"))) call abort
i = 120
c = "x"
if (achar(i) /= "x") call abort
if (iachar(c) /= iachar("x")) call abort
if (iachar(achar(121)) /= 121) call abort
if (iachar ("y")/= 121) call abort
if (achar (121) /= "y") call abort
if ("y" /= achar ( ichar ( "y"))) call abort
i = 121
c = "y"
if (achar(i) /= "y") call abort
if (iachar(c) /= iachar("y")) call abort
if (iachar(achar(122)) /= 122) call abort
if (iachar ("z")/= 122) call abort
if (achar (122) /= "z") call abort
if ("z" /= achar ( ichar ( "z"))) call abort
i = 122
c = "z"
if (achar(i) /= "z") call abort
if (iachar(c) /= iachar("z")) call abort
if (iachar(achar(123)) /= 123) call abort
if (iachar ("{")/= 123) call abort
if (achar (123) /= "{") call abort
if ("{" /= achar ( ichar ( "{"))) call abort
i = 123
c = "{"
if (achar(i) /= "{") call abort
if (iachar(c) /= iachar("{")) call abort
if (iachar(achar(124)) /= 124) call abort
if (iachar ("|")/= 124) call abort
if (achar (124) /= "|") call abort
if ("|" /= achar ( ichar ( "|"))) call abort
i = 124
c = "|"
if (achar(i) /= "|") call abort
if (iachar(c) /= iachar("|")) call abort
if (iachar(achar(125)) /= 125) call abort
if (iachar ("}")/= 125) call abort
if (achar (125) /= "}") call abort
if ("}" /= achar ( ichar ( "}"))) call abort
i = 125
c = "}"
if (achar(i) /= "}") call abort
if (iachar(c) /= iachar("}")) call abort
if (iachar(achar(126)) /= 126) call abort
if (iachar ("~")/= 126) call abort
if (achar (126) /= "~") call abort
if ("~" /= achar ( ichar ( "~"))) call abort
i = 126
c = "~"
if (achar(i) /= "~") call abort
if (iachar(c) /= iachar("~")) call abort
if (iachar(achar(127)) /= 127) call abort
if (iachar ("")/= 127) call abort
if (achar (127) /= "") call abort
if ("" /= achar ( ichar ( ""))) call abort
i = 127
c = ""
if (achar(i) /= "") call abort
if (iachar(c) /= iachar("")) call abort
if (iachar(achar(128)) /= 128) call abort
if (iachar ("?")/= 128) call abort
if (achar (128) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 128
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(129)) /= 129) call abort
if (iachar ("?")/= 129) call abort
if (achar (129) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 129
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(130)) /= 130) call abort
if (iachar ("?")/= 130) call abort
if (achar (130) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 130
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(131)) /= 131) call abort
if (iachar ("?")/= 131) call abort
if (achar (131) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 131
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(132)) /= 132) call abort
if (iachar ("?")/= 132) call abort
if (achar (132) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 132
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(133)) /= 133) call abort
if (iachar ("?")/= 133) call abort
if (achar (133) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 133
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(134)) /= 134) call abort
if (iachar ("?")/= 134) call abort
if (achar (134) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 134
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(135)) /= 135) call abort
if (iachar ("?")/= 135) call abort
if (achar (135) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 135
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(136)) /= 136) call abort
if (iachar ("?")/= 136) call abort
if (achar (136) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 136
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(137)) /= 137) call abort
if (iachar ("?")/= 137) call abort
if (achar (137) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 137
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(138)) /= 138) call abort
if (iachar ("?")/= 138) call abort
if (achar (138) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 138
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(139)) /= 139) call abort
if (iachar ("?")/= 139) call abort
if (achar (139) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 139
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(140)) /= 140) call abort
if (iachar ("?")/= 140) call abort
if (achar (140) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 140
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(141)) /= 141) call abort
if (iachar ("?")/= 141) call abort
if (achar (141) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 141
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(142)) /= 142) call abort
if (iachar ("?")/= 142) call abort
if (achar (142) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 142
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(143)) /= 143) call abort
if (iachar ("?")/= 143) call abort
if (achar (143) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 143
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(144)) /= 144) call abort
if (iachar ("?")/= 144) call abort
if (achar (144) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 144
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(145)) /= 145) call abort
if (iachar ("?")/= 145) call abort
if (achar (145) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 145
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(146)) /= 146) call abort
if (iachar ("?")/= 146) call abort
if (achar (146) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 146
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(147)) /= 147) call abort
if (iachar ("?")/= 147) call abort
if (achar (147) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 147
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(148)) /= 148) call abort
if (iachar ("?")/= 148) call abort
if (achar (148) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 148
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(149)) /= 149) call abort
if (iachar ("?")/= 149) call abort
if (achar (149) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 149
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(150)) /= 150) call abort
if (iachar ("?")/= 150) call abort
if (achar (150) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 150
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(151)) /= 151) call abort
if (iachar ("?")/= 151) call abort
if (achar (151) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 151
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(152)) /= 152) call abort
if (iachar ("?")/= 152) call abort
if (achar (152) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 152
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(153)) /= 153) call abort
if (iachar ("?")/= 153) call abort
if (achar (153) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 153
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(154)) /= 154) call abort
if (iachar ("?")/= 154) call abort
if (achar (154) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 154
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(155)) /= 155) call abort
if (iachar ("?")/= 155) call abort
if (achar (155) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 155
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(156)) /= 156) call abort
if (iachar ("?")/= 156) call abort
if (achar (156) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 156
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(157)) /= 157) call abort
if (iachar ("?")/= 157) call abort
if (achar (157) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 157
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(158)) /= 158) call abort
if (iachar ("?")/= 158) call abort
if (achar (158) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 158
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(159)) /= 159) call abort
if (iachar ("?")/= 159) call abort
if (achar (159) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 159
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(160)) /= 160) call abort
if (iachar ("?")/= 160) call abort
if (achar (160) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 160
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(161)) /= 161) call abort
if (iachar ("?")/= 161) call abort
if (achar (161) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 161
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(162)) /= 162) call abort
if (iachar ("?")/= 162) call abort
if (achar (162) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 162
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(163)) /= 163) call abort
if (iachar ("?")/= 163) call abort
if (achar (163) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 163
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(164)) /= 164) call abort
if (iachar ("?")/= 164) call abort
if (achar (164) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 164
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(165)) /= 165) call abort
if (iachar ("?")/= 165) call abort
if (achar (165) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 165
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(166)) /= 166) call abort
if (iachar ("?")/= 166) call abort
if (achar (166) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 166
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(167)) /= 167) call abort
if (iachar ("?")/= 167) call abort
if (achar (167) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 167
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(168)) /= 168) call abort
if (iachar ("?")/= 168) call abort
if (achar (168) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 168
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(169)) /= 169) call abort
if (iachar ("?")/= 169) call abort
if (achar (169) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 169
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(170)) /= 170) call abort
if (iachar ("?")/= 170) call abort
if (achar (170) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 170
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(171)) /= 171) call abort
if (iachar ("?")/= 171) call abort
if (achar (171) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 171
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(172)) /= 172) call abort
if (iachar ("?")/= 172) call abort
if (achar (172) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 172
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(173)) /= 173) call abort
if (iachar ("?")/= 173) call abort
if (achar (173) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 173
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(174)) /= 174) call abort
if (iachar ("?")/= 174) call abort
if (achar (174) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 174
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(175)) /= 175) call abort
if (iachar ("?")/= 175) call abort
if (achar (175) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 175
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(176)) /= 176) call abort
if (iachar ("?")/= 176) call abort
if (achar (176) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 176
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(177)) /= 177) call abort
if (iachar ("?")/= 177) call abort
if (achar (177) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 177
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(178)) /= 178) call abort
if (iachar ("?")/= 178) call abort
if (achar (178) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 178
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(179)) /= 179) call abort
if (iachar ("?")/= 179) call abort
if (achar (179) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 179
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(180)) /= 180) call abort
if (iachar ("?")/= 180) call abort
if (achar (180) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 180
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(181)) /= 181) call abort
if (iachar ("?")/= 181) call abort
if (achar (181) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 181
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(182)) /= 182) call abort
if (iachar ("?")/= 182) call abort
if (achar (182) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 182
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(183)) /= 183) call abort
if (iachar ("?")/= 183) call abort
if (achar (183) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 183
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(184)) /= 184) call abort
if (iachar ("?")/= 184) call abort
if (achar (184) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 184
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(185)) /= 185) call abort
if (iachar ("?")/= 185) call abort
if (achar (185) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 185
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(186)) /= 186) call abort
if (iachar ("?")/= 186) call abort
if (achar (186) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 186
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(187)) /= 187) call abort
if (iachar ("?")/= 187) call abort
if (achar (187) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 187
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(188)) /= 188) call abort
if (iachar ("?")/= 188) call abort
if (achar (188) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 188
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(189)) /= 189) call abort
if (iachar ("?")/= 189) call abort
if (achar (189) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 189
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(190)) /= 190) call abort
if (iachar ("?")/= 190) call abort
if (achar (190) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 190
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(191)) /= 191) call abort
if (iachar ("?")/= 191) call abort
if (achar (191) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 191
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(192)) /= 192) call abort
if (iachar ("?")/= 192) call abort
if (achar (192) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 192
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(193)) /= 193) call abort
if (iachar ("?")/= 193) call abort
if (achar (193) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 193
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(194)) /= 194) call abort
if (iachar ("?")/= 194) call abort
if (achar (194) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 194
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(195)) /= 195) call abort
if (iachar ("?")/= 195) call abort
if (achar (195) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 195
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(196)) /= 196) call abort
if (iachar ("?")/= 196) call abort
if (achar (196) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 196
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(197)) /= 197) call abort
if (iachar ("?")/= 197) call abort
if (achar (197) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 197
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(198)) /= 198) call abort
if (iachar ("?")/= 198) call abort
if (achar (198) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 198
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(199)) /= 199) call abort
if (iachar ("?")/= 199) call abort
if (achar (199) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 199
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(200)) /= 200) call abort
if (iachar ("?")/= 200) call abort
if (achar (200) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 200
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(201)) /= 201) call abort
if (iachar ("?")/= 201) call abort
if (achar (201) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 201
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(202)) /= 202) call abort
if (iachar ("?")/= 202) call abort
if (achar (202) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 202
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(203)) /= 203) call abort
if (iachar ("?")/= 203) call abort
if (achar (203) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 203
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(204)) /= 204) call abort
if (iachar ("?")/= 204) call abort
if (achar (204) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 204
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(205)) /= 205) call abort
if (iachar ("?")/= 205) call abort
if (achar (205) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 205
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(206)) /= 206) call abort
if (iachar ("?")/= 206) call abort
if (achar (206) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 206
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(207)) /= 207) call abort
if (iachar ("?")/= 207) call abort
if (achar (207) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 207
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(208)) /= 208) call abort
if (iachar ("?")/= 208) call abort
if (achar (208) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 208
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(209)) /= 209) call abort
if (iachar ("?")/= 209) call abort
if (achar (209) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 209
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(210)) /= 210) call abort
if (iachar ("?")/= 210) call abort
if (achar (210) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 210
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(211)) /= 211) call abort
if (iachar ("?")/= 211) call abort
if (achar (211) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 211
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(212)) /= 212) call abort
if (iachar ("?")/= 212) call abort
if (achar (212) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 212
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(213)) /= 213) call abort
if (iachar ("?")/= 213) call abort
if (achar (213) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 213
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(214)) /= 214) call abort
if (iachar ("?")/= 214) call abort
if (achar (214) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 214
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(215)) /= 215) call abort
if (iachar ("?")/= 215) call abort
if (achar (215) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 215
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(216)) /= 216) call abort
if (iachar ("?")/= 216) call abort
if (achar (216) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 216
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(217)) /= 217) call abort
if (iachar ("?")/= 217) call abort
if (achar (217) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 217
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(218)) /= 218) call abort
if (iachar ("?")/= 218) call abort
if (achar (218) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 218
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(219)) /= 219) call abort
if (iachar ("?")/= 219) call abort
if (achar (219) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 219
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(220)) /= 220) call abort
if (iachar ("?")/= 220) call abort
if (achar (220) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 220
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(221)) /= 221) call abort
if (iachar ("?")/= 221) call abort
if (achar (221) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 221
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(222)) /= 222) call abort
if (iachar ("?")/= 222) call abort
if (achar (222) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 222
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(223)) /= 223) call abort
if (iachar ("?")/= 223) call abort
if (achar (223) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 223
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(224)) /= 224) call abort
if (iachar ("?")/= 224) call abort
if (achar (224) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 224
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(225)) /= 225) call abort
if (iachar ("?")/= 225) call abort
if (achar (225) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 225
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(226)) /= 226) call abort
if (iachar ("?")/= 226) call abort
if (achar (226) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 226
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(227)) /= 227) call abort
if (iachar ("?")/= 227) call abort
if (achar (227) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 227
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(228)) /= 228) call abort
if (iachar ("?")/= 228) call abort
if (achar (228) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 228
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(229)) /= 229) call abort
if (iachar ("?")/= 229) call abort
if (achar (229) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 229
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(230)) /= 230) call abort
if (iachar ("?")/= 230) call abort
if (achar (230) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 230
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(231)) /= 231) call abort
if (iachar ("?")/= 231) call abort
if (achar (231) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 231
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(232)) /= 232) call abort
if (iachar ("?")/= 232) call abort
if (achar (232) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 232
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(233)) /= 233) call abort
if (iachar ("?")/= 233) call abort
if (achar (233) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 233
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(234)) /= 234) call abort
if (iachar ("?")/= 234) call abort
if (achar (234) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 234
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(235)) /= 235) call abort
if (iachar ("?")/= 235) call abort
if (achar (235) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 235
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(236)) /= 236) call abort
if (iachar ("?")/= 236) call abort
if (achar (236) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 236
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(237)) /= 237) call abort
if (iachar ("?")/= 237) call abort
if (achar (237) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 237
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(238)) /= 238) call abort
if (iachar ("?")/= 238) call abort
if (achar (238) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 238
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(239)) /= 239) call abort
if (iachar ("?")/= 239) call abort
if (achar (239) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 239
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(240)) /= 240) call abort
if (iachar ("?")/= 240) call abort
if (achar (240) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 240
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(241)) /= 241) call abort
if (iachar ("?")/= 241) call abort
if (achar (241) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 241
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(242)) /= 242) call abort
if (iachar ("?")/= 242) call abort
if (achar (242) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 242
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(243)) /= 243) call abort
if (iachar ("?")/= 243) call abort
if (achar (243) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 243
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(244)) /= 244) call abort
if (iachar ("?")/= 244) call abort
if (achar (244) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 244
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(245)) /= 245) call abort
if (iachar ("?")/= 245) call abort
if (achar (245) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 245
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(246)) /= 246) call abort
if (iachar ("?")/= 246) call abort
if (achar (246) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 246
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(247)) /= 247) call abort
if (iachar ("?")/= 247) call abort
if (achar (247) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 247
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(248)) /= 248) call abort
if (iachar ("?")/= 248) call abort
if (achar (248) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 248
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(249)) /= 249) call abort
if (iachar ("?")/= 249) call abort
if (achar (249) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 249
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(250)) /= 250) call abort
if (iachar ("?")/= 250) call abort
if (achar (250) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 250
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(251)) /= 251) call abort
if (iachar ("?")/= 251) call abort
if (achar (251) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 251
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(252)) /= 252) call abort
if (iachar ("?")/= 252) call abort
if (achar (252) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 252
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(253)) /= 253) call abort
if (iachar ("?")/= 253) call abort
if (achar (253) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 253
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(254)) /= 254) call abort
if (iachar ("?")/= 254) call abort
if (achar (254) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 254
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
if (iachar(achar(255)) /= 255) call abort
if (iachar ("?")/= 255) call abort
if (achar (255) /= "?") call abort
if ("?" /= achar ( ichar ( "?"))) call abort
i = 255
c = "?"
if (achar(i) /= "?") call abort
if (iachar(c) /= iachar("?")) call abort
end program main
-------------- next part --------------
! { dg-do compile }
! { dg-options "-Wall" }
program main
print *,achar(-3) ! { dg-warning "outside of range" }
print *,achar(200) ! { dg-warning "outside of range" }
print *,char(222+221) ! { dg-warning "outside of range" }
print *,char(-44) ! { dg-warning "outside of range" }
print *,iachar("??") ! { dg-warning "outside of range" }
end program main
More information about the Gcc-patches
mailing list