IMPLEMENTATION MODULE Showcase15Lib; (* Signatures match the definition exactly (strict 235). *) IMPORT Conversions; PROCEDURE InitPoint (VAR p : Point; x, y : INTEGER); BEGIN p.x := x; p.y := y END InitPoint; PROCEDURE SumPoint (p : Point) : INTEGER; BEGIN RETURN p.x + p.y END SumPoint; PROCEDURE AppendInt (VAR s : ARRAY OF CHAR; n : INTEGER); VAR tmp : ARRAY [0 .. 31] OF CHAR; i, k : CARDINAL; BEGIN Conversions.IntToStr(n, tmp); (* find the end of s *) k := 0; WHILE (k <= HIGH(s)) AND (s[k] # CHR(0)) DO INC(k) END; i := 0; WHILE (k < HIGH(s)) AND (tmp[i] # CHR(0)) DO s[k] := tmp[i]; INC(k); INC(i) END; IF k <= HIGH(s) THEN s[k] := CHR(0) END END AppendInt; END Showcase15Lib.