t_emptychar.mod 796 B

123456789101112131415161718192021222324252627282930
  1. MODULE TEmptyChar;
  2. // ISO: the empty string literal has length 0 and is compatible with
  3. // CHAR, where its value is the terminator. It also stays a string for
  4. // CHAR arrays (t_strempty covers that side). Exit 42.
  5. VAR ExitCode : INTEGER;
  6. VAR ch : CHAR;
  7. VAR s : ARRAY [0..3] OF CHAR;
  8. VAR i : INTEGER;
  9. PROCEDURE IsNul (c: CHAR) : BOOLEAN;
  10. BEGIN
  11. RETURN c = ""
  12. END IsNul;
  13. PROCEDURE Nul () : CHAR;
  14. BEGIN
  15. RETURN ""
  16. END Nul;
  17. BEGIN
  18. i := 0;
  19. ch := "";
  20. IF (ch = "") AND IsNul(ch) AND (Nul() = "") THEN i := i + 1 END;
  21. CASE ch OF
  22. "" : i := i + 10
  23. | 'x' : i := i + 100
  24. ELSE i := i + 200
  25. END;
  26. FOR ch := "" TO CHR(2) DO i := i + 1 END;
  27. (* 1 + 10 + 3 (nul, 1, 2) = 14; +28 = 42 *)
  28. s := "";
  29. IF (i = 14) AND (s[0] = CHR(0)) THEN ExitCode := 42 ELSE ExitCode := i END
  30. END TEmptyChar.