home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib24a.dsk / MAY.1985 / UNIT.CONVERT.bas < prev   
BASIC Source File  |  2023-02-26  |  5KB  |  85 lines

  1. 10  REM  **********************
  2. 20  REM  *    UNIT.CONVERT    *
  3. 30  REM  *   BY LEE REYNOLDS  *
  4. 40  REM  * COPYRIGHT (C) 1985 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  REM  UNIT CONVERSION PROGRAM
  9. 90  REM  LENGTH UNITS CONVERSION FACTORS
  10. 100  REM  IN TERMS OF AN INCH
  11. 110  DATA  .001,.3937,1,12,36,39.37,72,198,7920,39370,63360,72913.39,190080
  12. 120  REM  AREA UNITS CONVERSION FACTORS
  13. 130  REM  IN TERMS OF A SQ. IN.
  14. 140  DATA  .1550003,1,144,1296,1550.003,39204,6272640,15500031,4014489600
  15. 150  REM  WEIGHT UNITS CONVERSION FACTORS
  16. 160  REM  IN TERMS OF GRAINS
  17. 170  DATA  .01543236,1,3.086,15.43236,24,27.34375,437.5,480,5760,7000,15432.36,11520000
  18. 180  REM  LIQUID CAPACITY CONVERSION FACTORS IN TERMS OF DRAMS
  19. 190  DATA  1,1.333333,4,8,64,128,256,270.51218,1024,7660.052
  20. 200  REM  DRY CAPACITY CONVERSION FACTORS IN TERMS OF PINTS
  21. 210  DATA  .0297616,1,1.816166,2,16,64
  22. 220  DIM LNGTH(13),AREA(9),WEIGHT(12)
  23. 230  DIM LIQCAP(10),DRYCAP(6)
  24. 240 : FOR I = 1 TO 13: READ LNGTH(I): NEXT 
  25. 250  FOR I = 1 TO 9: READ AREA(I): NEXT 
  26. 260  FOR I = 1 TO 12: READ WEIGHT(I): NEXT 
  27. 270  FOR I = 1 TO 10: READ LIQCAP(I): NEXT 
  28. 280  FOR I = 1 TO 6: READ DRYCAP(I): NEXT 
  29. 290  HOME : HTAB 7: VTAB 3: PRINT "UNIVERSAL METRIC CONVERSION": HTAB 12: PRINT "BY LEE REYNOLDS": PRINT 
  30. 300  PRINT "** COPYRIGHT 1985 BY MICROSPARC,INC. **"
  31. 310  VTAB 10: PRINT "ENTER:": PRINT  TAB( 7);"0 TO END PROGRAM": PRINT  TAB( 7);"1 FOR UNITS OF LENGTH"
  32. 320  PRINT  TAB( 7);"2 FOR UNITS OF AREA": PRINT  TAB( 7);"3 FOR UNITS OF WEIGHT"
  33. 330  PRINT  TAB( 7);"4 FOR UNITS OF LIQUID CAPACITY": PRINT  TAB( 7);"5 FOR UNITS OF DRY CAPACITY"
  34. 340  INPUT OPT$:OPT =  VAL(OPT$): IF OPT <0  OR OPT >5  THEN 310
  35. 350  IF OPT = 0  THEN 850
  36. 360  HOME : ON OPT GOSUB 700,740,770,800,830
  37. 370  HOME : GOTO 310
  38. 380  REM  SUBROUTINE TO GET UNIT FROM
  39. 390  VTAB 19: CALL  -868
  40. 400  INPUT "UNIT FROM INDEX? ";X$:X =  VAL(X$)
  41. 410  GOSUB 530: IF X <0  THEN 390
  42. 420 U1 = X: RETURN 
  43. 430  REM  SUBROUTINE TO GET UNIT TO
  44. 440  VTAB 20: CALL  -868
  45. 450  INPUT "UNIT TO INDEX? ";X$:X =  VAL(X$)
  46. 460  GOSUB 530: IF X <0  THEN 440
  47. 470 U2 = X: RETURN 
  48. 480  REM  SUBROUTINE TO GET VALUE TO CONVERT
  49. 490  VTAB 21: CALL  -868
  50. 500  INPUT "VALUE TO CONVERT? (0=NEW UNITS) ";X$:X =  VAL(X$):MAX = 99999: GOSUB 530: IF X <0  THEN 490
  51. 510 NUM = X: RETURN 
  52. 520  REM  SUBROUTINE TO TEST DATA INPUT
  53. 530  VTAB 23: CALL  -868: IF X < = 0  THEN  RETURN 
  54. 540  IF X >MAX  THEN X =  -1: REM  SIGNAL ERROR
  55. 550  RETURN 
  56. 560  REM  SUBROUTINE TO PRINT ERR MSG
  57. 570  VTAB 23: PRINT "INVALID DATA!":X =  -1: RETURN 
  58. 580  REM  SUBROUTINE TO CONVERT VALUE,ETC
  59. 590  ON OPT GOTO 600,610,620,630,640
  60. 600 CUNV = NUM *LNGTH(U1)/LNGTH(U2): GOTO 650
  61. 610 CUNV = NUM *AREA(U1)/AREA(U2): GOTO 650
  62. 620 CUNV = NUM *WEIGHT(U1)/WEIGHT(U2): GOTO 650
  63. 630 CUNV = NUM *LIQCAP(U1)/LIQCAP(U2): GOTO 650
  64. 640 CUNV = NUM *DRYCAP(U1)/DRYCAP(U2)
  65. 650  VTAB 22: CALL  -868: PRINT "CONVERTED VALUE: ";CUNV: RETURN 
  66. 660  GOSUB 390: IF U1 = 0  THEN  RETURN 
  67. 670  GOSUB 440: IF U2 = 0  THEN  RETURN 
  68. 680  GOSUB 490: IF NUM = 0  THEN  RETURN 
  69. 690  GOSUB 590: GOTO 680
  70. 700  PRINT "LENGTH UNITS CONVERSION": PRINT " 0 -- EXIT FROM LENGTH UNITS": PRINT " 1 -- MILS": PRINT " 2 -- CENTIMETERS": PRINT " 3 -- INCHES"
  71. 710  PRINT " 4 -- FEET": PRINT " 5 -- YARDS": PRINT " 6 -- METERS": PRINT " 7 -- FATHOMS": PRINT " 8 -- RODS"
  72. 720  PRINT " 9 -- FURLONGS": PRINT "10 -- KILOMETERS": PRINT "11 -- STATUTE MILES": PRINT "12 -- NAUTICAL MILES"
  73. 730  PRINT "13 -- LEAGUES":MAX = 13: GOSUB 660: RETURN 
  74. 740  PRINT "AREA UNITS CONVERSION": PRINT " 0 -- EXIT FROM AREA UNITS": PRINT " 1 -- SQ. CENTIMETERS": PRINT " 2 -- SQ. INCHES"
  75. 750  PRINT " 3 -- SQ. FEET": PRINT " 4 -- SQ. YARDS": PRINT " 5 -- SQ. METERS": PRINT " 6 -- SQ. RODS": PRINT " 7 -- ACRES"
  76. 760  PRINT " 8 -- HECTARES": PRINT " 9 -- SQ. MILES":MAX = 9: GOSUB 660: RETURN 
  77. 770  PRINT "WEIGHT UNITS CONVERSION": PRINT " 0 -- EXIT FROM WEIGHT UNITS": PRINT " 1 -- MILLIGRAMS": PRINT " 2 -- GRAINS"
  78. 780  PRINT " 3 -- CARATS": PRINT " 4 -- GRAMS": PRINT " 5 -- PENNYWEIGHTS": PRINT " 6 -- DRAMS AVDP.": PRINT " 7 -- OUNCES AVDP."
  79. 790  PRINT " 8 -- OUNCES TROY": PRINT " 9 -- POUNDS TROY": PRINT "10 -- POUNDS AVDP.": PRINT "11 -- KILOGRAMS": PRINT "12 -- TONS":MAX = 12: GOSUB 660: RETURN 
  80. 800  PRINT "LIQUID CAPACITY CONVERSION": PRINT " 0 -- EXIT FROM LIQUID CAPACITY": PRINT " 1 -- DRAMS": PRINT " 2 -- TEASPOONS": PRINT " 3 -- TABLESPOONS"
  81. 810  PRINT " 4 -- OUNCES": PRINT " 5 -- CUPS": PRINT " 6 -- PINTS": PRINT " 7 -- QUARTS": PRINT " 8 -- LITERS"
  82. 820  PRINT " 9 -- GALLONS": PRINT "10 -- CUBIC FEET":MAX = 10: GOSUB 660: RETURN 
  83. 830  PRINT "DRY CAPACITY CONVERSION": PRINT " 0 -- EXIT FROM DRY CAPACITY": PRINT " 1 -- CUBIC INCHES": PRINT " 2 -- PINTS": PRINT " 3 -- LITERS"
  84. 840  PRINT " 4 -- QUARTS": PRINT " 5 -- PECKS": PRINT " 6 -- BUSHELS":MAX = 6: GOSUB 660: RETURN 
  85. 850  END