| 123456789101112131415161718192021222324252627282930 |
- MODULE TEmptyChar;
- // ISO: the empty string literal has length 0 and is compatible with
- // CHAR, where its value is the terminator. It also stays a string for
- // CHAR arrays (t_strempty covers that side). Exit 42.
- VAR ExitCode : INTEGER;
- VAR ch : CHAR;
- VAR s : ARRAY [0..3] OF CHAR;
- VAR i : INTEGER;
- PROCEDURE IsNul (c: CHAR) : BOOLEAN;
- BEGIN
- RETURN c = ""
- END IsNul;
- PROCEDURE Nul () : CHAR;
- BEGIN
- RETURN ""
- END Nul;
- BEGIN
- i := 0;
- ch := "";
- IF (ch = "") AND IsNul(ch) AND (Nul() = "") THEN i := i + 1 END;
- CASE ch OF
- "" : i := i + 10
- | 'x' : i := i + 100
- ELSE i := i + 200
- END;
- FOR ch := "" TO CHR(2) DO i := i + 1 END;
- (* 1 + 10 + 3 (nul, 1, 2) = 14; +28 = 42 *)
- s := "";
- IF (i = 14) AND (s[0] = CHR(0)) THEN ExitCode := 42 ELSE ExitCode := i END
- END TEmptyChar.
|