Listing of file='EXPREP.BAS;01' on disk='vmedia/home_budget_3-sector.ccvf'
0 REM ************* EXPENDITURE REPORTS ******************* 1 REM 20 CLEAR 2000 25 DD= PEEK (65535):DSK$= MID$ (STR$ (DD- 1),2)+ ":" 27 IF DD= 1THEN PLOT 12,14,3,10,15:INPUT "LOAD DATA DISK & HIT <RET>: ";A 30 DIM TEX$(64),TEX(64),TAX$(64),FCAST(64) 35 UL$= "---------------------------------------------------------------" 37 U1$= "===============================================================" 40 GOTO 420 56 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 110 REM ************* FORMAT MONEY ************************** 114 RH$= STR$ ((1000* (MO* SGN (MO)- INT (MO* SGN (MO)))+ 1005)/ 10) 116 IF VAL (RH$)> = 200THEN MO= (MO* SGN (MO)+ 1)* SGN (MO) 118 LH$= STR$ (INT (MO* SGN (MO))* SGN (MO)):IF VAL (LH$)= 0AND SGN (MO)= - 1THEN LH$= "-0" 120 LH$= "$"+ LH$ 122 IF LEN (LH$)> = 7THEN 126 124 LH$= " "+ LH$:GOTO 122 126 RH$= MID$ (RH$,3,2):MO$= LH$+ "."+ RH$:RETURN 128 REM 130 REM ************* FORMAT PERCENT ************************ 132 REM MO ->->-> MO$ 134 RH$= STR$ ((1000* (MO* SGN (MO)- INT (MO* SGN (MO)))+ 1005)/ 10) 136 IF VAL (RH$)> = 200THEN MO= (MO* SGN (MO)+ 1)* SGN (MO) 138 LH$= STR$ (INT (MO* SGN (MO))* SGN (MO)):IF VAL (LH$)= 0AND SGN (MO)= - 1THEN LH$= "-0" 142 IF LEN (LH$)> = 3THEN 146 144 LH$= " "+ LH$:GOTO 142 146 RH$= MID$ (RH$,3,2):MO$= LH$+ "."+ RH$+ "%":RETURN 148 REM 390 REM 400 REM ******** **** MAIN PROGRAM ************************* 410 REM 420 PLOT 12,14,3,20,1:PRINT "EXPENDITURE REPORTS":PLOT 15 425 ISUM= 0:BAL= 0:ESUM= 0:TEX= 0:TFCAST= 0:SUM= 0 430 PLOT 3,3,5:PRINT "OPTIONS ARE:" 450 PLOT 3,13,9:PRINT "1. STATEMENT FOR A PARTICULAR ACCOUNT" 460 PLOT 3,13,11:PRINT "2. LIST ALL EXPENDITURES" 470 PLOT 3,13,13:PRINT "3. LIST ALL TAXABLE EXPENDITURE" 477 PLOT 3,13,17:PRINT "9. END" 480 PLOT 3,5,22:PRINT "PLEASE MAKE A SELECTION....";:GOSUB 74:ANS= VAL (Y$):PRINT 490 IF NOT ((ANS> = 1AND ANS< = 3)OR ANS= 9)THEN PLOT 7:GOTO 420 500 ON ANSGOSUB 2000,3000,4000,420,420,420,420,420,6000 510 GOTO 420 980 REM ********* LIST EXPENDITURE FOR AN ACCOUNT ********** 990 REM 1010 FILE "R",1,DSK$+ "EXPTIT",1 1014 GET 1,1,5;NREC:NACCT= NREC- 1 1018 PLOT 12,3,1,1:PRINT "CURRENT ACCOUNTS ARE :" 1022 FOR REC= 2TO NREC- 1 1024 GET 1,REC;NAME$[12] 1026 IF REC< = 15THEN PLOT 3,0,REC+ 1:PRINT REC- 1;" "NAME$"":GOTO 1034 1028 IF REC< = 29THEN PLOT 3,16,REC- 13:PRINT REC- 1;" "NAME$"":GOTO 1034 1030 IF REC< = 43THEN PLOT 3,32,REC- 27:PRINT REC- 1;" "NAME$"":GOTO 1034 1032 PLOT 3,48,REC- 41:PRINT REC- 1;" "NAME$"" 1034 NEXT REC 1060 PLOT 3,0,20,11:INPUT "ENTER ACCOUNT NUMBER: ";SEL:IF SEL< 1OR SEL> NACCT- 1THEN PLOT 7:GOTO 1060 1070 GET 1,SEL+ 1;NAME$[12]:FILE "C",1 1080 INPUT "ENTER START DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN SJUL= 0:GOTO 1100 1090 GOSUB 21045:IF ERR= 1THEN PLOT 7,28,11:GOTO 1080 1095 D7$= TD$:GOSUB 19000:SJUL= D7 1100 INPUT "ENTER END DATE (D.M.YY) OR <RET>: ";TD$:IF TD$= ""THEN EJUL= 999999:GOTO 1120 1110 GOSUB 21045:IF ERR= 1THEN PLOT 7,28,11:GOTO 1100 1115 D7$= TD$:GOSUB 19000:EJUL= D7 1120 IF PICK= 2THEN RETURN 1980 REM ********* STATEMENT FOR AN ACCOUNT ***************** 1990 REM 2000 PICK= 2:GOSUB 1010 2160 GOSUB 9000:PRINT PRNTER$;PL$;GR$;SH$;EM$ 2165 PRINT SPACE$;TAB( 18+ TB)NAME$;" STATEMENT";RH$:PRINT SP$;TAB( 18+ TB)"=--=--=--=--=--=--=--=":PRINT 2170 PRINT SPACE$;WHITE$;TAB( 2+ TB)"DATE DETAILS INVOICES PAYMENTS CHNUM. BALANCE":PRINT SPACE$;MAGENTA$;UL$:PRINT 2180 FILE "R",1,DSK$+ "EXPEND",1:GET 1,1;NREC:FOR REC= 2TO NREC- 1:GET 1,REC;NUM$[2],DATE$[9],DETAIL$[12],CHEQUE,IP$[1],AMT 2190 IF VAL (NUM$)< > SELTHEN 2230 2210 D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 2230 2220 IF IP$= "I"THEN ISUM= ISUM+ AMT:BAL= BAL+ AMT:GOSUB 2500:GOTO 2230 2225 ESUM= ESUM+ AMT:BAL= BAL- AMT:GOSUB 2700 2230 NEXT REC:FILE "C",1:IF SEL> 15THEN 2280 2240 PRINT :FILE "R",1,DSK$+ "PAYS",1:GET 1,1;NREC:FOR REC= 2TO NREC- 1:GET 1,REC;NUM,DATE$[9]:GET 1,REC,SEL* 4+ 38;AMT:IF AMT= 0THEN 2270 2250 D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 2270 2260 DETAIL$= "PAY":CHEQUE= 0:ISUM= ISUM+ AMT:BAL= BAL+ AMT:GOSUB 2500 2265 ESUM= ESUM+ AMT:BAL= BAL- AMT:GOSUB 2700 2270 NEXT REC:FILE "C",1 2280 PRINT SPACE$;MAGENTA$;UL$ 2285 PRINT SPACE$;:MO= ISUM:GOSUB 114:PRINT TAB( 23+ TB)RED$;MO$;:MO= ESUM:GOSUB 114:PRINT TAB( 34+ TB)CYAN$;MO$;:MO= ISUM- ESUM:GOSUB 114:PRINT TAB( 53+ TB);WHITE$;MO$ 2287 PRINT SPACE$;MAGENTA$;U1$;GREEN$ 2290 GOSUB 9500 2300 PRINT :INPUT "HIT <RETURN> TO CONTINUE: ";A:RETURN 2500 PRINT SPACE$;WHITE$;DATE$;YELLOW$;TAB( 10+ TB)DETAIL$;:MO= AMT:GOSUB 114:PRINT RED$;TAB( 23+ TB)MO$;:MO= BAL:GOSUB 114:PRINT TAB( 53+ TB)WHITE$;MO$ 2510 RETURN 2700 PRINT SPACE$;WHITE$;DATE$;YELLOW$;TAB( 10+ TB)DETAIL$;:MO= AMT:GOSUB 114:PRINT CYAN$;TAB( 34+ TB)MO$;TAB( 45+ TB)GR$;CH;:MO= BAL:GOSUB 114:PRINT TAB( 53+ TB)WHITE$;MO$ 2710 RETURN 2980 REM ************** LIST TOTAL EXPENDITURE *************** 2990 REM 3000 PICK= 3:TITLE$= "TOTAL ":FOR I= 1TO 64:TEX(I)= 0:NEXT I 3002 PLOT 12,3,0,10:INPUT "ENTER START DATE (D.M.YY) OR <RET>: ";TD$ 3003 IF TD$= ""THEN D1$= "YEAR START":D2$= " YEAR END":SJUL= 0:EJUL= 999999:DAYS= 365:GOTO 3010 3004 GOSUB 21045:IF ERR= 1THEN PLOT 7:GOTO 3002 3005 D7$= TD$:D1$= " "+ TD$:GOSUB 19000:SJUL= D7 3006 INPUT "ENTER END DATE (D.M.YY): ";TD$:IF TD$= ""THEN PLOT 7,28,11:GOTO 3006 3008 GOSUB 21045:IF ERR= 1THEN PLOT 7,28,11:GOTO 3006 3009 D7$= TD$:D2$= TD$:GOSUB 19000:EJUL= D7:DAYS= EJUL- SJUL+ 1 3010 GOSUB 9000 3015 PRINT PRNTER$;PL$;SH$;GR$;EM$ 3017 PRINT SPACE$;TAB( 3+ TB)TITLE$;"EXPENDITURE SUMMARY FROM ";D1$;" TO ";D2$;RH$ 3018 PRINT SP$;TAB( 3+ TB)"=--=--=--=--=--=--=--=--=--=-=--=--=--=--=--=--=--=--=--=":PRINT 3020 PRINT SPACE$;WHITE$;TAB( 10+ TB)"DETAILS FORECAST ACTUAL DIFFERENCE":PRINT SPACE$;MAGENTA$;UL$:PRINT 3022 FILE "R",1,DSK$+ "EXPTIT",1:GET 1,1,5;NTREC 3030 FOR TREC= 2TO NTREC- 1:SEL= TREC- 1 3040 GET 1,TREC;TEX$(SEL)[12],DUMMY$[1],TAX$(SEL)[1],FRQ$[2],FCAST,DU$[4],ZZ:FRQ= VAL (FRQ$) 3055 FCAST(SEL)= FCAST* FRQ* (DAYS/ 365) 3060 IF SEL= 16THEN CBAL= - ZZ 3065 NEXT TREC:FILE "C",1 3070 TEX$(16)= "CASH BALANCE" 3072 3080 FILE "R",1,DSK$+ "EXPEND",1:GET 1,1;NREC 3190 FOR REC= 2TO NREC- 1 3195 GET 1,REC;NUM$[2],DATE$[9],DETAIL$[12],CHEQUE,IP$[1],AMT:NUM= VAL (NUM$) 3200 IF NUM= 16THEN 3240 3210 IF IP$< > "P"THEN 3240 3220 D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 3240 3230 TEX(NUM)= TEX(NUM)+ AMT 3240 NEXT REC:FILE "C",1 3242 TEX(16)= CBAL 3244 3246 FILE "R",1,DSK$+ "PAYS",1:GET 1,1;NPREC 3250 FOR PREC= 2TO NPREC- 1:GET 1,PREC;NUM,DATE$[9] 3260 D7$= DATE$:GOSUB 19000:IF D7< SJULOR D7> EJULTHEN 3284 3262 FOR I= 1TO 15 3264 GET 1,PREC,I* 4+ 38;AMT 3270 TEX(I)= TEX(I)+ AMT 3280 NEXT I 3284 NEXT PREC:FILE "C",1 3300 3310 FOR I= 1TO NTREC- 2:IF TEX(I)= 0AND FCAST(I)= 0THEN 3330 3315 IF PICK= 4AND TAX$(I)< > "Y"THEN 3330 3320 GOSUB 3500 3325 TFCAST= TFCAST+ FCAST(I):ESUM= ESUM+ TEX(I) 3330 NEXT I 3395 3399 3400 PRINT SPACE$;MAGENTA$;UL$:PRINT SPACE$;WHITE$;TAB( 10+ TB)"TOTAL";:MO= TFCAST:GOSUB 114:PRINT TAB( 25+ TB)YELLOW$;MO$;:MO= ESUM:GOSUB 114:PRINT TAB( 40+ TB)CYAN$;MO$; 3410 MO= TFCAST- ESUM:GOSUB 114:PRINT TAB( 53+ TB)RED$;MO$:PRINT SPACE$;MAGENTA$;U1$;GREEN$ 3420 GOSUB 9500 3430 PRINT :INPUT "HIT <RETURN> TO CONTINUE: ";A:RETURN 3500 PRINT SPACE$;WHITE$;TAB( 10+ TB)TEX$(I);YELLOW$;:MO= FCAST(I):GOSUB 114:PRINT TAB( 25+ TB)MO$;CYAN$;:MO= TEX(I):GOSUB 114:PRINT TAB( 40+ TB)MO$; 3510 MO= TEX(I)- FCAST(I):GOSUB 114:PRINT TAB( 53+ TB)RED$;MO$:RETURN 3970 REM 3980 REM **************** LIST TAXABLE EXPENDITURE *********** 3990 REM 4000 TITLE$= "TAXATION ":PICK= 4:GOTO 3002 4470 REM 4970 REM 6000 PLOT 12,3,5,12:INPUT "LOAD APPROPRIATE PROGRAM DISK AND HIT <RETURN> ";A:LOAD "MENU":RUN 8990 REM 8992 REM **************** PRINTER QUESTION ******************* 8994 REM 9000 PLOT 3,0,31,11:PRINT "TO PRINTER OR SCREEN: ";:GOSUB 74:IF Y$= "P"THEN PRINT "RINTER":GOTO 9070 9002 IF Y$< > "S"THEN PLOT 7:GOTO 9000 9005 PRINT "CREEN" 9010 REM IF OUTPUT TO SCREEN 9020 PFLAG= 0 9035 PLNGTH$= "":SH$= "":RH$= "" 9040 EMPH$= "":SPACE$= "":MAGENTA$= "":PRNTR$= "":CYAN$= "":GREEN$= "":WHITE$= "":RED$= "":YELLOW$= "":GOTO 9140 9060 REM ELSE 9070 PLOT 3,0,31,11:INPUT "TURN ON PRINTER & SET PAPER: HIT <RETURN> WHEN READY ";A:PLOT 12 9080 POKE 33289,132:PFLAG= 1:TMP= PEEK (33265) 9100 FILE "R",6,DSK$+ "PRNTER",1:GET 6,1;PRNTER$[7],EMPH$[4],DUMMY$[20],PLNGTH$[4],DU$[20],SH$[4],RH$[4]:FILE "C",6 9110 SPACE$= " ":MAGENTA$= "":CYAN$= "":GREEN$= "":WHITE$= "":RED$= "":YELLOW$= "" 9130 REM ENDIF 9140 TB= LEN (SPACE$):RETURN 9150 REM 9160 REM 9480 REM ************ POST PRINTING PROCEDURE **************** 9490 REM 9500 IF PFLAG= 1THEN POKE 33265,TMP:POKE 33289,64 9510 RETURN 9520 REM 18980 REM ********************** CNVERT DATE TO JD ************ 18990 REM 19000 Y1= VAL (RIGHT$ (D7$,2)):D= VAL (LEFT$ (D7$,2)) 19010 FOR K= 1TO 12:IF MID$ (STRMTH$,K* 3,3)= MID$ (D7$,4,3)THEN M= K:GOTO 19030 19020 NEXT K 19030 Y1= Y1+ 1900 19040 C9= .001 19050 M9= (- 1)* INT (((14- M)/ 12)+ C9) 19060 J1= D- 2447095+ INT ((1461* (Y1+ 4800+ M9)/ 4)+ C9) 19070 J2= J1+ INT ((367* (M- 2- 12* M9)/ 12)+ C9) 19080 J1= J2- INT ((3* (Y1+ 4900+ M9)/ 400)+ C9) 19090 J2= J1 19100 D7= J2:RETURN 21000 REM ******************** DATE ROUTINE ******************* 21010 REM 21020 REM INPUT DATE AS D.M.YY ,ASSIGN TO TD$, AND CALL THIS 21030 REM OUTPUT IS TD$ IN THE FORM OF '12 JAN 81' 21040 REM 21045 ERR= 0:IF LEN (TD$)= 0THEN ERR= 1:GOTO 21120 21047 FOR JI= 1TO LEN (TD$):T6= ASC (MID$ (TD$,JI,1)):IF NOT (T6= 46OR (T6> 47AND T6< 58))THEN ERR= 1:GOTO 21120 21049 NEXT JI 21050 STRMTH$= " JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC" 21060 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