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