Compucolor.org – Virtual Media

Listing of file='BUDGET.BAS;01' on disk='vmedia/chip_110-sector.ccvf'

100 REM  **********PERSONAL BUDGET PROGRAM**********
110 REM  **********D.A. VAN PUTTE,1-716-889-4994
120 CLEAR 1000
130 PLOT 12,27,4:PRINT "LOAD BLABEL.DSP":PLOT 27,27
140 FOR  I= 1 TO  1000:NEXT I:FO= 0:FB= 0:FE= 0
150 DIM MO$(13),DESCRIP$(28),AMT(24),PB$(24),CAT(28),ME(12,32),SE(12),ET(12),SIT(12),TB(12),TB$(12)
160 PLOT 6,2,12,14,3,20,2:PRINT "----------MENU----------"
170 F= 0
180 PLOT 3,15,6:PRINT "1.  CREATE BUDGET AND EXPENSE FILES"
190 PLOT 3,15,8:PRINT "2.  ESTABLISH OR CHANGE BUDGET"
200 PLOT 3,15,10:PRINT "3.  INPUT MONTHLY INCOME & EXPENSES
210 PLOT 3,15,12:PRINT "4.  PRINT PERFORMANCE SUMMARY"
220 PLOT 3,15,14:PRINT "5.  PLOT TREND LINES"
230 PLOT 3,15,16:PRINT "6.  END OF SESSION, STORE DATA"
240 PLOT 3,15,20:INPUT "SELECTION? ";S
250 IF  S= 1 OR  S= 6 OR  FO= 1 THEN 290
260 PLOT 3,15,24:INPUT "NAME OF BUDGET DATA FILE ";B$
270 PLOT 3,15,28:INPUT "NAME OF EXPENSE DATA FILE ";E$
280 FILE "T",160:FILE "R",2,E$,1:FILE "R",1,B$,1:FO= 1:B= 1
290 ON SGOSUB 1510,310,540,800,1280,1500
300 S= 0:GOTO 160
310 Z= 68:GOSUB 1260:PLOT 12:PRINT TAB( 10)"MODULE NO. 2 - ESTABLISH OR CHANGE BUDGET"
320 Z= 192:GOSUB 1260:INPUT "DO YOU WISH TO INITIALIZE BUDGET FROM A PREVIOUS FILE (Y OR N) ";Z$
330 IF  Z$< > "Y"THEN 370
340 Z= 328:GOSUB 1260:PRINT "ENTER NAME OF PREVIOUS BUDGET FILE....."
350 Z= 367:GOSUB 1260:INPUT "n      m";C$
360 FILE "T",340:FILE "R",3,C$,1:B= 3:FB= 0:GOSUB 450:GOSUB 510:B= 1
370 PLOT 12:PRINT TAB( 15)"YEARLY BUDGET AMOUNTS BY CATEGORY"
380 GOSUB 450:GOSUB 470:GOSUB 500
390 X= 0:Z= 860:GOSUB 1260:INPUT "ENTER CATEGORY # TO BE CHANGED   ";X
400 IF X= 0THEN GOSUB 510:RETURN
410 PRINT "REENTER CATEGORY & BUDGET AMOUNT W/ (CR) AFTER EACH ENTRY"
420 Z= (X- 1)* 32+ 64:GOSUB 1260
430 PRINT ""CAT(X)"                          ";
440 Z= Z+ 5:GOSUB 1260:INPUT "";DESCRIP$(X):Z= Z+ 14:GOSUB 1260:INPUT "";AMT(X):GOSUB 500:GOTO 390
450 IF  FB= 1THEN RETURN
460 FB= 1:SUM= 0:FOR X= 1TO 24:GET  B,X;D$[12],AMT(X):CAT(X)= X:DESCRIP$(X)= D$:SUM= SUM+ AMT(X):NEXT X:RETURN
470 FOR X= 1TO 24:Z= (X- 1)* 32+ 64:GOSUB 1260
480 PRINT  "";CAT(X):Z= Z+ 5:GOSUB 1260:PRINT "";DESCRIP$(X):Z= Z+ 13:GOSUB 1260:H= AMT(X):T= 10:PRINT "";:GOSUB 1640
490 NEXT X:RETURN
500 SUM= 0:FOR  X= 1TO 24:SUM= SUM+ AMT(X):NEXT X:Z= 832:GOSUB 1260:PRINT "TOTAL BUDGETED EXP.=";SUM;"- ";:RETURN
510 PLOT 12:PRINT TAB( 15)"BUDGET FILE UDDATE IN PROGRESS..."
520 FOR X= 1TO 24:D$= DESCRIP$(X):PUT 1,X;D$[12],AMT(X)
530 NEXT X:RETURN
540 PLOT 12:Z= 134:GOSUB 1260:PRINT "MODULE NO. 3 - INPUT EXPENSES, CHECKING BALANCES,"
550 Z= Z+ 128:GOSUB 1260:PRINT "SAVINGS & CASH BALANCES, AND ALL INCOME SOURCES.."
560 GOSUB 570:GOTO 600
570 IF  FE= 1 THEN RETURN
580 FE= 1:FOR Y= 1TO 12:SE(Y)= 0:FOR X= 1TO 32:RC= 1+ (X- 1)* 4:GET 2,Y,RC;ME(Y,X):NEXT X:NEXT Y:FOR I= 1TO MO:FOR J= 1TO 24
590 SE(I)= SE(I)+ ME(I,J):NEXT J:SIT(I)= SIT(I- 1)+ ME(I,27)+ ME(I,28):ET(I)= ET(I- 1)+ SE(I):NEXT I:GOSUB 450:RETURN
600 Z= 518:GOSUB 1260:PRINT "1. MONTHLY REPORT UPDATE"
610 Z= 646:GOSUB 1260:PRINT "2. RETURN TO MAIN PROGRAM":Z= 612:GOSUB 1260:PRINT "SELECTION ";:INPUT S:IF  S< 0OR S> 2THEN 610
620 ON  S GOTO 640,630
630 GOSUB 680:GOTO 160
640 Z= 774:GOSUB 1260:INPUT "ENTER MONTH FOR REPORT ";MO
650 PLOT 12:GOTO 700
660 Z= 1:GOSUB 1260:PRINT "ENTER MONTHLY EXPENSES BY CATEGORY"
670 FOR X= 1TO 24:ME(MO,X)= INT (AMT(X)/ 12):NEXT X:GOSUB 750:RETURN
680 PLOT 12:PRINT TAB( 10)"EXPENSE/INCOME FILE UPDATE IN PROGRESS..."
690 FOR Y= 1TO 12:FOR X= 1TO 32:RC= 1+ (X- 1)* 4:PUT  2,Y,RC;ME(Y,X):NEXT X:NEXT Y:RETURN
700 GOSUB 750:PRINT :INPUT "DOES MONTH REQUIRE INITIALIZING (Y OR N) ";A$:IF A$= "Y"THEN PLOT 12:GOSUB 660
710 Z= 1984:GOSUB 1260:X= 0:INPUT "CATEGORY NUMBER TO BE CHANGED?             ";X
720 IF  X< = 0 OR  X> 28THEN PLOT  12,14:GOTO 600
730 Z= (X+ 1)* 32+ 20:GOSUB 1260:INPUT "        ";ME(MO,X)
740 ME(MO,X)= INT (ME(MO,X)+ .5):GOTO 710
750 CAT(25)= 25:CAT(26)= 26:DESCRIP$(25)= "CHECKING BAL":DESCRIP$(26)= "SAVINGS/CASH"
760 CAT(27)= 27:CAT(28)= 28:DESCRIP$(27)= "INCOME/SAL  ":DESCRIP$(28)= "INCOME/OTHER"
770 SM= 0:PLOT 12,15:FOR X= 1TO 28:Z= (X+ 1)* 32:GOSUB 1260:PRINT ""CAT(X);:Z= Z+ 5:GOSUB 1260:PRINT ""DESCRIP$(X);
780 Z= Z+ 13:GOSUB 1260:H= ME(MO,X):T= 10:PRINT "";:GOSUB 1640
790 SM= SM+ ME(MO,X):NEXT X:RETURN
800 PLOT 14,12:Z= 134:GOSUB 1260:PRINT "MODULE NO. 4 - BUDGET SUMMARY REPORTS......"
810 Z= 258:GOSUB 1260:PRINT "1. PRINT TOTAL EXPENSES/TOTAL BUDGET TO DATE BY CATEGORY"
820 Z= 386:GOSUB 1260:PRINT "2. PRINT MONTHLY BUDGET & EXPENSES FOR 6 MONTH PERIOD"
830 Z= 514:GOSUB 1260:PRINT "3. SEND REPORT TO PRINTER"
835 Z= 642:GOSUB 1260:PRINT "4. RETURN TO PROGRAM MENU"
840 Z= 776:GOSUB 1260:INPUT "NUMBER OF OPTION DESIRED? ";N1:IF  N1< 1 OR  N1> 4 THEN 840
850 MO$(1)= "JAN":MO$(2)= "FEB":MO$(3)= "MAR":MO$(4)= "APR":MO$(5)= "MAY":MO$(6)= "JUN":MO$(7)= "JUL"
860 MO$(8)= "AUG":MO$(9)= "SEP":MO$(10)= "OCT":MO$(11)= "NOV":MO$(12)= "DEC":GOSUB 570
870 ON  N1 GOTO 880,1060,1252,160
880 Z= 904:GOSUB 1260:INPUT "THRU WHAT MONTH IS SUMMARY DESIRED? ";MO
885 IF  P1= 1THEN  P1= 0:PLOT 27,13
890 PLOT 12,15:PRINT  TAB( 15)"BUDGET SUMMARY THRU ";MO$(MO);" 1980"
900 PRINT :PRINT "BUDGET ITEM ";" TOT. EXP. ";" TOT. BUD. ";" % TOT. BUD. ";" % BUD.-DATE"
910 BT= 0:GT= 0:FOR  X= 1TO 24:SR= 0:FOR  Y= 1TO MO:SR= SR+ ME(Y,X):NEXT Y:GT= GT+ SR:BT= BT+ AMT(X):SR$= STR$ (SR):AM$= STR$ (AMT(X))
920 IF  AMT(X)= 0 THEN PC$= "0":PT$= "0":GOTO 940
930 PC$= STR$ (INT (SR/ AMT(X)* 100)):PT$= STR$ (INT (100* SR* 12/ (AMT(X)* MO)))
940 PRINT ""DESCRIP$(X);TAB( 13);"";SPC( 7- LEN (SR$));SR$;TAB( 24);"";SPC( 7- LEN (AM$));AM$;TAB( 35);
950 PRINT  "";SPC( 7- LEN (PC$));PC$;TAB( 48);"";SPC( 7- LEN (PT$));PT$
960 NEXT X:GT$= STR$ (GT):BT$= STR$ (BT)
970 IF  BT= 0THEN PC$= "0":PT$= "0":GOTO 990
980 PC$= STR$ (INT (100* GT/ BT)):PT$= STR$ (INT (100* GT* 12/ (BT+ MO)))
990 PRINT "TOTALS";TAB( 13);SPC( 7- LEN (GT$));GT$;TAB( 24);SPC( 7- LEN (BT$));BT$;
1000 PRINT  TAB( 35);SPC( 7- LEN (PC$));PC$;TAB( 48);SPC( 7- LEN (PT$));PT$
1010 PRINT "COMBINED TOTAL OF CHECKING & SAVINGS ACCNT. BALANCES: $";ME(MO,25)+ ME(MO,26)- ME(12,32);""
1020 CI= 0:FOR  Y= 1 TO  MO:CI= CI+ ME(Y,27)+ ME(Y,28):NEXT Y
1030 V= CI- GT
1040 PRINT "COMBINED TOTAL OF INCOME SOURCES: $";CI;"";" VARIANCE: $";V;""
1050 GOTO 1250
1060 Z= 904:GOSUB 1260:INPUT "ENTER STARTING MO. FOR 6 MO. REPORT ";MO:IF MO> 7THEN MO= 7
1065 IF  P1= 1 THEN  P1= 0:PLOT 27,13
1070 PLOT 12,15:PRINT TAB( 13)"EXPENSES BY MONTH FROM ";MO$(MO);" TO ";MO$(MO+ 5)
1080 PRINT :PRINT "BUDGET ITEM ";TAB( 14);"BUDGET ";TAB( 24);MO$(MO);TAB( 31);MO$(MO+ 1);TAB( 38);MO$(MO+ 2);TAB( 45);MO$(MO+ 3);
1090 PRINT TAB( 52);MO$(MO+ 4);TAB( 59);MO$(MO+ 5)
1100 TB= O:FOR I= 0TO 5:TM(I)= 0:NEXT I
1110 Z= 192:PRINT :FOR X= 1TO 24:T= 20:AM$= STR$ (INT (AMT(X)/ 12)):PRINT ""DESCRIP$(X);TAB( 13);"";SPC( 7- LEN (AM$));AM$;
1120 M0$= STR$ (ME(MO,X)):M1$= STR$ (ME(MO+ 1,X)):M2$= STR$ (ME(MO+ 2,X)):M3$= STR$ (ME(MO+ 3,X)):M4$= STR$ (ME(MO+ 4,X))
1130 M5$= STR$ (ME(MO+ 5,X))
1140 PRINT  TAB( 20);"";SPC( 7- LEN (M0$));M0$;TAB( 27);SPC( 7- LEN (M1$));M1$;TAB( 34);SPC( 7- LEN (M2$));M2$;
1150 PRINT  TAB( 41);SPC( 7- LEN (M3$));M3$;TAB( 48);SPC( 7- LEN (M4$));M4$;TAB( 55);SPC( 7- LEN (M5$));M5$
1160 FOR  Y= 0 TO  5:TM(Y)= TM(Y)+ ME(MO+ Y,X):NEXT Y:TB= TB+ INT (AMT(X)/ 12):NEXT X
1170 TB$= STR$ (TB):FOR  I= 0 TO  5:TM$(I)= STR$ (TM(I)):NEXT I
1180 PRINT  "TOTALS";TAB( 13);SPC( 7- LEN (TB$));TB$;TAB( 20);SPC( 7- LEN (TM$(0)));TM$(0);TAB( 27);SPC( 7- LEN (TM$(1)));TM$(1);
1190 PRINT  TAB( 34);SPC( 7- LEN (TM$(2)));TM$(2);TAB( 41);SPC( 7- LEN (TM$(3)));TM$(3);TAB( 48);SPC( 7- LEN (TM$(4)));TM$(4);
1200 PRINT TAB( 55);SPC( 7- LEN (TM$(5)));TM$(5)
1210 I0$= STR$ (ME(MO,27)+ ME(MO,28)):I1$= STR$ (ME(MO+ 1,27)+ ME(MO+ 1,28)):I2$= STR$ (ME(MO+ 2,27)+ ME(MO+ 2,28))
1220 I3$= STR$ (ME(MO+ 3,27)+ ME(MO+ 3,28)):I4$= STR$ (ME(MO+ 4,27)+ ME(MO+ 4,28)):I5$= STR$ (ME(MO+ 5,27)+ ME(MO+ 5,28))
1230 PRINT "INCOME";TAB( 20);SPC( 7- LEN (I0$));I0$;TAB( 27);SPC( 7- LEN (I1$));I1$;TAB( 34);SPC( 7- LEN (I2$));I2$;
1240 PRINT  TAB( 41);SPC( 7- LEN (I3$));I3$;TAB( 48);SPC( 7- LEN (I4$));I4$;TAB( 55);SPC( 7- LEN (I5$));I5$
1250 POKE 33265,0:INPUT "HIT RETURN TO CONTINUE";ZZ:GOTO 800
1252 Z= 904:GOSUB 1260:INPUT "ENTER BAUD RATE (1-7)? ";BR:PLOT 27,18,BR:P1= 1:GOTO 800
1260 N= Z/ 64:N1= INT (N):X1= 64* (N- N1):Y1= 2* N1:PLOT 3,X1,Y1:RETURN
1270 N= Z/ 64:N1= INT (N):X1= 64* (N- N1):Y1= 1* N1:PLOT 3,X1,Y1:RETURN
1280 PLOT 12:Z= 142:GOSUB 1260:PRINT "MODULE NO. 5 - BUDGET/EXPENSE TREND PLOT"
1290 Z= 270:GOSUB 1260:PRINT "ENTER MONTH DESIRED FOR TREND PLOT ";:INPUT  MO:GOSUB 570
1300 FOR Y= 1TO 12:SE(Y)= 0:NEXT Y:FOR I= 1TO MO:FOR J= 1TO 24
1310 SE(I)= SE(I)+ ME(I,J):NEXT J:SIT(I)= SIT(I- 1)+ ME(I,27)+ ME(I,28):ET(I)= ET(I- 1)+ SE(I):NEXT I
1320 X0= 15:DX= 8:Y0= 6:DY= 4:PLOT 12
1330 B(0)= 0:B(1)= 30000:B(2)= 60000:B(3)= 75000:B(4)= 120000:B(5)= 150000:B(6)= 300000:B(7)= 600000
1340 D(1)= 1000:D(2)= 2000:D(3)= 2500:D(4)= 4000:D(5)= 5000:D(6)= 10000:D(7)= 20000:Z1= 1923:DZ= 54
1350 IZ(1)= 320:IZ(2)= 320:IZ(3)= 256:IZ(4)= 320:IZ(5)= 320:IZ(6)= 320:IZ(7)= 320
1360 L1(1)= 5:L1(2)= 10:L1(3)= 10:L1(4)= 20:L1(5)= 25:L1(6)= 50:L1(7)= 100
1370 FOR  I= 1 TO  7:IF  SUM> B(I- 1)AND SUM< = B(I)THEN GOTO 1390
1380 GOTO 1400
1390 DV= D(I):IZ= IZ(I):L1= L1(I):PLOT 27,4:PRINT  "LOAD TRDPLT.DSP":PLOT 27,27:GOTO 1410
1400 NEXT :PRINT "NO PLOT CAN BE MADE-YOUR BUDGET IS EITHER = 0 OR >600000":PRINT "HIT RETURN FOR MENU ";:INPUT  ZZ:GOTO 160
1410 PLOT 15:PRINT "";:L= 0:FOR  Z= Z1 TO  0 STEP  - IZ:GOSUB 1270:PRINT L;:L= L+ L1:NEXT :Z= Z1/ 2:GOSUB 1270:PRINT "$"
1420 Z= Z- 128:GOSUB 1270:PRINT "K"
1430 PLOT 15:PRINT "";:L= 0:FOR  Z= Z1+ DZ TO  DZ STEP  - IZ:GOSUB 1270:PRINT L;:L= L+ L1:NEXT :Z= Z1/ 2+ 61:GOSUB 1270:PRINT "$"
1440 Z= Z- 128:GOSUB 1270:PRINT "K"
1450 PLOT  6,1,2,X0,Y0,242,X0+ 96,INT (Y0+ DY* SUM/ DV),255
1460 FOR J= 0TO MO:X= (X0+ J* 8):PLOT 6,7,2,X,INT (Y0+ ET(J)* DY/ DV),255:PLOT 6,2,2,X,INT (Y0+ SIT(J)* DY/ DV),255:NEXT J
1470 YTR= ET(MO)+ (12- MO)* (ET(MO)- ET(MO- 1))
1480 PLOT 6,4,2,(X0+ 12* DX- 1),INT (Y0+ YTR* DY/ DV),255
1490 PLOT  3,60,60,6,0:INPUT ZZ:GOTO 160
1500 PLOT  6,2,12:FILE "C",1,2:END
1510 PLOT 12,3,8,2:PRINT "MODULE NO. 1 - CREATE BUDGET AND EXPENSE FILES"
1520 Z= 264:GOSUB 1260:PRINT "ENTER NAME OF BUDGET FILE....."
1530 Z= 388:GOSUB 1260:PRINT "SUGGEST  BDGTXX ,  WHERE XX=CURRENT YEAR"
1540 Z= 294:GOSUB 1260:INPUT "n      m";B$
1550 Z= 520:GOSUB 1260:PRINT "ENTER NAME OF EXPENSE FILE...."
1560 Z= 644:GOSUB 1260:PRINT "SUGGEST  EXPSXX ,  WHERE XX=CURRENT YEAR"
1570 Z= 550:GOSUB 1260:INPUT "n      m";E$
1580 FILE "N",B$,24,16,8:FILE "N",E$,12,128,4
1590 FILE "T",1520:FILE "R",1,B$,1:FILE "R",2,E$,1
1600 A$= "NOT DETER'MD":B= 0:FOR  I= 1TO 24:PUT  1,I;A$[12],B:NEXT I
1610 FOR  I= 1TO 12:FOR  J= 1TO 32:Z= 1+ (J- 1)* 4:ME(I,J)= 0:PUT  2,I,Z;ME(I,J):NEXT J:NEXT I
1620 Z= 768:GOSUB 1260:INPUT "COMBINED TOTAL OF SAVINGS & CHECKING ACC'NTS AT YR. END ";CS
1630 PUT 2,12,125;CS:FILE "C",1,2:GOTO 160
1640 N$= STR$ (INT (H)):PRINT  SPC( T- LEN (N$)) N$:RETURN