IMPLEMENTATION MODULE Conversions; PROCEDURE m2realstr(x : REAL; VAR s : ARRAY OF CHAR); EXTERNAL; PROCEDURE m2strreal(VAR s : ARRAY OF CHAR; VAR ok : INTEGER) : REAL; EXTERNAL; PROCEDURE IntToStr(n : INTEGER; VAR s : ARRAY OF CHAR); VAR v : INTEGER; i, k : CARDINAL; tmp : ARRAY [0 .. 31] OF CHAR; BEGIN IF n = 0 THEN s[0] := "0"; s[1] := CHR(0) ELSE IF n < 0 THEN v := -n ELSE v := n END; i := 0; WHILE (v > 0) AND (i <= HIGH(tmp)) DO tmp[i] := CHR(ORD("0") + (v MOD 10)); v := v DIV 10; INC(i) END; k := 0; IF n < 0 THEN s[k] := "-"; INC(k) END; WHILE (i > 0) AND (k <= HIGH(s)) DO DEC(i); s[k] := tmp[i]; INC(k) END; IF k <= HIGH(s) THEN s[k] := CHR(0) END END END IntToStr; PROCEDURE CardToStr(n : CARDINAL; VAR s : ARRAY OF CHAR); VAR v : CARDINAL; i, k : CARDINAL; tmp : ARRAY [0 .. 31] OF CHAR; BEGIN IF n = 0 THEN s[0] := "0"; s[1] := CHR(0) ELSE v := n; i := 0; WHILE (v > 0) AND (i <= HIGH(tmp)) DO tmp[i] := CHR(ORD("0") + (v MOD 10)); v := v DIV 10; INC(i) END; k := 0; WHILE (i > 0) AND (k <= HIGH(s)) DO DEC(i); s[k] := tmp[i]; INC(k) END; IF k <= HIGH(s) THEN s[k] := CHR(0) END END END CardToStr; PROCEDURE RealToStr(x : REAL; VAR s : ARRAY OF CHAR); BEGIN m2realstr(x, s) END RealToStr; PROCEDURE StrToInt(s : ARRAY OF CHAR; VAR n : INTEGER) : BOOLEAN; VAR i : CARDINAL; neg, seen : BOOLEAN; v : INTEGER; BEGIN n := 0; i := 0; neg := FALSE; seen := FALSE; v := 0; IF (i > HIGH(s)) OR (s[i] = CHR(0)) THEN RETURN FALSE END; IF s[i] = "-" THEN neg := TRUE; INC(i) ELSIF s[i] = "+" THEN INC(i) END; WHILE (i <= HIGH(s)) AND (s[i] >= "0") AND (s[i] <= "9") DO v := v * 10 + (ORD(s[i]) - ORD("0")); seen := TRUE; INC(i) END; IF NOT seen THEN RETURN FALSE END; IF (i <= HIGH(s)) AND (s[i] # CHR(0)) THEN RETURN FALSE END; IF neg THEN n := -v ELSE n := v END; RETURN TRUE END StrToInt; PROCEDURE StrToCard(s : ARRAY OF CHAR; VAR n : CARDINAL) : BOOLEAN; VAR i : CARDINAL; seen : BOOLEAN; v : CARDINAL; BEGIN n := 0; i := 0; seen := FALSE; v := 0; WHILE (i <= HIGH(s)) AND (s[i] >= "0") AND (s[i] <= "9") DO v := v * 10 + (ORD(s[i]) - ORD("0")); seen := TRUE; INC(i) END; IF NOT seen THEN RETURN FALSE END; IF (i <= HIGH(s)) AND (s[i] # CHR(0)) THEN RETURN FALSE END; n := v; RETURN TRUE END StrToCard; PROCEDURE StrToReal(VAR s : ARRAY OF CHAR; VAR x : REAL) : BOOLEAN; VAR ok : INTEGER; BEGIN x := m2strreal(s, ok); RETURN ok # 0 END StrToReal; END Conversions.