Code: Select all
10 GO SUB 9500
110 PRINT valid
120 STOP
9500 REMark
9502 valid=0
9505 INPUT x$
9506 IF x$='' THEN RETurn
9507 l=LEN(x$)
9510 FOR x=1 TO l
9515 IF x=1 AND x$(x)='-' THEN NEXT x
9520 IF x$(x)<'.' OR x$(x)>'9' THEN RETurn
9530 END FOR x
9540 valid=1
9550 RETurn
Now at first glance, there would not appear to be too much wrong with this code, but it is not comparing values properly in 9520 and it may be linked to how Minerva handles the value .
Any ideas?
I did re-write the code to a working routine, in much improved form:
Code: Select all
10 INPUT x$
20 valid=validate(x$)
110 PRINT valid
120 STOP
9500 DEFine FuNction validate(num$)
9501 LOCal x, valid
9506 IF num$='' THEN RETurn 0
9507 l=LEN(num$)
9510 FOR x=1 TO l
9515 IF x=1 AND num$(x)='-' THEN NEXT x
9520 IF CODE(x$(x))<CODE('.') OR CODE(x$(x))>CODE('9') THEN EXIT x
9525 NEXT x
9527 RETurn 1
9530 END FOR x
9545 RETurn 0
9550 END DEFine