library1.mod 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. MODULE Library1;
  2. // Exercises the newly added standard-library modules: ConvTypes,
  3. // WholeStr, RealStr, LongStr, LongMath, StrIO, InOut, STextIO,
  4. // SWholeIO, SRealIO, SIOResult, IOConsts, TERMINATION, StdIO.
  5. // Exit 42.
  6. IMPORT ConvTypes, WholeStr, RealStr, LongStr, LongMath,
  7. StrIO, InOut, STextIO, SWholeIO, SRealIO, SIOResult, IOConsts,
  8. TERMINATION, StdIO, IOChan, LongIO;
  9. FROM ConvTypes IMPORT ConvResults, strAllRight;
  10. FROM IOConsts IMPORT ReadResults, notKnown;
  11. VAR ExitCode : INTEGER;
  12. VAR n : INTEGER;
  13. VAR c : CARDINAL;
  14. VAR x, y : REAL;
  15. VAR res : ConvResults;
  16. VAR s : ARRAY [0..63] OF CHAR;
  17. PROCEDURE Sink (ch : CHAR);
  18. BEGIN
  19. (* a pushable output procedure *)
  20. END Sink;
  21. BEGIN
  22. WholeStr.StrToInt("40", n, res);
  23. IF res # strAllRight THEN ExitCode := 1 END;
  24. WholeStr.StrToCard("2", c, res);
  25. WholeStr.IntToStr(n, s);
  26. ExitCode := n + VAL(INTEGER, c); (* 42 *)
  27. RealStr.RealToFixed(3.14159, 2, s); (* "3.14" *)
  28. RealStr.RealToFloat(312.5, 4, s);
  29. x := LongMath.sqrt(4.0); (* 2.0 *)
  30. y := LongMath.power(2.0, 3.0); (* 8.0 *)
  31. ExitCode := ExitCode + LongMath.round(x + y) - 10; (* 42 *)
  32. STextIO.WriteString("lib ");
  33. SWholeIO.WriteCard(c, 1);
  34. STextIO.WriteLn;
  35. SRealIO.WriteFixed(2.5, 1, 0);
  36. STextIO.WriteLn;
  37. LongIO.WriteReal(IOChan.StdOutChan(), 3.5, 0);
  38. STextIO.WriteLn;
  39. StrIO.WriteString("strio");
  40. StrIO.WriteLn;
  41. InOut.WriteString("oct ");
  42. InOut.WriteOct(42, 1);
  43. InOut.WriteString(" hex ");
  44. InOut.WriteHex(255, 4);
  45. InOut.WriteLn;
  46. StdIO.PushOutput(Sink);
  47. StdIO.Write("Z");
  48. StdIO.PopOutput;
  49. StdIO.Write("D");
  50. STextIO.WriteLn;
  51. IF SIOResult.ReadResult() = notKnown THEN END;
  52. IF TERMINATION.HasHalted() THEN ExitCode := 2 END
  53. END Library1.