t_dynstr.mod 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. MODULE TDynStr;
  2. // DynamicStrings (core subset) + SysStorage. Exit 42.
  3. FROM DynamicStrings IMPORT String, InitString, KillString, Length,
  4. ConCat, Add, Equal, EqualArray, CopyOut, char, Mult, Slice,
  5. Index, RIndex, ToUpper, ReplaceChar, Dup, RemoveWhitePostfix;
  6. FROM SYSTEM IMPORT ADDRESS;
  7. IMPORT SysStorage;
  8. VAR ExitCode : INTEGER;
  9. VAR s, t, u : String;
  10. VAR p : ADDRESS;
  11. VAR buf : ARRAY [0..63] OF CHAR;
  12. VAR n : CARDINAL;
  13. BEGIN
  14. SysStorage.ALLOCATE(p, 16);
  15. SysStorage.DEALLOCATE(p, 16);
  16. s := InitString("Hello");
  17. t := InitString(" World");
  18. s := ConCat(s, t); (* "Hello World" *)
  19. u := Add(s, InitString("!")); (* new "Hello World!" *)
  20. n := Length(u); (* 12 *)
  21. IF Equal(s, InitString("Hello World")) THEN END;
  22. IF EqualArray(s, "Hello World") THEN END;
  23. s := ToUpper(s); (* "HELLO WORLD" *)
  24. s := ReplaceChar(s, "L", "l"); (* "HEllO WORlD" *)
  25. CopyOut(buf, s);
  26. t := Mult(InitString("ab"), 3); (* "ababab" *)
  27. IF Length(t) = 6 THEN END;
  28. t := KillString(t);
  29. s := KillString(s);
  30. u := KillString(u);
  31. IF n = 12 THEN ExitCode := 42 ELSE ExitCode := 1 END
  32. END TDynStr.