MODULE Library1; // Exercises the newly added standard-library modules: ConvTypes, // WholeStr, RealStr, LongStr, LongMath, StrIO, InOut, STextIO, // SWholeIO, SRealIO, SIOResult, IOConsts, TERMINATION, StdIO. // Exit 42. IMPORT ConvTypes, WholeStr, RealStr, LongStr, LongMath, StrIO, InOut, STextIO, SWholeIO, SRealIO, SIOResult, IOConsts, TERMINATION, StdIO, IOChan, LongIO; FROM ConvTypes IMPORT ConvResults, strAllRight; FROM IOConsts IMPORT ReadResults, notKnown; VAR ExitCode : INTEGER; VAR n : INTEGER; VAR c : CARDINAL; VAR x, y : REAL; VAR res : ConvResults; VAR s : ARRAY [0..63] OF CHAR; PROCEDURE Sink (ch : CHAR); BEGIN (* a pushable output procedure *) END Sink; BEGIN WholeStr.StrToInt("40", n, res); IF res # strAllRight THEN ExitCode := 1 END; WholeStr.StrToCard("2", c, res); WholeStr.IntToStr(n, s); ExitCode := n + VAL(INTEGER, c); (* 42 *) RealStr.RealToFixed(3.14159, 2, s); (* "3.14" *) RealStr.RealToFloat(312.5, 4, s); x := LongMath.sqrt(4.0); (* 2.0 *) y := LongMath.power(2.0, 3.0); (* 8.0 *) ExitCode := ExitCode + LongMath.round(x + y) - 10; (* 42 *) STextIO.WriteString("lib "); SWholeIO.WriteCard(c, 1); STextIO.WriteLn; SRealIO.WriteFixed(2.5, 1, 0); STextIO.WriteLn; LongIO.WriteReal(IOChan.StdOutChan(), 3.5, 0); STextIO.WriteLn; StrIO.WriteString("strio"); StrIO.WriteLn; InOut.WriteString("oct "); InOut.WriteOct(42, 1); InOut.WriteString(" hex "); InOut.WriteHex(255, 4); InOut.WriteLn; StdIO.PushOutput(Sink); StdIO.Write("Z"); StdIO.PopOutput; StdIO.Write("D"); STextIO.WriteLn; IF SIOResult.ReadResult() = notKnown THEN END; IF TERMINATION.HasHalted() THEN ExitCode := 2 END END Library1.