/* Conformance Test 2.1.0.2:  Verification of ANSI C trigraphs */

#include <string.h>

int printf(const char *, ...);

??=define ten 10                       /* ??= is '#' */

int main (void)
  ??<                                  /* ??< is '{' */
   int  i;
   char a, b??(10??) = "abc";          /* ??( is '[' */
                                       /* ??) is ']' */

   if (ten != 10)
       goto Fail;

   if ((strcmp (b, "abc")) != 0)
       goto Fail;

   a = '??/n';                         /* ??/ is '\' */
   if (a != 0x0A)
       goto Fail;

   i = 5 ??/
       * 8;

   i = 0x7F ??' 0x03;                  /* ??' is '^', XOR */
   if (i != 0x7C)
       goto Fail;

   i = 0x45 ??! 0x03;                  /* ??! is '|', OR  */
   if (i != 0x47)
       goto Fail;

   i = ??-i;                           /* ??- is '~', bitwise negation */
   if (i != 0xFFB8)
       goto Fail;

   printf ("Passed Conformance Test 2.1.0.2\n");
   return 0;

Fail:
   printf ("Failed Conformance Test 2.1.0.2\n");
  ??>                                  /* ??> is '}' */
