10 REM PRINT CHR$(26); 20 READ ND,NP,NU 30 DIM PR$(20),PR(20),PR%(20),UN$(100),UN(100),UN%(100,10) 40 DIM DE$(10),DI%(10) 100 FOR X=0 TO NP:READ PR$(X),PR(X),PR%(X) 105 NEXT X 110 FOR X=O TO ND:READ DE$(X):NEXT X 120 FOR X=0 TO NU:READ UN$(X),UN(X) 125 FOR Y=0 TO ND:READ UN%(X,Y):NEXT Y,X 130 PRINT CHR$(26); 195 PRINT"UNIT CONVERSION - COPYRIGHT 1984 DAVID KAHN" 197 PRINT 205 PRINT"TYPE HELP FOR INSTRUCTIONS" 207 PRINT"NOTE ONLY UPPERCASE LETTERS SHOULD BE USED IN THIS PROGRAM" 210 FOR X=0 TO ND:DI%(X)=0:NEXT X 217 PRINT:I$=" ":INPUT "INPUT";I$:IF I$ ="HELP" THEN 4000 220 IF LEFT$(I$,1)="?" THEN I$=MID$(I$,2) ELSE 300 230 IO=1:GOSUB 1000 240 FL=0:FOR X=0 TO ND:IF DI%(X)>1 THEN PRINT DE$(X)"^"MID$(STR$(DI%(X)),2)" ";ELSE IF DI%(X)=1 THEN PRINT DE$(X)" ";ELSE IF DI%(X)< 0 THEN FL=1 245 NEXT X 250 IF FL=0 THEN PRINT:GOTO 210 ELSE PRINT"PER";:FOR X=0 TO ND:IF DI%(X)<-1 THEN PRINT DE$(X)"^"MID$(STR$(-DI%(X)),2)" ";ELSE IF DI%(X) =-1 THEN PRINT DE$(X)" "; 255 NEXT X:PRINT:GOTO 210 300 N=VAL(I$):IF N=0 THEN PRINT"YOU MUST GIVE AN INPUT NUMBER":GOTO 210 ELSE X=1 310 IF MID$(I$,X,1)=" " OR X+LEN(I$) THEN 320 ELSE X=X+1:GOTO 310 320 X=X+1:I$=MID$(I$,X):IO=1:GOSUB 1000 330 I$="":INPUT "CONVERT TO";I$:IO=-1:GOSUB 1000 340 FL=0:FOR X=0 TO ND:IF DI%(X)<>0 THEN PRINT DE$(X)" DIMENSION INCOMPATABILITY":FL=1 350 NEXT X:IF FL=1 THEN 210 360 PRINT"ANSWER = ";:LO=INT(LOG(N)/LOG(10))+1 370 IF LO<=5 AND LO>=0 THEN PRINT USING "#"+STRING$(LO,"#")+"."+STRING$(5-LO,"#");N:GOTO 210 375 IF LO=-1 THEN PRINT USING"#.######";N:GOTO 210 380 IF LO =-2 THEN PRINT USING"#.######";N:GOTO 210 390 PRINT USING "##.####^^^^";N:GOTO 210 1000 DN=1 1010 IF LEFT$(I$,1)=" " THEN I$=MID$(I$,2):GOTO 1010 1020 IF I$="" THEN RETURN 1030 FOR X=1 TO LEN(I$):IF MID$(I$,X,1)=" " THEN 1040 ELSE NEXT X 1040 T$=LEFT$(I$,X-1):I$=MID$(I$,X):T=1:P=1 1045 IF T$="PER" THEN DN=-1:GOTO 1010 1050 FOR X=1 TO LEN(T$):IF MID$(T$,X,1)="^" THEN 1060 ELSE NEXT X 1060 IF X>LEN(T$) THEN 1100 1070 P=VAL(MID$(T$,X+1)) 1080 IF P=0 THEN PRINT"POWER ERROR IN TERM ";T$"'":GOTO 210 1090 T$=LEFT$(T$,X-1) 1100 IF RIGHT$(T$,4)="CHES" THEN T$=LEFT$(T$,LEN(T$)-2) 1102 IF RIGHT$(T$,3)="IES" THEN T$=LEFT$(T$,LEN(T$)-3)+"Y" 1104 IF RIGHT$(T$,1) ="S" AND RIGHT$(T$,2)<>"SS" THEN T$=LEFT$(T$,LEN(T$)-1) 1110 FOR X=0 TO NU:IF T$=UN$(X) THEN 1120 ELSE NEXT X:GOTO 1140 1120 N=N/((UN(X)/T)^(P*DN*IO)) 1130 FOR Y=0 TO ND:DI%(Y)=DI%(Y)+P*DN*IO*UN%(X,Y):NEXT Y:GOTO 1010 1140 FOR X=0 TO NP:IF LEFT$(T$,PR%(X))=PR$(X) THEN 1150 ELSE NEXT X:GOTO 1170 1150 T$=MID$(T$,PR%(X)+1):T=T*PR(X):GOTO 1110 1170 PRINT"UNDEFINDED UNIT OR PREFIX IN '"T$"'":GOTO 210 4000 PRINT CHR$(26);"THIS PROGRAM CONVERTS NUMBERS BETWEEN UNIT SYSTEMS SUCH AS" 4005 PRINT"METRIC AND ENGLISH. IT WILL ALSO EXPLAIN THE DIMENSIONALTY" 4010 PRINT"OF A UNIT OR COMBINATION IF DESIRED. THIS PROGRAM UNDERSTANDS" 4015 PRINT"A LARGE NUMBER OF UNITS AND PRFIXES THAT ARE LISTED ON THE" 4020 PRINT"SECOND PAGE OF THIS HELP DOCUMMENTATION. THE THIRD PAGE INCLUDES" 4025 PRINT"SEVERAL EXAMPLES." 4030 PRINT"IF THE INPUT GIVEN IS '? ', THE DEMINSIONALITY OF" 4035 PRINT" WILL BE PRINTED. IF ' ' IS GIVEN" 4040 PRINT"YOU WILL BE ASKED 'CONVERT TO ?' AND THE RESULT OF THE CONVERSION" 4045 PRINT"WILL BE PRINTED." 4050 PRINT" THE INPUTS CONSIST OF AN OPTIONAL SEQUENCE OF UNIT" 4055 PRINT"SPECIFIERS, FOLLOWED BY AN OPTIONAL 'PER', FOLLOWED BY MORE" 4060 PRINT"OPTIONAL UNIT SPECIFIERS. SPACES MUST SEPERATE UNIT SPECS BUT" 4065 PRINT"MAY NOT APPEAR INSIDE THEM. A UNIT SPEC IS AN OPTIONAL SET OF" 4070 PRINT"PREFIXES, A UNIT, AND AN OPTIONAL POWER TERM." 4075 INPUT "PRESS ENTER TO CONTINUE";I$ 4080 PRINT"VALID INPUTS ARE:" 4110 FOR X=0 TO NU:O$=UN$(X):GOSUB 4900:NEXT X 4120 PRINT:PRINT "VALID PREFIXES ARE:" 4130 FOR X=0 TO NP:O$=PR$(X):GOSUB 4900:NEXT X 4199 PRINT:INPUT "PRESS ENTER TO CONTUNUE;";I$ 4200 PRINT"A TYPICAL UNIT SPEC IS 'CENTIMETER ^2'. NOTE THAT MORE THAN" 4205 PRINT"ONE PREFIX IS PERMITTED IN A UNIT SPEC. TYPICAL " 4210 PRINT"SEQUENCES ARE 'MILES PER HOUR' AND KILOGRAMS PER FOOT ^2'" 4215 PRINT"EXAMPLES;(INPUTS AT LEFT,RESPONSE INDENTED)" 4220 PRINT"?MILES PER HOUR" 4225 PRINT"DISTANCE PER TIME" 4230 PRINT"?WATTS" 4235 PRINT"DISTANCE^2 MASS PER TIME^3" 4240 PRINT"8000 BTU PER HOUR" 4245 PRINT"CONVERT TO WATTS" 4250 PRINT"ANSWER=2343.9" 4255 PRINT"1 ATMOSPHERE" 4260 PRINT"CONVERT TO: POUNFORCE PER FOOT^2" 4265 PRINT"ANSWER =2116.2" 4300 GOTO 210 4900 IF POS(0)+LEN(O$)>63 THEN PRINT:PRINT O$;ELSE PRINT O$; 4910 IF POS(0) >0 THEN PRINT " "; 4920 RETURN 5000 DATA 5,13,84 5010 DATA TERA,1E12,4 5020 DATA GIGA,1E9,4 5030 DATA MEGA,1E6,4 5040 DATA KILO,1E3,4 5050 DATA HECTO,1E2,5 5060 DATA DECA,10,4 5070 DATA DECI,.1,4 5080 DATA CENTI,1E-2,5 5090 DATA MILI,1E-3,5 5100 DATA MICRO,1E-6,5 5110 DATA NANO,1E-9,4 5120 DATA PICO,1E-12,4 5130 DATA FEMTO,1E-15,5 5140 DATA ATTO,1E-18,4 6010 DATA DISTANCE,MASS,TIME,ANGLE,SOLIDANGLE,QUANTITY 7100 DATA METER,1.0000,1,0,0,0,0,0 7110 DATA INCH,39.370078,1,0,0,0,0,0 7120 DATA FOOT,3.2808398,1,0,0,0,0,0 7130 DATA FEET,3.2808398,1,0,0,0,0,0 7140 DATA YARD,1.0936132,1,0,0,0,0,0 7150 DATA MILE, 6.2137119E-4,1,0,0,0,0,0 7160 DATA MICRON,1E6,1,0,0,0,0,0 7170 DATA ANGSTROM,1E10,1,0,0,0,0,0 7180 DATA MIL,3.9370078E4,1,0,0,0,0,0 7190 DATA LIGHTYEAR,1.0562667E-16,1,0,0,0,0,0 7200 DATA PARSEC,3.2454E-17,1,0,0,0,0,0 7210 DATA FURLONG,4.9709695E-3,1,0,0,0,0,0 7220 DATA FATHOM,.54680664,1,0,0,0,0,0 7230 DATA ROD,.19883878,1,0,0,0,0,0 7240 DATA LEAGUE,1.775E-4,1,0,0,0,0,0 7250 DATA ACRE,2.4710536,2,0,0,0,0,0 7260 DATA BARN,1E28,2,0,0,0,0,0 7270 DATA CIRCULARMILL,1.974E9,2,0,0,0,0,0 7280 DATA LITER,1000,3,0,0,0,0,0 7290 DATA GALLON,264.17205,3,0,0,0,0,0 7300 DATA QUART,1056.6882,3,0,0,0,0,0 7310 DATA PINT,2113.3764,3,0,0,0,0,0 7320 DATA CUP,4226.7528,3,0,0,0,0,0 7330 DATA FLUIDOUNCE,3.3814022E4,3,0,0,0,0,0 7340 DATA TABLESPOON,6.7628045E4,3,0,0,0,0,0 7350 DATA TEASPOON,2.0288413E5,3,0,0,0,0,0 7360 DATA BARREL,6.2898107,3,0,0,0,0,0 7370 DATA HOGSHEAD,4.1932071,3,0,0,0,0,0 7380 DATA GRAM,1000,0,1,0,0,0,0 7390 DATA SLUG,6.852E-2,0,1,0,0,0,0 7400 DATA AMU,6.024E26,0,1,0,0,0,0 7410 DATA TON,1.1023113E-3,0,1,0,0,0,0 7420 DATA POUND,2.2046226,0,1,0,0,0,0 7430 DATA OUNCE,35.273961,0,1,0,0,0,0 7435 DATA GRAIN,15432.357,0,1,0,0,0,0 7440 DATA TROYOUNCE,32.150745,0,1,0,0,0,0 7450 DATA SECOND,1,0,0,1,0,0,0 7460 DATA MINUTE,1.6666667E-2,0,0,1,0,0,0 7470 DATA HOUR,2.7777778E-4,0,0,1,0,0,0 7480 DATA DAY,1.1574074E-5,0,0,1,0,0,0 7490 DATA WEEK,1.6543391E-6,0,0,1,0,0,0 7500 DATA MONTH,3.8580246E-7,0,0,1,0,0,0 7510 DATA FORTNIGHT,8.2671957E-7,0,0,1,0,0,0 7520 DATA DECADE,3.1688E-9,0,0,1,0,0,0 7530 DATA CENTURY,3.1688E-10,0,0,1,0,0,0 7540 DATA MILLENIUM,3.1688E-11,0,0,1,0,0,0 7550 DATA YEAR,3.1688E-8,0,0,1,0,0,0 7560 DATA EON,3.1688E-17,0,0,1,0,0,0 7570 DATA RADIAN,1,0,0,0,1,0,0 7580 DATA DEGREE,57.295779,0,0,0,1,0,0 7590 DATA ARCMINUTE,3437.7467#,0,0,0,1,0,0 7600 DATA ARCSECOND,2060264.8,0,0,0,1,0,0 7610 DATA GRAD,63.661977,0,0,0,1,0,0 7620 DATA REVOLUTION,1591549,0,0,0,1,0,0 7630 DATA STERADIAN,1,0,0,0,0,1,0 7640 DATA SPHERE,7.95774E-2,0,0,0,0,1,0 7650 DATA COULOMB,1,0,0,0,0,0,1 7660 DATA MOLE,1.0364E-5,0,0,0,0,0,1 7670 DATA UNIT,6.24E18,0,0,0,0,0,1 7680 DATA FARADAY,1.0364E-5,0,0,0,0,0,1 7690 DATA KNOT,1.944,1,0,-1,0,0,0 7700 DATA NEWTON,1,1,1,-2,0,0,0 7710 DATA DYNE,1E5,1,1,-2,0,0,0 7720 DATA POUNDFORCE,.2248,1,1,-2,0,0,0 7730 DATA POUNDAL,7.233,1,1,-2,0,0,0 7740 DATA GRAMFORCE,102,1,1,-2,0,0,0 7750 DATA ATMOSPHERE,9.869E-6,-1,1,-2,0,0,0 7760 DATA BAR,1E-5,-1,1,-2,0,0,0 7770 DATA BTU,9.481E-4,2,1,-2,0,0,0 7780 DATA ERG,1E7,2,1,-2,0,0,0 7790 DATA JOULE,1,2,1,-2,0,0,0 7800 DATA CALORIE,.2389,2,1,-2,0,0,0 7810 DATA ELECTRONVOLT,6.24E18,2,1,-2,0,0,0 7820 DATA WATT,1,2,1,-3,0,0,0 7830 DATA HORSPOWER,1.341E-3,2,1,-3,0,0,0 7840 DATA AMPRE,1,0,0,-1,0,0,1 7850 DATA VOLT,1,2,1,-2,0,0,-1 7860 DATA OHM,1,2,1,-1,0,0,-2 7870 DATA GAUSS,1E4,0,1,-1,0,0,-1 7880 DATA GAMMA,1E9,0,1,-1,0,0,-1 7890 DATA TELSA,1,0,1,-1,0,0,-1 7900 DATA FARAD,1,-2,-1,2,0,0,2 7910 DATA HENRY,1,2,1,0,0,0,-2 7920 DATA WEBER,1,2,1,-1,0,0,-1 7930 DATA HERTZ,.1591549,0,0,-1,1,0,0 FARAD,1,-2,-1,2,0,0,2 7910 DATA HENRY,1,2,1,