home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib24a.dsk / JULY.1985 / IRA.COMPARISON.bas next >
BASIC Source File  |  2023-02-26  |  4KB  |  127 lines

  1. 10  REM  **********************
  2. 20  REM  * IRA COMPARISON     *
  3. 30  REM  * BY ALAN STEIN      *
  4. 40  REM  * COPYRIGHT (C) 1985 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80 D$ =  CHR$(4)
  9. 90 BS$ =  CHR$(8)
  10. 100 CI$ =  CHR$(9)
  11. 110 R$ =  CHR$(13)
  12. 120 FS$ =  CHR$(21):LF$ =  CHR$(10):UP$ =  CHR$(11)
  13. 130 B1$ = " "
  14. 140 BL$ = "                                        "
  15. 150 DOT$ = "....."
  16. 160 CS =  -958: REM  CLEAR REST OF SCREEN LOCATION
  17. 170 VA = 3:VB = 5:VC = 6:VD = 4:VE = 8
  18. 180 VF = 10:VG = 11:VH = 13:VI = 14
  19. 190  REM  START
  20. 200  GOSUB 450: REM  SET UP SCREEN
  21. 210  GOSUB 560: REM  PICK UP NEW VALUES
  22. 220  GOSUB 1080: REM  CALCULATIONS
  23. 230  GOSUB 820: REM  MENU
  24. 240  IF A$ = "Q"  THEN 1260: REM  QUIT
  25. 250  IF A$ = "P"  THEN 890: REM  PRINT
  26. 260  GOTO 210
  27. 270  REM  GET VALUE AT XC,YC
  28. 280  HTAB XC: VTAB YC
  29. 290 T$ = "":EF = 0
  30. 300  GET A$: IF A$ = FS$  OR A$ = LF$  OR A$ = UP$  THEN 300
  31. 310  IF A$ = R$  THEN  RETURN 
  32. 320  GOSUB 1190: REM  CLEAR FIELD
  33. 330  IF  LEN(T$) > = 9  AND A$ < >BS$  THEN 400
  34. 340  PRINT A$;
  35. 350  IF A$ < >BS$  THEN 390
  36. 360  PRINT B1$;: PRINT BS$;
  37. 370  IF  LEN(T$) < = 1  THEN 270
  38. 380 T$ =  LEFT$(T$, LEN(T$) -1): GOTO 400
  39. 390 T$ = T$ +A$
  40. 400  GET A$: IF A$ = FS$  THEN 400
  41. 410  IF A$ < >R$  THEN 330
  42. 420 T =  VAL(T$)
  43. 430  IF T <XL  OR T >XH  THEN EF = 1: PRINT  CHR$(7): HTAB XC: VTAB YC:T = 0: PRINT DOT$
  44. 440  RETURN 
  45. 450  REM  SET UP SCREEN
  46. 460  HOME :XC = 30
  47. 470 Z$ = "IRA COMPARISON CHART": GOSUB 1230
  48. 480  VTAB VA: PRINT "YEARS"; TAB( XC)DOT$
  49. 490  PRINT "EST. FOR AVG. INFLATION (%)"; TAB( XC)DOT$
  50. 500  VTAB VB: PRINT "TAX BRACKET"; TAB( 15)"PRESENT (%)"; TAB( XC)DOT$
  51. 510  VTAB VC: PRINT  TAB( 15)"RETIREMENT (%)"; TAB( XC)DOT$
  52. 520  VTAB VE: PRINT  TAB( 20)"IRA"; TAB( XC)"ORDINARY"
  53. 530  VTAB VF: PRINT "RATE OF RETURN (%)"; TAB( 20)DOT$; TAB( XC)DOT$
  54. 540  VTAB VG: PRINT "AMT. OF INVESTMENT"; TAB( 20)DOT$; TAB( XC)DOT$
  55. 550  RETURN 
  56. 560  REM  PICK UP VALUES
  57. 570  VTAB VG +1: HTAB 1
  58. 580  CALL CS
  59. 590  VTAB VG +3
  60. 600 Z$ = "FOR EACH FIELD": GOSUB 1230
  61. 610 Z$ = "TYPE IN A VALUE": GOSUB 1230
  62. 620 Z$ = "OR": GOSUB 1230
  63. 630 Z$ = "PRESS <RETURN> TO RETAIN OLD VALUE": GOSUB 1230
  64. 640 XC = 30: VTAB 23: PRINT "** COPYRIGHT (C) 1985 MICROSPARC, INC **";
  65. 650 YC = VA:XL = 0:XH = 100: GOSUB 270: IF EF GOTO 650
  66. 660  IF T$ < >""  THEN NY = T
  67. 670 YC = VD: GOSUB 270: IF EF GOTO 670
  68. 680  IF T$ < >""  THEN INF = T/100
  69. 690 YC = VB: GOSUB 270: IF EF GOTO 690
  70. 700  IF T$ < >""  THEN TX = T/100
  71. 710 YC = VC: GOSUB 270: IF EF GOTO 710
  72. 720  IF T$ < >""  THEN RTB = T/100
  73. 730 XC = 20:YC = VF: GOSUB 270: IF EF GOTO 730
  74. 740  IF T$ < >""  THEN IRA = T/100
  75. 750 XC = 30:YC = VF: GOSUB 270: IF EF GOTO 750
  76. 760  IF T$ < >""  THEN ALT = T/100
  77. 770 XC = 20:YC = VG:XH = 10000: GOSUB 270: IF EF GOTO 770
  78. 780  IF T$ < >""  THEN IV = T
  79. 790 XC = 30:YC = VG: GOSUB 270: IF EF GOTO 790
  80. 800  IF T$ < >""  THEN AINV = T
  81. 810  RETURN 
  82. 820  REM  MENU
  83. 830  VTAB 23: HTAB 1: CALL CS
  84. 840  VTAB 23: HTAB 1
  85. 850 Z$ = "CHOOSE": GOSUB 1230
  86. 860  PRINT "P)RINT      N)EW CALCULATIONS   Q)UIT";
  87. 870  GET A$
  88. 880  RETURN 
  89. 890  REM  PRINT
  90. 900  VTAB 23: HTAB 1: CALL CS: PRINT 
  91. 910 XC = 30
  92. 920  PRINT D$"PR#1"
  93. 930  PRINT CI$"80N"
  94. 940 Z$ = "IRA COMPARISON CHART": GOSUB 1230
  95. 950  PRINT 
  96. 960  PRINT  LEFT$("YEARS" +BL$,XC);NY
  97. 970  PRINT  LEFT$("EST FOR AVE INFLATION" +BL$,30)INF *100
  98. 980  PRINT  LEFT$("TAX BRACKET" +BL$,15); LEFT$("PRESENT" +BL$,15);TX *100
  99. 990  PRINT  LEFT$(BL$,15); LEFT$("RETIREMENT" +BL$,15);RTB *100
  100. 1000  PRINT 
  101. 1010  PRINT  LEFT$(BL$,20); LEFT$("IRA" +BL$,10);"ORDINARY"
  102. 1020  PRINT 
  103. 1030  PRINT  LEFT$("RATE OF RETURN" +BL$,20); LEFT$( STR$(IRA *100) +BL$,10);ALT *100
  104. 1040  PRINT  LEFT$("INVESTMENT" +BL$,20); LEFT$( STR$(IV) +BL$,10);AINV
  105. 1050  GOSUB 1150: REM  PRINT CALCULATIONS
  106. 1060  PRINT D$"PR#0"
  107. 1070  GOTO 230: REM  MENU
  108. 1080  REM  CALCULATIONS
  109. 1090 DI =  INT(IV *(1 +IRA) ^NY *(1 -RTB) +.5)
  110. 1100 DA =  INT(AINV *(1 +ALT *(1 -TX)) ^NY +.5)
  111. 1110 PI =  INT(DI/(1 +INF) ^NY +.5)
  112. 1120 PA =  INT(DA/(1 +INF) ^NY +.5)
  113. 1130  VTAB VG +1: HTAB 1
  114. 1140  CALL CS
  115. 1150  PRINT 
  116. 1160  VTAB VH: PRINT  LEFT$("TOTAL AT MATURITY" +BL$,19); LEFT$( STR$(DI) +BL$,10); STR$(DA)
  117. 1170  VTAB VI: PRINT  LEFT$("TODAY'S DOLLARS" +BL$,19); LEFT$( STR$(PI) +BL$,10); STR$(PA)
  118. 1180  RETURN 
  119. 1190  REM  CLEAR OUT TEN SPACES
  120. 1200  FOR I = 1 TO 9: PRINT B1$;: NEXT I
  121. 1210  FOR I = 1 TO 9: PRINT BS$;: NEXT I
  122. 1220  RETURN 
  123. 1230  REM  CENTER DISPLAY OF Z$
  124. 1240 TB = 20 - INT( LEN(Z$)/2): IF TB <1  THEN TB = 1
  125. 1250  PRINT  TAB( TB)Z$: RETURN 
  126. 1260  REM  QUIT
  127. 1270  HOME : END