Rev 8859 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8859 | Rev 9893 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | BSD 2-Clause License |
2 | BSD 2-Clause License |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | Copyright (c) 2018-2021, Anton Krotov |
4 | Copyright (c) 2018-2022, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 215... | Line 215... | ||
215 | 215 | ||
216 | 216 | ||
217 | PROCEDURE fconv* (s: ARRAY OF CHAR; VAR v: VALUE; VAR error: INTEGER); |
217 | PROCEDURE fconv* (s: ARRAY OF CHAR; VAR v: VALUE; VAR error: INTEGER); |
218 | VAR |
- | |
219 | value: REAL; |
218 | VAR |
220 | frac: REAL; |
219 | value: REAL; |
221 | exp10: REAL; |
220 | exp10: REAL; |
Line 222... | Line 221... | ||
222 | i, n, d: INTEGER; |
221 | i, n, d: INTEGER; |
223 | minus: BOOLEAN; |
222 | minus: BOOLEAN; |
224 | 223 | ||
225 | BEGIN |
- | |
226 | error := 0; |
- | |
227 | value := 0.0; |
224 | BEGIN |
228 | frac := 0.0; |
225 | error := 0; |
Line 229... | Line 226... | ||
229 | exp10 := 1.0; |
226 | value := 0.0; |
230 | minus := FALSE; |
227 | minus := FALSE; |
231 | n := 0; |
228 | n := 0; |
- | 229 | ||
232 | 230 | exp10 := 0.0; |
|
233 | i := 0; |
231 | WHILE (error = 0) & (STRINGS.digit(s[i]) OR (s[i] = ".")) DO |
234 | WHILE (error = 0) & STRINGS.digit(s[i]) DO |
- | |
235 | IF opFloat2(value, 10.0, "*") & opFloat2(value, FLT(digit[ORD(s[i])]), "+") THEN |
- | |
236 | INC(i) |
- | |
237 | ELSE |
- | |
238 | error := 4 |
- | |
239 | END |
- | |
240 | END; |
- | |
241 | 232 | IF s[i] = "." THEN |
|
242 | INC(i); |
- | |
243 | 233 | exp10 := 1.0; |
|
244 | WHILE (error = 0) & STRINGS.digit(s[i]) DO |
234 | INC(i) |
245 | IF opFloat2(frac, 10.0, "*") & opFloat2(frac, FLT(digit[ORD(s[i])]), "+") THEN |
235 | ELSE |
246 | exp10 := exp10 * 10.0; |
236 | IF opFloat2(value, 10.0, "*") & opFloat2(value, FLT(digit[ORD(s[i])]), "+") & opFloat2(exp10, 10.0, "*") THEN |
- | 237 | INC(i) |
|
247 | INC(i) |
238 | ELSE |
Line 248... | Line 239... | ||
248 | ELSE |
239 | error := 4 |
249 | error := 4 |
240 | END |
250 | END |
241 | END |
Line 251... | Line 242... | ||
251 | END; |
242 | END; |
252 | 243 |