t_strcat.mod 982 B

1234567891011121314151617181920212223
  1. MODULE TStrCat;
  2. (* String concatenation `+` (arrays and literals, including a single
  3. CHAR operand) and string length. Exit 63. *)
  4. VAR ExitCode : INTEGER;
  5. VAR a : ARRAY [0 .. 31] OF CHAR;
  6. VAR b, c : ARRAY [0 .. 7] OF CHAR;
  7. BEGIN
  8. b[0] := "a"; b[1] := "b"; b[2] := CHR(0);
  9. c[0] := "c"; c[1] := "d"; c[2] := CHR(0);
  10. a := b + c; (* array + array -> "abcd" *)
  11. IF a = "abcd" THEN ExitCode := ExitCode + 1 ELSE ExitCode := 100 END;
  12. a := "xy" + "z"; (* literal + CHAR -> "xyz" *)
  13. IF a = "xyz" THEN ExitCode := ExitCode + 2 ELSE ExitCode := 100 END;
  14. a := "hello"; (* string assignment (was a trap) *)
  15. IF a = "hello" THEN ExitCode := ExitCode + 4 ELSE ExitCode := 100 END;
  16. IF LEN(a) = 32 THEN ExitCode := ExitCode + 8 ELSE ExitCode := 100 END;
  17. IF LEN("hello") = 5 THEN ExitCode := ExitCode + 16 ELSE ExitCode := 100 END;
  18. IF LENGTH("abc") = 3 THEN ExitCode := ExitCode + 32 ELSE ExitCode := 100 END
  19. END TStrCat.