t_compat.mod 917 B

123456789101112131415161718192021222324252627
  1. MODULE TCompat;
  2. // GNU/classic compatibility accepted by V3 for self-hosting the
  3. // Coco/R-generated sources: '&' (AND) and '~' (NOT), LENGTH (alias of
  4. // LEN), CAP, ORDL, the octal character literal 0C, and empty
  5. // THEN/ELSE bodies. Exit 42.
  6. VAR ExitCode : INTEGER;
  7. VAR s : ARRAY [0..2] OF CHAR;
  8. VAR c : CHAR;
  9. VAR n : INTEGER;
  10. PROCEDURE Len (a : ARRAY OF CHAR) : INTEGER;
  11. BEGIN RETURN LENGTH(a) END Len;
  12. BEGIN
  13. s := "abc";
  14. n := Len(s); // 3 (LENGTH alias)
  15. c := CAP("q"); // 'Q'
  16. IF (n = 3) & (c = "Q") THEN
  17. n := n + 39 // & = AND -> 42
  18. ELSE
  19. END; // empty ELSE
  20. c := 0C; // octal char literal -> NUL
  21. IF ~(c = CHR(0)) THEN n := 0 END; // ~ = NOT
  22. n := n + ORDL(0); // ORDL
  23. IF n = 42 THEN ELSE n := 0 END; // empty THEN + ELSE
  24. ExitCode := n
  25. END TCompat.