1 #include <ctype.h>
2 #if ((' ' & 0x0FF) == 0x020)
3 # define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
4 # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
5 #else
6 # define ISLOWER(c) \
7      (('a' <= (c) && (c) <= 'i') \
8 	 || ('j' <= (c) && (c) <= 'r') \
9 	 || ('s' <= (c) && (c) <= 'z'))
10 # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
11 #endif
12 
13 #define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
14 int
main()15   main ()
16 {
17    int i;
18    for (i = 0; i < 256; i++)
19      if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i))
20        exit(1);
21    exit (0);
22 }
23