Read(ch);
UNTIL (ch # ' ') AND (ch # TAB);
UnRead(ch);
- LOOP
+ REPEAT
Read(ch);
termCH := ch;
- IF (NOT Done) OR (ch <= " ") THEN s[i] := 0C; RETURN END;
- s[i] := ch;
+ IF i <= HIGH(s) THEN
+ s[i] := ch;
+ IF (NOT Done) OR (ch <= " ") THEN
+ s[i] := 0C;
+ END;
+ END;
INC(i);
- IF i > HIGH(s) THEN DEC(i); END;
- END;
+ UNTIL (NOT Done) OR (ch <= " ");
END ReadString;
PROCEDURE XReadString(VAR s : ARRAY OF CHAR);
ch := str[iB]; INC(iB);
IF NOT (ch IN SETOFCHAR{'0'..'9'}) THEN ok := FALSE; RETURN END;
REPEAT
- dig(ORD(ch));
+ IF r>BIG THEN INC(pow10) ELSE r:= 10.0D*r+FLOATD(ORD(ch)-ORD('0')) END;
IF iB <= HIGH(str) THEN
ch := str[iB]; INC(iB);
END;
ch := str[iB]; INC(iB);
IF NOT (ch IN SETOFCHAR{'0'..'9'}) THEN ok := FALSE; RETURN END;
REPEAT
- dig(ORD(ch));
- DEC(pow10);
+ IF r < BIG THEN
+ r := 10.0D * r + FLOATD(ORD(ch)-ORD('0'));
+ DEC(pow10);
+ END;
IF iB <= HIGH(str) THEN
ch := str[iB]; INC(iB);
END;
IF pow10 < 0 THEN i := -pow10; ELSE i := pow10; END;
e := 1.0D;
DEC(i);
+ WHILE i >= 10 DO
+ e := e * 10000000000.0D;
+ DEC(i,10);
+ END;
WHILE i >= 0 DO
e := e * 10.0D;
DEC(i)