Listing of file='BUDGET.BAS;01' on disk='vmedia/home_budget_3-sector.ccvf'
0 REM ****************** BUDGET *************************** 1 REM 50 PLOT 27,11:CLEAR 4000 52 DD= PEEK (65535):DSK$= MID$ (STR$ (DD- 1),2)+ ":" 54 GOTO 350 56 REM 58 REM ****************** YES/NO *************************** 60 POKE 33278,0 62 IF PEEK (33278)= 0GOTO 62 64 IF PEEK (33278)= 89THEN PRINT "ES":Q$= "Y":RETURN 66 IF PEEK (33278)= 78THEN PRINT "O":Q$= "N":RETURN 68 PLOT 26,32,26:GOTO 60 70 REM 72 REM ************** INKEY (SINGLE KEY INPUT) ************* 74 POKE 33278,0 76 Y= PEEK (33278) 78 IF Y= 0GOTO 76 80 Y$= CHR$ (Y):RETURN 82 REM 112 REM ************* FORMAT MONEY ************************** 113 REM MO ->->-> MO$ 114 RH$= STR$ ((1000* (MO* SGN (MO)- INT (MO* SGN (MO)))+ 1005)/ 10) 115 IF VAL (RH$)> = 200THEN MO= (MO* SGN (MO)+ 1)* SGN (MO) 116 LH$= STR$ (INT (MO* SGN (MO))* SGN (MO)):IF VAL (LH$)= 0AND SGN (MO)= - 1THEN LH$= "-0" 117 LH$= "$"+ LH$ 118 IF LEN (LH$)> = 6THEN 120 119 LH$= " "+ LH$:GOTO 118 120 RH$= MID$ (RH$,3,2):MO$= LH$+ "."+ RH$:RETURN 210 REM 330 REM ************* MAIN PROGRAM ************************* 340 REM 350 NLNGTH$= " " 400 IF DD= 1THEN PLOT 12,14,3,10,15:INPUT "LOAD DATA DISK AND HIT <RETURN> ";A 420 PLOT 12,14,3,28,1:PRINT "BUDGET":PLOT 15 430 PLOT 15,3,10,14:PRINT "52 = WEEKLY" 440 PLOT 3,10,15:PRINT "26 = FORTNIGHTLY" 450 PLOT 3,10,16:PRINT "12 = MONTHLY" 460 PLOT 3,10,17:PRINT " 4 = QUARTERLY ETC." 470 PLOT 3,10,25,11:INPUT "SELECT PERIOD....";PERIOD 480 IF PERIOD< 1OR PERIOD> 366THEN PLOT 7:GOTO 470 486 PLOT 3,10,30,11:INPUT "ENTER DATE (D.M.YY)....";TD$:GOSUB 21000:IF ERR= 1THEN PLOT 7:GOTO 486 490 FILE "R",1,DSK$+ "INCTIT",1 500 FILE "R",2,DSK$+ "INCOME",1 510 F1LAG= 0:FTAL= 0:ATAL= 0:BAL= 0 520 GET 1,1;NTREC:GET 2,1;NIREC 522 GOSUB 2000:PRINT PR$;PL$;EM$ 523 PRINT SP$;GR$;TAB( 20+ TB)"***";SH$;" BUDGET FOR ";TD$;RH$;" ***":PRINT SP$;BL$;TAB( 24+ TB);"=--=--=--=-=--=--=--=" 524 PRINT :PRINT SP$;TAB( 20+ TB)BL$;"INCOME";TAB( 39+ TB)RED$;"EXPENDITURE";TAB( 55+ TB)GR$;"BALANCE" 526 GOSUB 1600:PRINT 530 REM REPEAT FOR ALL INCOME RECORDS 540 FOR REC= 2TO NTREC- 1 550 ACNUM= REC- 1 560 GET 1,REC,13;BUDCAT$[1] 570 IF BUDCAT$< > "1"THEN 720 580 GET 1,REC;NAME$[12],DUMMY$[2],FRQ$[2],FCAST 590 FRQ= VAL (FRQ$) 591 IF ACNUM< > 1THEN 610 592 FILE "R",3,DSK$+ "PAYS",1:GET 3,1;NREC,NSAL:ACT= 0:IF NREC= 2THEN FILE "C",3:GOTO 650 593 FOR IBYTE= 1TO NSAL- 1 594 GET 3,NREC- 1,IBYTE* 4+ 10;ITEM 595 ACT= ACT+ ITEM 596 NEXT IBYTE 597 FILE "C",3:GOTO 660 598 600 REM REPEAT BACKWARDS TO FIND LATEST INCOME 610 FOR IREC= (NIREC- 1)TO 2STEP - 1 620 GET 2,IREC;IACNUM$[2] 630 IF VAL (IACNUM$)= ACNUMTHEN GET 2,IREC,24;ACT:GOTO 660 640 NEXT IREC 650 ACT= FCAST:F1LAG= 1 660 ACT= ACT* FRQ/ PERIOD 662 FCAST= FCAST* FRQ/ PERIOD 670 ATAL= ATAL+ ACT:FTAL= FTAL+ FCAST 690 PRINT SP$;GR$;NAME$;" ";:MO= ACT:GOSUB 114:PRINT BL$;MO$; 700 IF F1LAG= 1THEN PRINT MA$;"*";GR$:F1LAG= 0:GOTO 720 710 PRINT 720 NEXT REC 725 BAL= BAL+ ATAL 730 PRINT :PRINT SP$;YE$;SI$;" GROSS INCOME ";RI$;:MO= ATAL:GOSUB 114:PRINT BL$;MO$;" ";:MO= BAL:GOSUB 114:PRINT GR$;MO$:PRINT 740 FILE "C",1,2 750 FILE "R",1,DSK$+ "EXPTIT",1 760 FILE "R",2,DSK$+ "EXPEND",1:FILE "R",3,DSK$+ "PAYS",1 764 GET 1,1,5;NTREC:GET 2,1;NEREC:GET 3,1;NPREC 770 FTAL= 0:ATAL= 0:KOUNT= 0:START= 2 780 REM REPEAT FOR BUDGET CATEGORIES 1 TO 4 790 FOR RBUD= 1TO 4 792 FSUB= 0:ASUB= 0:IF RBUD= 2THEN KOUNT= KOUNT+ 1 800 REM REPEAT FOR EACH EXPENDITURE CATEGORY 810 FOR REC= STARTTO NTREC- 1 820 GET 1,REC,13;BUDCAT$[1]:GET 1,REC,23;IACNUM$[2]:GET 1,REC,38;FINISH$[1] 830 IF NOT (VAL (BUDCAT$)= RBUDAND FINISH$< > "Y"AND VAL (IACNUM$)= 1)THEN 990:REM NEXT REC 840 GET 1,REC;NAME$[12],DUMMY$[2],FRQ$[2],FCAST:RACNUM= REC- 1 850 FRQ= VAL (FRQ$) 860 IF RBUD> = 4OR RACNUM> 15THEN 910:REM USE FORECAST VALUES 861 REM IF REC>16 THEN 870 862 GET 3,NPREC- 1,(REC- 1)* 4+ 38;ACT:GOTO 930 870 REM FOR EREC=NEREC TO 2 STEP -1 880 REM GET 2,EREC;ACNUM$[2] 890 REM IF VAL (ACNUM$)=RACNUM THEN GET 2,EREC,29;ACT:GOTO 930 900 REM NEXT EREC 910 ACT= FCAST 920 F1LAG= 1 930 ACT= ACT* FRQ/ PERIOD 932 FCAST= FCAST* FRQ/ PERIOD 940 ASUB= ASUB+ ACT 950 FSUB= FSUB+ FCAST 960 PRINT SP$;NAME$;" ";:MO= ACT:GOSUB 114:PRINT RED$;MO$;GR$; 970 IF F1LAG= 1THEN PRINT MA$;"*";GR$:F1LAG= 0:GOTO 990 980 PRINT 990 IF RBUD= 2AND KOUNT= 1AND REC= 16THEN 1010 1000 NEXT REC 1010 BAL= BAL- ASUB 1020 IF RB= 1THEN PRINT SP$;YE$;SI$;" STATUTORY EXPENSES ";RI$; 1025 IF RB= 1THEN MO= ASUB:GOSUB 114:PRINT RE$;MO$;:MO= BAL:GOSUB 114:PRINT GR$;" ";MO$:PRINT :GOTO 1070 1030 IF NOT (RBUD= 2AND KOUNT= 1)THEN 1045 1032 PRINT SP$;YE$;SI$;" FIXED EXPENSES ";RI$;:MO= ASUB:GOSUB 114:PRINT RE$;MO$;:MO= BAL:GOSUB 114:PRINT GR$;" "MO$:PRINT 1040 START= 17:RBUD= RBUD- 1:GOTO 1070 1045 START= 2 1050 IF RBUD= 2THEN PRINT SP$;YE$;SI$;" ANNUAL EXPENSES ";RI$; 1055 IF RBUD= 2THEN MO= ASUB:GOSUB 114:PRINT RE$;MO$;:MO= BAL:GOSUB 114:PRINT GR$;" ";MO$:PRINT :GOTO 1070 1060 IF RBUD= 3THEN PRINT SP$;YE$;SI$;" LOAN REPAYMENTS ";RI$; 1062 IF RBUD= 3THEN MO= ASUB:GOSUB 114:PRINT RE$;MO$;:MO= BAL:GOSUB 114:PRINT GR$;" ";MO$:PRINT :GOTO 1070 1065 PRINT SP$;YE$;SI$;" GENERAL EXPENSES ";RI$;:MO= ASUB:GOSUB 114:PRINT RE$;MO$;:MO= BAL:GOSUB 114:PRINT GR$;" ";MO$:PRINT 1070 FTAL= FTAL+ FSUB:ATAL= ATAL+ ASUB 1080 NEXT RBUD 1090 GOSUB 1500 1092 PRINT :GOSUB 2500:INPUT "HIT <RET> TO CONTINUE....";ANS 1100 FILE "C",1,2,3 1110 PLOT 12,3,10,14,11:PRINT "ANOTHER BUDGET (Y/N)? ";:GOSUB 60 1120 IF Q$= "Y"THEN 420 1125 IF Q$< > "N"THEN PLOT 7:GOTO 1110 1190 PLOT 12,3,5,12:INPUT "LOAD APPROPRIATE PROGRAM DISK AND HIT <RETURN> ";ANS:LOAD "MENU":RUN 1480 1490 REM SUB ULINE 1500 PRINT SP$;MA$; 1505 FOR IJ= 1TO 63:PRINT "=";:NEXT IJ:PRINT GR$ 1510 RETURN :END 1520 1590 REM SUB ULINE2 1600 PRINT SP$;MA$; 1605 FOR IJ= 1TO 63:PRINT "-";:NEXT IJ:PRINT GR$ 1610 RETURN :END 1620 2000 PLOT 3,0,31,11:PRINT "TO PRINTER OR SCREEN: ";:GOSUB 74:IF Y$= "P"THEN PRINT "RINTER":GOTO 2080 2005 IF Y$< > "S"THEN PLOT 7:GOTO 2000 2010 PRINT "CREEN" 2020 REM IF OUTPUT TO SCREEN 2030 PFLAG= 0 2045 PLNGTH$= "":SITAL$= "":RITAL$= "":SHEAVY$= "":RH$= "" 2050 EMPH$= "":SPACE$= "":BLUE$= "":MAGENTA$= "":PRNTR$= "":CYAN$= "":GREEN$= "":WHITE$= "":RED$= "":YELLOW$= "":GOTO 2150 2060 REM ENDIF 2070 REM ELSE 2080 PLOT 3,0,31,11:INPUT "TURN ON PRINTER & SET PAPER: HIT <RETURN> WHEN READY ";A:PLOT 12 2090 POKE 33289,132:PFLAG= 1:TMP= PEEK (33265) 2110 FILE "R",6,DSK$+ "PRNTER",1:GET 6,1;PRNTER$[7],EMPH$[4],DUMMY$[20],PLNGTH$[4],DUMMY$[12],SITAL$[4],RITAL$[4],SHEAVY$[4],RH$[4] 2115 FILE "C",6 2120 SPACE$= " ":BLUE$= "":MAGENTA$= "":CYAN$= "":GREEN$= "":WHITE$= "":RED$= "":YELLOW$= "" 2130 REM ENDIF 2140 REM ENDIF 2150 TB= LEN (SPACE$):RETURN 2160 REM 2170 REM 2480 REM ************ POST PRINTING PROCEDURE **************** 2490 REM 2500 IF PFLAG= 1THEN POKE 33265,TMP:POKE 33289,64 2510 RETURN 2520 REM 21000 REM ******************** DATE ROUTINE ******************* 21005 REM 21010 REM INPUT DATE AS D.M.YY ,ASSIGN TO TD$, AND CALL THIS 21015 REM OUTPUT IS TD$ IN THE FORM OF '12 JAN 81' 21020 REM 21025 ERR= 0:IF LEN (TD$)= 0THEN ERR= 1:GOTO 21120 21027 FOR JI= 1TO LEN (TD$):T6= ASC (MID$ (TD$,JI,1)):IF NOT (T6= 46OR (T6> 47AND T6< 58))THEN ERR= 1:GOTO 21120 21029 NEXT JI 21030 STRMTH$= " JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" 21035 IF MID$ (TD$,2,1)= "."THEN TD$= "0"+ TD$ 21070 IF MID$ (TD$,5,1)= "."THEN TD$= LEFT$ (TD$,3)+ "0"+ RIGHT$ (TD$,4) 21080 MM= VAL (MID$ (TD$,4,2)) 21090 MM$= " "+ MID$ (STRMTH$,MM* 3,3)+ " " 21100 TD$= LEFT$ (TD$,2)+ MM$+ RIGHT$ (TD$,2) 21110 IF LEFT$ (TD$,1)= "0"THEN TD$= " "+ RIGHT$ (TD$,8) 21120 RETURN