8000  REM *******************************
8010  REM            FILIN
8020  REM *******************************
8030  DIM A$[72]
8040  PRINT "DO YOU WANT INSTRUCTIONS";
8050  INPUT A$
8060  IF A$#"YES" THEN 8150
8070  PRINT "FILIN IS USED TO LOAD A FILE FROM A KEYBOARD. BEFORE THE PROGRAM"
8080  PRINT "IS RUN A FILES STATEMENT MUST BE INCLUDED WHICH NAMES THE FILE TO BE"
8090  PRINT "LOADED. THIS FILE MUST HAVE BEEN PREVIOUSLY OPENED."
8100  PRINT "WHEN THE PROGRAM ASKS FOR INPUT, YOU MAY INPUT UP TO 72 CHARACTERS"
8110  PRINT "PER LINE. THE INPUT SHOULD CONSIST OF NUMBERS OR CHARACTER STRINGS"
8120  PRINT "SEPARATED BY COMMAS. ANY INPUT WHICH CONFORMS TO ONE OF THE STANDARD"
8130  PRINT "NUMERIC FORMATS IS CONSIDERED TO BE NUMERIC."
8140  PRINT "TO TERMINATE THE PROGRAM, TYPE IN 'END' FOLLOWING A ? PROMPT"
8150  S=1
8160  INPUT A$
8170  IF S>LEN(A$) THEN 8150
8171  IF A$="END" THEN 9571
8180  L=0
8190  GOSUB 8230
8200  IF F THEN 8170
8210  GOSUB 9490
8220  GOTO 8170
8230  REM ************************************************************
8240  REM           SUBROUTINE TO INTERPRET A NUMBER.
8250  REM ************************************************************
8260  REM
8270  N=D=E=P=0
8280  FOR I=S TO LEN(A$)
8290  J=9
8300  IF A$[I,I]="0" THEN 8520
8310  IF A$[I,I]="1" THEN 8530
8320  IF A$[I,I]="2" THEN 8540
8330  IF A$[I,I]="3" THEN 8550
8340  IF A$[I,I]="4" THEN 8560
8350  IF A$[I,I]="5" THEN 8570
8360  IF A$[I,I]="6" THEN 8580
8370  IF A$[I,I]="7" THEN 8590
8380  IF A$[I,I]="8" THEN 8600
8390  IF A$[I,I]="9" THEN 8610
8400  IF A$[I,I]="." THEN 8640
8410  IF A$[I,I]=" " THEN 8700
8420  IF A$[I,I]="E" THEN 8800
8430  REM
8440  REM IF IT GETS THIS FAR IT IS NOT A DIGIT.
8450  REM
8460  IF A$[I,I]#"," THEN 8490
8470  GOSUB 9400
8480  RETURN 
8490  L=I-S
8500  F=0
8510  RETURN 
8520  J=J-1
8530  J=J-1
8540  J=J-1
8550  J=J-1
8560  J=J-1
8570  J=J-1
8580  J=J-1
8590  J=J-1
8600  J=J-1
8610  N=N*10+J
8620  P=P*.1
8630  GOTO 9330
8640  REM
8650  REM PROCESS A DECIMAL POINT
8660  REM
8670  IF D THEN 8490
8680  P=D=1
8690  GOTO 9330
8700  REM
8710  REM PROCESS A BLANK
8720  REM
8730  FOR K=I+1 TO LEN(A$)
8740  IF A$[K,K]#" " THEN 8780
8750  NEXT K
8760  I=K
8770  GOTO 9330
8780  I=K-1
8790  GOTO 9330
8800  REM 
8810  REM PROCESS EXPONENTIATION OPERATOR.
8820  REM
8830  IF E THEN 8490
8835  IF N=0 THEN 8490
8840  E=1
8850  S1=0
8860  FOR K=I+1 TO LEN(A$)
8870  IF A$[K,K]="+" THEN 8910
8880  IF A$[K,K]="-" THEN 8940
8890  IF A$[K,K]#" " THEN 8990
8900  GOTO 8970
8910  IF S1 THEN 8490
8920  S1=1
8930  GOTO 8970
8940  IF S1 THEN 8490
8950  S1=1
8960  E=-1
8970  NEXT K
8980  K=K+1
8990  REM
9000  REM NOW GET THE EXPONENT.
9010  REM
9020  E1=0
9030  FOR K=K TO LEN(A$)
9040  J=9
9050  IF A$[K,K]="0" THEN 9190
9060  IF A$[K,K]="1" THEN 9200
9070  IF A$[K,K]="2" THEN 9210
9080  IF A$[K,K]="3" THEN 9220
9090  IF A$[K,K]="4" THEN 9230
9100  IF A$[K,K]="5" THEN 9240
9110  IF A$[K,K]="6" THEN 9250
9120  IF A$[K,K]="7" THEN 9260
9130  IF A$[K,K]="8" THEN 9270
9140  IF A$[K,K]="9" THEN 9280
9150  I=K
9160  IF A$[K,K]#"," THEN 8490
9170  N=N*(10^E1)
9180  GOTO 8460
9190  J=J-1
9200  J=J-1
9210  J=J-1
9220  J=J-1
9230  J=J-1
9240  J=J-1
9250  J=J-1
9260  J=J-1
9270  J=J-1
9280  E1=E1*10+E*J
9290  NEXT K
9300  I=K+1
9310  N=N*(10^E1)
9320  GOTO 9340
9330  NEXT I
9340  REM
9350  REM END OF NUMERIC INPUT. (NO DATA FOLLOWS)
9360  REM
9370  GOSUB 9400
9380  I=I+1
9390  RETURN 
9400  REM
9410  REM SUBROUTINE TO OUTPUT A NUMBER.
9420  REM
9430  IF P=0 THEN 9450
9440  N=N*P
9450  F=1
9460  S=I+1
9470  PRINT #1;N
9480  RETURN 
9490  REM -STRING DOES NOT REPRESENT A NUMBER. THIS ROUTINE
9500  REM -PUTS THE STRING ON THE FILE.
9510  FOR I=S+L TO LEN(A$)
9520  IF A$[I,I]="," THEN 9550
9530  NEXT I
9540  I=I+1
9550  PRINT #1;A$[S,I-1]
9560  LET S=I+1
9570  RETURN 
9571  STOP 
9580  END 
