home *** CD-ROM | disk | FTP | other *** search
- 100 REM TYPED BY CONNIE FOSTER ,CORRECTED BY C.FOSTER ,PROG BY O.E.DIAL
- 110 REM ALL REM STATEMENTS CAN BE CHANGED TO ALLOW USE OF TWO TERMINALS
- 120 REM SEE ARTICLE IN PERSONAL COMPUTING MAY/JUNE 77
- 130 Q=27:V$="###.#":W$="$$#####,":U$="###"
- 140 DIMD(18),E$(Q),V(Q),F(Q)
- 150 PRINTTAB(19)"RECURSIVE BUDGETING MODEL":PRINT:PRINTTAB(28)"* * *"
- 160 DATASALARY/WAGES,OTHER INCOME,FED INC TAX,STATE & LOCAL TAX
- 170 DATASOCIAL SECURITY,UNEMPLOYMENT INS,HEALTH INS
- 180 DATALIFE INS,CONTRIBUTIONS,OTHER DEDUCTIONS
- 190 DATARENT/MORTGAGE,LIFE INS,HEALTH INS,HOUSE INS
- 200 DATAAUTO INS,CAR PAYMENTS,LOAN PAYMENTS,TRASH REMOVAL
- 210 DATAOTHER FIXED EXP
- 220 DATAFOOD/BEVERAGES,CLOTHING,DRY CLEANING,BARBER/BEAUTY
- 230 DATAHOME MAINT,HOME HEAT'G FUEL,WATER,ELECTRICITY, TELEPHONE
- 240 DATAGAS/OIL,AUTO MAINT,FARES/TOLLS/PARKING,DENTIST
- 250 DATAPHYSICIAN,DRUGS/SUNDRIES,SCHOOL EXPENSE,FAMILY ALLOWANCE
- 260 DATACLUBS/LODGES,THEATER/SPORTS,RESTAURANTS
- 270 DATAOTHER ENT'MENT,MAG'S/BOOKS/PAPERS,SITTERS,CHILD CARE
- 280 DATAVACATION SAVING,OTHER SAVINGS,CONTRIBUTIONS,OTHER EXPENSES
- 290 PRINT:PRINT"SELECT YOUR BUDGETING PERIOD BY NUMBER. LATER ON IT WILL"
- 300 PRINT"BE EXTENDED TO ONE YEAR.":PRINT
- 310 PRINTTAB(3)"1-WEEKLY"TAB(15)"2-BIWEEKLY"TAB(30)"3-SEMIMONTHLY";
- 320 PRINTTAB(45)"4-MONTHLY":PRINT
- 330 INPUTP:IFP>4THENPRINT"TRY AGAIN":GOTO290
- 340 IFP=1THENP=52ELSEIFP=2THENP=26ELSEIFP=3THENP=24ELSEIFP=4THENP=12
- 350 PRINT:PRINT"ALRIGHT,FIRST LET'S LOOK AT INCOME FOR THE PERIOD.":PRINT
- 360 READA$:PRINTA$;" $";:INPUTD(0):READA$:PRINTA$;" $";:INPUTD(1)
- 370 TI=D(0)+D(1):PRINT
- 380 PRINT:PRINT"OK,NOW LET'S LOOK AT PAYCHECK DEDUCTIONS.":PRINT
- 390 FORJ=2TO9:READA$:PRINTA$;:INPUT" $";D(J):TD=TD+D(J):NEXTJ:PRINT
- 400 PRINT"OK,NOW LET'S LOOK AT FIXED EXPENSES.":PRINT
- 410 FORJ=10TO18:READA$:PRINTA$;:INPUT" $";D(J):TF=TF+D(J):NEXTJ
- 420 DF=TD+TF:SI=TI-DF:S=64
- 430 PRINT:PRINT"OK,AT THIS TIME OUR TABLE LOOKS LIKE THIS:":PRINT
- 440 REM
- 450 GOSUB1900:PRINT:PRINTTAB(19);
- 460 PRINT"RECURSIVE BUDGETING MODEL":PRINT:PRINTTAB(27)"* * *":PRINT
- 470 GOSUB1900
- 480 PRINT:PRINTTAB(20)"SPENDABLE INCOME SUMMARY":PRINT
- 490 GOSUB1890:PRINTTAB(3)"ACCOUNT"TAB(42)"PERIOD"TAB(57)"ANNUAL"
- 500 GOSUB1890:PRINT"TOTAL INCOME" TAB(40);:PRINTUSINGW$;TI;:PRINTTAB(55)
- 510 PRINTUSINGW$;TI*P:PRINT:PRINTTAB(3)"PAYCHECK DEDUCTIONS"TAB(25);
- 520 PRINTUSINGW$;TD*(-1):PRINT
- 530 PRINTTAB(3)"FIXED EXPENSES"TAB(25);:PRINTUSINGW$;TF*(-1);
- 540 PRINTTAB(40);:PRINTUSINGW$;DF*(-1);:PRINTTAB(55);
- 550 PRINTUSINGW$;DF*(-1)*P
- 560 PRINTTAB(41)"-------"TAB(55)"--------":PRINT"SPENDABLE INCOME";
- 570 PRINTTAB(40);:PRINTUSINGW$;SI;:PRINTTAB(55);:PRINTUSINGW$;SI*P
- 580 PRINTTAB(41)"======="TAB(55)"========":PRINT:
- 590 GOSUB1900:PRINT: PRINT
- 600 REM
- 610 GOSUB1910:RO=0
- 620 PRINT:PRINT "OK,NOW FOR THE FIRST ROUND OF VARIABLE EXPENSE. DON'T"
- 630 PRINT"PINCH YOURSELF IN YOUR ESTIMATES (WITHIN REASON). LET THE"
- 640 PRINT"COMPUTER HELP YOU REFINE YOUR BUDGET LATER ON.":PRINT
- 650 FORJ=0TOQ:READE$(J) :PRINTE$(J);:INPUT" $";V(J):VT=VT+V(J):NEXTJ
- 660 RESTORE:PRINT:PRINT
- 670 PRINT"YOUR BUDGET FOR THE FIRST ROUND TOTALLED $"VT". THIS"
- 680 PRINT"COMPARES TO SPENDABLE INCOME OF $"SI". WE HAVE"
- 690 PRINT"PRORATED THE DIFFERENCE, $"SI-VT",OVER ALL VARIABLE EXPENSE"
- 700 PRINT"ACCOUNTS.":PRINT
- 710 GOSUB1910:FORJ=0TOQ:V(J)=INT(V(J)/VT*SI):NEXTJ:VT=SI:PRINT
- 720 PRINT"NOW WE BEGIN THE BUDGET REFINEMENT PHASE. MAKE AS MANY"
- 730 PRINT"PASSES AS YOU LIKE. AS YOU REVIEW EACH ACCOUNT,DECIDE"
- 740 PRINT"WHETHER TO FREEZE IT OR TO LEAVE IT FOR ANOTHER PASS.":PRINT
- 750 PRINT"HINT: DON'T BE IN A HURRY TO FREEZE AN ACCOUNT.":PRINT
- 760 PRINT"YOUR TASK IS FINISHED WHEN ALL ACCOUNTS ARE FROZEN.":PRINT
- 770 GOSUB1910
- 780 FORJ=0TOQ:PRINT:IFV(J)=0THEN980
- 790 PRINTE$(J);" $";V(J):INPUT"CHANGE ('Y' OR 'N')";A$
- 800 IFA$="N"THEN840ELSEIFA$="Y"THEN820ELSEIFA$<>"Y"THEN790
- 810 GOTO790
- 820 INPUT"REVISED AMOUNT $";A:IFA<V(J)THEN840
- 830 GOSUB1930
- 840 INPUT"FREEZE ('Y' OR 'N')";B$:PRINT
- 850 IFA$="Y"ANDB$="Y"THEN900
- 860 IFA$="Y"ANDB$="N"THEN940
- 870 IFA$="N"ANDB$="N"THEN980
- 880 VT=VT-V(J):FT=FT+V(J):SWAPF(J),V(J):V(J)=0:PRINT
- 890 PRINT"OK,THE ACCOUNT HAS BEEN FROZEN AT $"F(J)".":GOTO980
- 900 VT=VT-A:FT=FT+A:SWAPA,F(J):V(J)=0
- 910 FORK=OTOQ:V(K)=INT(V(K)*(SI-FT)/VT):NEXTK:VT=SI-FT
- 920 PRINT"OK,THE ACCOUNT HAS BEEN FROZEN AT $"F(J)",AND THE DIFFERENCE"
- 930 PRINT"PRORATED OVER REMAINING ACCOUNTS.":PRINT:GOTO980
- 940 VT=VT-V(J)+A:V(J)=A
- 950 FORK=0TOQ:V(K)=INT(V(K)*(SI-FT)/VT):NEXTK:VT=SI-FT
- 960 PRINT"OK,THE VALUE HAS BEEN CHANGED TO $"A", AND THE DIFFERENCE"
- 970 PRINT"PRORATED OVER REMAINING ACCOUNTS.":PRINT
- 980 NEXTJ:PRINT:R=0:FORJ=0TOQ:IFV(J)=0THENR=R+1:NEXTJ
- 990 IFR<=QTHEN1010
- 1000 FORJ=OTOQ:F(J)=INT(F(J)/FT*SI):VT=0:FT=SI:GOTO1380
- 1010 PRINT"NOW LET'S RECAP VARIABLE EXPENSES BEFORE GOING ON TO THE"
- 1020 PRINT"NEXT ROUND.":PRINT:RO=RO+1:V1=0:F1=0
- 1030 FORJ=0TOQ:V(J)=INT(V(J)/VT*(SI-FT)):NEXTJ:VT=SI-FT
- 1040 REM
- 1050 PRINTTAB(7)"INTERIM SUMMARY OF VARIABLE EXPENSES";
- 1060 PRINT": NO."RO
- 1070 GOSUB1890:PRINTTAB(3)"ACCOUNTS"TAB(28)"NUMBER"TAB(37)"PERCENT";
- 1080 PRINTTAB(48)"AMOUNT"TAB(56)"PERCENT"
- 1090 GOSUB1890:FORJ=0TOQ:IFV(J)+F(J)=0THEN1110
- 1100 IFV(J)THENV1=V1+1ELSEF1=F1+1
- 1110 NEXTJ
- 1120 PRINT"VARIABLE EXPENSES"TAB(29);:PRINTUSINGU$;V1;:PRINTTAB(39);
- 1130 PRINTUSINGV$;V1/(V1+F1)*100;:PRINTTAB(46);:PRINTUSINGW$;VT;
- 1140 PRINTTAB(58);:PRINTUSINGV$;VT/TI*100:PRINT
- 1150 PRINT"FROZEN EXPENSES"TAB(29);:PRINTUSINGU$;F1;:PRINTTAB(39);
- 1160 PRINTUSINGV$;F1/(V1+F1)*100;:PRINTTAB(46);
- 1170 PRINTUSINGW$;FT;:PRINTTAB(58);:PRINTUSINGV$;FT/TI*100
- 1180 PRINTTAB(28)"-------"TAB(48)"--------"
- 1190 PRINTTAB(3)"TOTALS"TAB(29);:PRINTUSINGU$;F1+V1;:PRINTTAB(46);
- 1200 PRINTUSINGW$;VT+FT:PRINTTAB(28)"======="TAB(48)"========":PRINT
- 1210 GOSUB1900:PRINT:PRINT
- 1220 GOSUB1230:GOTO1270
- 1230 PRINTTAB(8)"INTERIM STATUS OF VARIABLE EXPENSES NO."RO
- 1240 GOSUB1890:PRINTTAB(3)"ACCOUNT"TAB(30)"VARIABLE"TAB(43)"FROZEN";
- 1250 PRINTTAB(54)"PERCENT"
- 1260 GOSUB1890:PRINT
- 1270 FORJ=0TOQ:IFV(J)+F(J)=0THEN1330ELSEPRINTE$(J);:R2=R2+1
- 1280 IFF(J)THEN1300ELSEPRINTTAB(29):PRINTUSINGW$;V(J);:PRINTTAB(55);
- 1290 PRINTUSINGV$;V(J)/TI*100:GOTO1320
- 1300 PRINTTAB(40);:PRINTUSINGW$;F(J);:PRINTTAB(55);
- 1310 PRINTUSINGV$;F(J)/TI*100
- 1320 IFINT(R2/5)=R2/5THENPRINT
- 1330 NEXTJ:PRINT:R2=0
- 1340 GOSUB1900:PRINT
- 1350 REM
- 1360 PRINT:PRINT "NOW WE MAKE ANOTHER PASS THROUGH VARIABLE EXPENSES.":PRINT
- 1370 GOTO770
- 1380 PRINT"PLEASE INPUT THE REQUESTED INFORMATION BEFORE WE PROVIDE A"
- 1390 PRINT"FINAL DETAIL OF YOUR BUDGET.":PRINT
- 1400 PRINTTAB(18)"* USE NO COMMAS NOR COLONS *":PRINT
- 1410 INPUT"NAME";A$:INPUT"BUDGET YEAR";A
- 1420 B=LEN(A$):B=16-B/2
- 1430 REM
- 1440 GOSUB1920
- 1450 GOSUB1900:PRINT
- 1460 PRINTTAB(B)"* THE "A$" FAMILY BUDGET FOR"A"*":PRINT
- 1470 GOSUB1900:PRINT
- 1480 PRINTTAB(6)"ACCOUNT"TAB(20)""TAB(26)"INCOME"TAB(38)":";
- 1490 PRINTTAB(44)"EXPENSE"TAB(56)":PERCENT"
- 1500 PRINTTAB(20)":-----------------:-----------------: TOTAL"
- 1510 PRINTTAB(20)": PERIOD : ANNUAL : PERIOD : ANNUAL : INCOME"
- 1520 PRINT"--------------------:--------:--------:--------:--------:------"
- 1530 X$=":$$#####,:$$#####,: : : ###.#"
- 1540 Y$=": : :$$#####,:$$#####,: ###.#"
- 1550 GOTO1570
- 1560 PRINT": : : : :":RETURN
- 1570 PRINT"INCOME"TAB(20);:PRINTUSINGX$;TI;TI*P;TI/TI*100
- 1580 PRINT"------"TAB(20);
- 1590 GOSUB1560
- 1600 READA$:PRINTA$TAB(20);:PRINTUSINGX$;D(0);D(0)*P;D(0)/TI*100
- 1610 READA$:PRINTA$TAB(20);:PRINTUSINGX$;D(1);D(1)*P;D(1)/TI*100
- 1620 PRINTTAB(20);
- 1630 GOSUB1560
- 1640 PRINT"PAYCHECK DEDUCT'S"TAB(20);
- 1650 PRINTUSINGY$;TD;TD*P;TD/TI*100
- 1660 PRINT"-----------------"TAB(20);
- 1670 GOSUB1560
- 1680 FORJ=2TO9:READA$:IFD(J)=0THEN1700ELSEPRINTA$TAB(20);
- 1690 PRINTUSINGY$;D(J);D(J)*P;D(J)/TI*100
- 1700 NEXTJ:PRINTTAB(20);
- 1710 GOSUB1560
- 1720 PRINT"FIXED EXPENSES"TAB(20);
- 1730 PRINTUSINGY$;TF;TF*P;TF/TI*100
- 1740 PRINT"--------------"TAB(20);
- 1750 GOSUB1560
- 1760 FORJ=10TO18:READA$:IFD(J)=0THEN1780ELSEPRINTA$TAB(20);
- 1770 PRINTUSINGY$;D(J);D(J)*P;D(J)/TI*100
- 1780 NEXTJ:PRINTTAB(20);
- 1790 GOSUB1560
- 1800 PRINT"VARIABLE EXPENSE"TAB(20);
- 1810 PRINTUSINGY$;FT;FT*P;FT/TI*100
- 1820 PRINT"----------------"TAB(20);
- 1830 GOSUB1560
- 1840 FORJ=0TOQ:IFF(J)=0THEN1860ELSEPRINTE$(J)TAB(20);
- 1850 PRINTUSINGY$;F(J);F(J)*P;F(J)/TI*100
- 1860 NEXTJ:PRINT
- 1870 GOSUB1900:PRINT
- 1880 GOSUB1900:PRINT:GOTO1980
- 1890 FORL=1TOS:PRINT"-";:NEXTL:PRINT:RETURN
- 1900 FORL=1TOS:PRINT"=";:NEXTL:PRINT:RETURN
- 1910 PRINT"PRESS 'Y' TO CONTINUE":PRINT:INPUTA$:PRINT:RETURN
- 1920 FORL=1TO10:PRINT;:NEXTL:RETURN
- 1930 IFA<=V(J)THEN1970
- 1940 IFA<=VTTHEN1970
- 1950 PRINT"* YOU HAVE EXCEEDED YOUR BALANCE OF SPENDABLE INCOME BY $"A-SI;
- 1960 PRINT" *":INPUT"REVISED AMOUNT $";A:PRINT
- 1970 RETURN
- 1980 RESTORE:READA$:READA$:PRINT:PRINT:S=95
- 1990 PRINTTAB(21)"* EXPENSE BAR CHART *"
- 2000 PRINTTAB(20)"PERCENT OF TATAL INCOME":PRINT
- 2010 GOSUB1890:PRINT
- 2020 GOSUB2140:PRINT
- 2030 FORJ=2TO18:READA$:IFD(J)=0THEN2060
- 2040 A=INT(D(J)/TI*300):PRINTA$;
- 2050 GOSUB2170
- 2060 NEXTJ
- 2070 FORJ=0TOQ:IFF(J)=0THEN2100
- 2080 A=INT(F(J)/TI*300):PRINTE$(J);
- 2090 GOSUB2170
- 2100 NEXTJ:PRINT
- 2110 GOSUB2140:PRINT:PRINT
- 2120 GOSUB1900:PRINT:PRINT:STOP
- 2130 REM
- 2140 PRINTTAB(20)" - - - - 5 - - - - 10 - - - - 15 - - - ";
- 2150 PRINT"- 20 - - - - 25":RETURN
- 2160 RETURN
- 2170 IFA<1THENPRINTTAB(20)"]":GOTO2200
- 2180 IFA<2THENPRINTTAB(20)"]]":GOTO2200
- 2190 PRINTTAB(20);:FORK=1TOA:PRINT"]";:NEXTK:PRINT
- 2200 RETURN
- 2210 REM
- 2220 REM
- 2230 STOP
- 2240 REM
- 2250 REM
-