#include <perms.h>
int _imp_mainep(int _imp_argc, char **_imp_argv) {
  static const _imp_string Null = _imp_str_literal("");
  static const _imp_string Ten = _imp_str_literal("1234567890");
  static const _imp_string Alphabet =
      _imp_str_literal("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
  static const _imp_string Triple1 = _imp_str_literal("ABC");
  static const _imp_string Triple2 = _imp_str_literal("DEF");
  static const _imp_string Triple3 = _imp_str_literal("GHI");
  _imp_string Alpha;
  _imp_string Beta;
  _imp_string Gamma;
  _imp_string Delta;
  static int Failures = 0;
  void Pass(void) { Printstring(_imp_str_literal("Pass: ")); }
  void Fail(void) {
    Printstring(_imp_str_literal("FAIL: "));
    Failures++;
  }
  Newlines(2);
  Printstring(_imp_str_literal("%String Procedure Validation"));
  Newline();
  Printstring(_imp_str_literal("----------------------------"));
  Newlines(2);
  Printstring(_imp_str_literal("Entities:"));
  Newline();
  Printstring(_imp_str_literal("-------- "));
  Newlines(2);
  Printstring(_imp_str_literal("Constants:     Triple1 = \"ABC\""));
  Newline();
  Printstring(_imp_str_literal("               Triple2 = \"DEF\""));
  Newline();
  Printstring(_imp_str_literal("               Triple3 = \"GHI\""));
  Newline();
  Printstring(_imp_str_literal("               Null    = \"\""));
  Newline();
  Printstring(_imp_str_literal("               Ten     = \"1234567890\""));
  Newline();
  Printstring(_imp_str_literal(
      "               Alphabet= \"ABCEEFGHIJKLMNOPQRSTUVWXYZ\""));
  Newlines(2);
  Printstring(_imp_str_literal("Variables:     Alpha   = %String(4)"));
  Newline();
  Printstring(_imp_str_literal("               Beta    = %String(255)"));
  Newline();
  Printstring(_imp_str_literal("               Gamma   = %String(255)"));
  Newlines(2);
  if (_imp_str_literal("ABC") == _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" = \"ABC\""));
  Newline();
  if (Triple1 == _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 = \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") == Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" = Triple1"));
  Newline();
  if (Triple1 == Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 = Triple1"));
  Newline();
  Newlines(3);
  Printstring(_imp_str_literal("Let:    Alpha = Beta = Triple1"));
  Newline();
  Printstring(_imp_str_literal("---"));
  Newlines(2);
  Alpha = Triple1;
  Beta = Triple1;
  if (Alpha == Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha = Triple1"));
  Newline();
  if (Triple1 == Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 = Alpha"));
  Newline();
  if (Alpha == Beta)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha = Beta"));
  Newline();
  if (Alpha == Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha = Alpha"));
  Newline();
  if (Alpha == _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha = \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") == Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" = Alpha"));
  Newlines(2);
  if (_imp_str_literal("ABC") != _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" # \"ABC\""));
  Newline();
  if (Triple1 != _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 # \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") != Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" # Triple1"));
  Newline();
  if (Triple1 != Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 # Triple1"));
  Newline();
  if (Alpha != Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha # Triple1"));
  Newline();
  if (Triple1 != Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 # Alpha"));
  Newline();
  if (Alpha != Beta)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha # Beta"));
  Newline();
  if (Alpha != Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha # Alpha"));
  Newline();
  if (Alpha != _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha # \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") != Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" # Alpha"));
  Newlines(2);
  Alpha = Triple1;
  if (_imp_str_literal("ABC") < _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" < \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") < Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" < Alpha"));
  Newline();
  if (Alpha < _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha < \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") < Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" < Triple1"));
  Newline();
  if (Triple1 < _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 < \"ABC\""));
  Newline();
  if (Alpha < Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha < Triple1"));
  Newline();
  if (Triple1 < Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 < Alpha"));
  Newline();
  if (Triple1 < Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 < Triple1"));
  Newline();
  if (Alpha < Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha < Alpha"));
  Newlines(2);
  Alpha = Triple1;
  if (_imp_str_literal("ABC") <= _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" <= \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") <= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" <= Alpha"));
  Newline();
  if (Alpha <= _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha <= \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") <= Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" <= Triple1"));
  Newline();
  if (Triple1 <= _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 <= \"ABC\""));
  Newline();
  if (Alpha <= Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha <= Triple1"));
  Newline();
  if (Triple1 <= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 <= Alpha"));
  Newline();
  if (Triple1 <= Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 <= Triple1"));
  Newline();
  if (Alpha <= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha <= Alpha"));
  Newline();
  Alpha = Triple1;
  if (_imp_str_literal("ABC") > _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" > \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") > Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" > Alpha"));
  Newline();
  if (Alpha > _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha > \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") > Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" > Triple1"));
  Newline();
  if (Triple1 > _imp_str_literal("ABC"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 > \"ABC\""));
  Newline();
  if (Alpha > Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha > Triple1"));
  Newline();
  if (Triple1 > Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 > Alpha"));
  Newline();
  if (Triple1 > Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 > Triple1"));
  Newline();
  if (Alpha > Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha > Alpha"));
  Newline();
  Alpha = Triple1;
  if (_imp_str_literal("ABC") >= _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" >= \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") >= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" >= Alpha"));
  Newline();
  if (Alpha >= _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha >= \"ABC\""));
  Newline();
  if (_imp_str_literal("ABC") >= Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" >= Triple1"));
  Newline();
  if (Triple1 >= _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 >= \"ABC\""));
  Newline();
  if (Alpha >= Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha >= Triple1"));
  Newline();
  if (Triple1 >= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 >= Alpha"));
  Newline();
  if (Triple1 >= Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 >= Triple1"));
  Newline();
  if (Alpha >= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha >= Alpha"));
  Newlines(4);
  if (_imp_str_literal("ABC") == _imp_str_literal("DEF"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" = \"DEF\""));
  Newline();
  if (Triple1 == _imp_str_literal("DEF"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 = \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") == Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"DEF\" = Triple1"));
  Newline();
  if (Triple1 == Triple2)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 = Triple2"));
  Newlines(2);
  Printstring(_imp_str_literal("Let:   Alpha = Triple1"));
  Newline();
  Printstring(_imp_str_literal("---    Beta  = Triple2"));
  Newlines(2);
  Alpha = Triple1;
  Beta = Triple2;
  if (Alpha == Triple2)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha = Triple2"));
  Newline();
  if (Triple2 == Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple2 = Alpha"));
  Newline();
  if (Alpha == Beta)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha = Beta"));
  Newline();
  if (Alpha == _imp_str_literal("DEF"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha = \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") == Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"DEF\" = Alpha"));
  Newlines(2);
  if (_imp_str_literal("ABC") != _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" # \"DEF\""));
  Newline();
  if (Triple1 != _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 # \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") != Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"DEF\" # Triple1"));
  Newline();
  if (Triple1 != Triple2)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 # Triple2"));
  Newline();
  if (Alpha != Triple2)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha # Triple2"));
  Newline();
  if (Triple2 != Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple2 # Alpha"));
  Newline();
  if (Alpha != Beta)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha # Beta"));
  Newline();
  if (Alpha != _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha # \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") != Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"DEF\" # Alpha"));
  Newlines(2);
  if (_imp_str_literal("ABC") < _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" < \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") < Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"DEF\" < Alpha"));
  Newline();
  if (Alpha < _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha < \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") < Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"DEF\" < Triple1"));
  Newline();
  if (Triple1 < _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 < \"DEF\""));
  Newline();
  if (Alpha < Triple2)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha < Triple2"));
  Newline();
  if (Triple2 < Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple2 < Alpha"));
  Newline();
  if (Triple1 < Triple2)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 < Triple2"));
  Newlines(2);
  if (_imp_str_literal("ABC") <= _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" <= \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") <= Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"DEF\" <= Alpha"));
  Newline();
  if (Alpha <= _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha <= \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") <= Triple1)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"DEF\" <= Triple1"));
  Newline();
  if (Triple1 <= _imp_str_literal("DEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 <= \"DEF\""));
  Newline();
  if (Alpha <= Triple2)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha <= Triple2"));
  Newline();
  if (Triple2 <= Alpha)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple2 <= Alpha"));
  Newline();
  if (Triple1 <= Triple2)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 <= Triple2"));
  Newline();
  if (Alpha <= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha <= Alpha"));
  Newline();
  if (_imp_str_literal("ABC") > _imp_str_literal("DEF"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" > \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") > Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"DEF\" > Alpha"));
  Newline();
  if (Alpha > _imp_str_literal("DEF"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha > \"DEF\""));
  Newline();
  if (_imp_str_literal("ABC") > Triple2)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("\"ABC\" > Triple2"));
  Newline();
  if (Triple1 > _imp_str_literal("DEF"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 > \"DEF\""));
  Newline();
  if (Alpha > Triple2)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha > Triple2"));
  Newline();
  if (Triple2 > Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple2 > Alpha"));
  Newline();
  if (Triple1 > Triple2)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Triple1 > Triple2"));
  Newlines(2);
  if (_imp_str_literal("DEF") >= _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"DEF\" >= \"ABC\""));
  Newline();
  if (_imp_str_literal("DEF") >= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"DEF\" >= Alpha"));
  Newline();
  if (Alpha >= _imp_str_literal("DEF"))
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha >= \"DEF\""));
  Newline();
  if (_imp_str_literal("DEF") >= Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"DEF\" >= Triple1"));
  Newline();
  if (Triple2 >= _imp_str_literal("ABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple2 >= \"ABC\""));
  Newline();
  if (Alpha >= Triple2)
    Fail();
  else
    Pass();
  Printstring(_imp_str_literal("Alpha >= Triple2"));
  Newline();
  if (Triple2 >= Alpha)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple2 >= Alpha"));
  Newline();
  if (Triple2 >= Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple2 >= Triple1"));
  Newline();
  Newlines(5);
  Printstring(_imp_str_literal("Testing the CHAR NO Function"));
  Newline();
  Printstring(_imp_str_literal("----------------------------"));
  Newlines(2);
  Printstring(_imp_str_literal("Let:   Beta = Ten"));
  Newline();
  Printstring(_imp_str_literal("---"));
  Newlines(2);
  Beta = Ten;
  if (*Charno(Alphabet, 1) == 'A')
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("CHAR NO (Alphabet, 1) = 'A'"));
  Newline();
  if (*Charno(Alphabet, 26) == 'Z')
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("CHAR NO (Alphabet, 26) = 'Z'"));
  Newline();
  if (*Charno(Beta, 1) == '1')
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("CHAR NO (Beta, 1) = '1'"));
  Newline();
  if (*Charno(Beta, 10) == '0')
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("CHAR NO (Beta, 10) = '0'"));
  Newlines(5);
  Printstring(_imp_str_literal("Test the TO STRING Function"));
  Newline();
  Printstring(_imp_str_literal("---------------------------"));
  Newlines(2);
  if (Tostring('A') == _imp_str_literal("A"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("TO STRING ('A') = \"A\""));
  Newline();
  if (Tostring(32) == _imp_str_literal(" "))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("TO STRING (32) = \" \""));
  Newline();
  if (_imp_str_literal("1") == Tostring('1'))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"1\" = TO STRING ('1')"));
  Newlines(3);
  Printstring(_imp_str_literal("Let:    Alpha = To String (0)"));
  Newline();
  Printstring(_imp_str_literal("---     Beta  = To String (255)"));
  Newline();
  Printstring(_imp_str_literal("        Gamma = To String ('?')"));
  Newlines(2);
  Alpha = Tostring(0);
  Beta = Tostring(255);
  Gamma = Tostring('?');
  if (!*Charno(Alpha, 1))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("CHAR NO (Alpha, 1) = 0"));
  Newline();
  if (*Charno(Beta, 1) == 255)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("CHAR NO (Beta, 1) = 255"));
  Newline();
  if ('?' == *Charno(Gamma, 1))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("'?' = CHAR NO (Gamma, 1)"));
  Newline();
  Newlines(5);
  Printstring(_imp_str_literal("Test the SUB STRING Function."));
  Newline();
  Printstring(_imp_str_literal("-----------------------------"));
  Newlines(2);
  Printstring(_imp_str_literal("Let:   Beta = Ten"));
  Newline();
  Printstring(_imp_str_literal("---"));
  Newlines(2);
  Beta = Ten;
  if (Substring(Ten, 4, 7) == _imp_str_literal("4567"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("SUB STRING (Ten, 4, 7) = \"4567\""));
  Newline();
  if (Substring(Beta, 4, 7) == _imp_str_literal("4567"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("SUB STRING (Beta, 4, 7) = \"4567\""));
  Newline();
  if (Substring(Ten, 4, 3) == _imp_str_literal(""))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("SUB STRING (Ten, 4, 3) = \"\""));
  Newline();
  if (Substring(Alphabet, 1, 3) == Triple1)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("SUB STRING (Alphabet, 1, 3) = Triple1"));
  Newline();
  Newlines(5);
  Printstring(_imp_str_literal("Test the LENGTH Function."));
  Newline();
  Printstring(_imp_str_literal("-------------------------"));
  Newlines(2);
  Printstring(_imp_str_literal("Let:  Alpha = Null"));
  Newline();
  Printstring(_imp_str_literal("---   Beta  = Triple2"));
  Newline();
  Printstring(_imp_str_literal("      Gamma = Alphabet"));
  Newlines(2);
  Alpha = Null;
  Beta = Triple2;
  Gamma = Alphabet;
  Printstring(_imp_str_literal("The Following THREE LINES must all"));
  Printstring(_imp_str_literal(" have the SAME number on each line."));
  Newline();
  Printstring(_imp_str_literal(" 0   "));
  Write(*Length(Null), 4);
  Write(*Length(Alpha), 4);
  Spaces(5);
  Printstring(_imp_str_literal("LENGTHs of the NULL String."));
  Newline();
  Printstring(_imp_str_literal(" 3   "));
  Write(*Length(Triple2), 4);
  Write(*Length(Beta), 4);
  Spaces(5);
  Printstring(_imp_str_literal("LENGTHs of the \"DEF\" String."));
  Newline();
  Printstring(_imp_str_literal("26   "));
  Write(*Length(Alphabet), 4);
  Write(*Length(Gamma), 4);
  Spaces(5);
  Printstring(_imp_str_literal("LENGTHs of the Upper Case Letters String."));
  Newline();
  Newlines(5);
  Printstring(_imp_str_literal("Test the Concatenation of Strings."));
  Newline();
  Printstring(_imp_str_literal("----------------------------------"));
  Newlines(2);
  Printstring(_imp_str_literal("Let:   Alpha = Triple1"));
  Newline();
  Printstring(_imp_str_literal("---    Beta  = Triple2"));
  Newline();
  Printstring(_imp_str_literal("       Gamma = \"TUVWXYZ\""));
  Newlines(2);
  Alpha = Triple1;
  Beta = Triple2;
  Gamma = _imp_str_literal("TUVWXYZ");
  if (_imp_join(Null, Null) == Null)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Null . Null = Null"));
  Newline();
  if (_imp_join(Null, Null) == _imp_join(Null, _imp_join(Null, Null)))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Null . Null = Null . Null . Null"));
  Newline();
  if (_imp_join(Null, Alpha) == _imp_join(Triple1, Null))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Null . Alpha = Triple1 . Null"));
  Newline();
  if (_imp_join(Triple1, Beta) == _imp_str_literal("ABCDEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 . Beta = \"ABCDEF\""));
  Newline();
  if (_imp_join(_imp_str_literal("ABC"), Beta) == _imp_str_literal("ABCDEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABC\" . Beta = \"ABCDEF\""));
  Newline();
  if (_imp_join(Alpha, Beta) == _imp_str_literal("ABCDEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Alpha . Beta = \"ABCDEF\""));
  Newline();
  if (_imp_join(Triple1, Triple2) == _imp_str_literal("ABCDEF"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 . Triple2 = \"ABCDEF\""));
  Newline();
  if (_imp_str_literal("ABCDEF") == _imp_join(Alpha, Triple2))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABCDEF\" = Alpha . Triple2"));
  Newline();
  if (_imp_str_literal("ABCDEF") == _imp_join(Alpha, _imp_str_literal("DEF")))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABCDEF\" = Alpha . \"DEF\""));
  Newline();
  if (_imp_str_literal("ABCDEF") == _imp_join(Alpha, Beta))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABCDEF\" = Alpha . Beta"));
  Newline();
  if (_imp_str_literal("ABCDEF") == _imp_join(Triple1, Triple2))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABCDEF\" = Triple1 . Triple2"));
  Newline();
  if (_imp_str_literal("ABCDEF") == _imp_join(_imp_str_literal("ABC"), Triple2))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABCDEF\" = \"ABC\" . Triple2"));
  Newline();
  if (_imp_str_literal("ABCDEF") ==
      _imp_join(_imp_str_literal("ABC"), _imp_str_literal("DEF")))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("\"ABCDEF\" = \"ABC\" . \"DEF\""));
  Newline();
  if (_imp_join(Tostring('A'), Triple1) == _imp_str_literal("AABC"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("To String ('A') . Triple1 = \"AABC\""));
  Newline();
  if (Triple1 == _imp_join(Tostring('A'), _imp_str_literal("BC")))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Triple1 = To String ('A') . \"BC\""));
  Newline();
  if (_imp_join(
          Tostring('A'),
          _imp_join(Alpha, _imp_join(_imp_str_literal("DEF"), Triple3))) ==
      _imp_join(_imp_str_literal("AA"),
                _imp_join(Substring(Alpha, 2, 3),
                          _imp_join(Beta, _imp_str_literal("GHI")))))
    Pass();
  else
    Fail();
  Printstring(
      _imp_str_literal("TO STRING ('A') . Alpha . \"DEF\" . Triple3 = "));
  Newline();
  Printstring(
      _imp_str_literal("\"AA\" . SUB STRING (Alpha, 2, 3) . Beta . \"GHI\""));
  Newline();
  Newlines(4);
  Printstring(_imp_str_literal("Combined Testing of String Functions."));
  Newline();
  Printstring(_imp_str_literal("-------------------------------------"));
  Newlines(2);
  Beta = Triple1;
  Gamma = _imp_join(Alphabet, _imp_join(Null, _imp_join(Tostring(32), Beta)));
  Printstring(_imp_str_literal("The following TWO NUMBERS must be identical."));
  Newline();
  Printstring(_imp_str_literal("30  "));
  Write(*Length(Gamma), 2);
  Newlines(2);
  Delta = Ten;
  if (Tostring(*Charno(Delta, 5)) == Substring(Ten, 5, 5))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal(
      "TO STRING (CHAR NO (Delta, 5)) = SUB STRING (Ten, 5, 5)"));
  Newlines(2);
  Newlines(4);
  Printstring(_imp_str_literal("Testing the String Resolution."));
  Newline();
  Printstring(_imp_str_literal("------------------------------"));
  Newlines(2);
  Printstring(_imp_str_literal("Let:   Delta = Ten"));
  Newline();
  Printstring(_imp_str_literal("---    Alpha = \"456\""));
  Newlines(2);
  Alpha = _imp_str_literal("456");
  Delta = Ten;
  if (!_imp_resolve(Delta, Beta, _imp_str_literal("456"), Gamma))
    _imp_signal(7, 0, 0);
  if (Beta == _imp_str_literal("123") && Gamma == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> Beta . (\"456\") . Gamma"));
  Newline();
  if (!_imp_resolve(Delta, Beta, _imp_str_literal("456"), NULL))
    _imp_signal(7, 0, 0);
  if (Beta == _imp_str_literal("123"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> Beta . (\"456\")"));
  Newline();
  if (!_imp_resolve(Delta, NULL, _imp_str_literal("456"), Gamma))
    _imp_signal(7, 0, 0);
  if (Gamma == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> (\"456\") . Gamma"));
  Newline();
  if (Delta == Ten)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Source unaffected."));
  Newlines(2);
  if (!_imp_resolve(Delta, Beta, Alpha, Gamma)) _imp_signal(7, 0, 0);
  if (Beta == _imp_str_literal("123") && Gamma == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> Beta . (Alpha) . Gamma"));
  Newline();
  if (!_imp_resolve(Delta, Beta, Alpha, NULL)) _imp_signal(7, 0, 0);
  if (Beta == _imp_str_literal("123"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> Beta . (Alpha)"));
  Newline();
  if (!_imp_resolve(Delta, NULL, Alpha, Gamma)) _imp_signal(7, 0, 0);
  if (Gamma == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> (Alpha) . Gamma"));
  Newline();
  if (Delta == Ten)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Source unaffected."));
  Newline();
  if (Alpha == _imp_str_literal("456"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Pattern variable unaffected."));
  Newlines(2);
  if (!_imp_resolve(Delta, Beta, Substring(Ten, 4, 6), Gamma))
    _imp_signal(7, 0, 0);
  if (Beta == _imp_str_literal("123") && Gamma == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(
      _imp_str_literal("Delta -> Beta . (Sub String (Ten, 4, 6)) . Gamma"));
  Newline();
  if (!_imp_resolve(Delta, Beta, Substring(Ten, 4, 6), NULL))
    _imp_signal(7, 0, 0);
  if (Beta == _imp_str_literal("123"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> Beta . (Sub String (Ten, 4, 6))"));
  Newline();
  if (!_imp_resolve(Delta, NULL, Substring(Ten, 4, 6), Gamma))
    _imp_signal(7, 0, 0);
  if (Gamma == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> (Sub String (Ten, 4, 6)) . Gamma"));
  Newline();
  if (Delta == Ten)
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Source unaffected."));
  Newline();
  if (!_imp_resolve(Delta, Delta, _imp_str_literal("456"), Beta))
    _imp_signal(7, 0, 0);
  if (Delta == _imp_str_literal("123") && Beta == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> Delta . (\"456\") . Beta"));
  Newlines(3);
  Printstring(_imp_str_literal("Let:   Delta = Ten"));
  Newline();
  Printstring(_imp_str_literal("---"));
  Newlines(2);
  Delta = Ten;
  if (!_imp_resolve(Delta, Delta, Alpha, Beta)) _imp_signal(7, 0, 0);
  if (Delta == _imp_str_literal("123") && Beta == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> Delta . (Alpha) . Beta"));
  Newline();
  Newlines(3);
  Printstring(_imp_str_literal("Let:    Delta = Ten"));
  Newline();
  Printstring(_imp_str_literal("---"));
  Newlines(2);
  Delta = Ten;
  if (_imp_resolve(Delta, NULL, _imp_str_literal("456"), NULL))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> (\"456\") condition."));
  Newline();
  if (_imp_resolve(Delta, NULL, Alpha, NULL))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> (Alpha) condition."));
  Newline();
  if (_imp_resolve(Delta, Beta, Alpha, Gamma))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Delta -> Beta . (Alpha) . Gamma condition."));
  Newline();
  if (Beta == _imp_str_literal("123") && Gamma == _imp_str_literal("7890"))
    Pass();
  else
    Fail();
  Printstring(_imp_str_literal("Assignment of BETA and GAMMA"));
  Newline();
  Selectoutput(0);
  Write(Failures, 1);
  Printstring(_imp_str_literal(" failure(s)"));
  Newline();
  exit(0);
  return (1);
}
