REM ANNTOT1.BAS REM REM This is a source program written in CBASIC version 2 for use with REM CP/M on a 48K machine with dual floppy discs. It is possible to REM get by with less memory and a single disc, so try it with smaller REM configurations. The program reads monthly categorized totals from REM disc files (64 character record fixed length) and outputs them in REM ledger form for optional printing on hardcopy or vision on the screen. REM Use the programs BUDGET1 and LEDGER1 to prepare the records. REM Patrick Cunningham (512)822-3593 PRINT TAB(10);"ANNTOT1.BAS: SUMS MONTHLY FILES GENERATED BY LEDGER1" PRINT:PRINT:PRINT INPUT "If listing is to be done at lineprinter, type 1;console,0";LP% REM REM Later we will reference LP% and set up the printer if desired. REM 10 PRINT "What year are you totalling"; INPUT LINE YEAR$ IF LEN(YEAR$)<>4 THEN GOTO 10 11 PRINT "How many months of the year have passed [are totalled on disc]"; INPUT NO.MONTHS IF NO.MONTHS<1 OR NO.MONTHS>12 THEN PRINT "Improper number":GOTO 11 NO.MONTHS%=INT(NO.MONTHS) PRINT "Number of months on disc:";NO.MONTHS%; INPUT "If this is correct,.";LINE RESP$ IF RESP$<>"" THEN GOTO 11 FILE.NAME$="EXP"+YEAR$+"."+"TOT" OPEN FILE.NAME$ RECL 64 AS 1 PRINT FILE.NAME$ ; " OPENED." REM REM We now read all the months' data into memory. REM DIM MONTH$(NO.MONTHS%) DIM CAT$(19) DIM AMOUNT(NO.MONTHS%,19) DIM TOTAL(NO.MONTHS%) FOR L%=1 TO NO.MONTHS% READ # 1; SYMBOL$,MONTH$(L%),D.YEAR$ IF SYMBOL$<>"*" THEN PRINT "* not found with month.":GOTO 1000 IF D.YEAR$<>YEAR$ THEN PRINT D.YEAR$;" on disc not ";YEAR$:GOTO 1000 FOR M%=1 TO 19 READ # 1; SYMBOL$,CAT$(M%),T.AMOUNT IF SYMBOL$<>" " THEN PRINT "<> not found with amount":GOTO 1000 AMOUNT(L%,M%)=T.AMOUNT NEXT M% READ # 1; SYMBOL$,T.TOTAL IF SYMBOL$<>"=" THEN PRINT "= not found with total.":GOTO 1000 TOTAL(L%)=T.TOTAL PRINT TAB(20); "Data for "; MONTH$(L%); " is in memory." NEXT L% REM REM We now total each category and list on the printer, if desired REM DIM CAT.TOTAL(19) DIM CAT.NAME$(19) CAT.NAME$(1)="CHARITY ": CAT$(1)="C" CAT.NAME$(2)="DRUGS/PH": CAT$(2)="D" CAT.NAME$(3)="CLOTHING": CAT$(3)="G" CAT.NAME$(4)="FOOD ": CAT$(4)="F" CAT.NAME$(5)="HOUSEHLD": CAT$(5)="H" CAT.NAME$(6)="MORTGAGE": CAT$(6)="I" CAT.NAME$(7)="INSURANC": CAT$(7)="J" CAT.NAME$(8)="MEDICAL ": CAT$(8)="Y" CAT.NAME$(9)="MISC/TAX": CAT$(9)="M" CAT.NAME$(10)= "MISC/NONTAX": CAT$(10)="N" CAT.NAME$(11)= "PERS.PHONE ": CAT$(11)="P" CAT.NAME$(12)= "BUS. PHONE ": CAT$(12)="B" CAT.NAME$(13)= "REIMB.PHONE": CAT$(13)="R" CAT.NAME$(14)= "SAVINGS ": CAT$(14)="S" CAT.NAME$(15)= "UTILITIES ": CAT$(15)="U" CAT.NAME$(16)= "GAS/PERS. ": CAT$(16)="E" CAT.NAME$(17)= "AUTO PARTS ": CAT$(17)="X" CAT.NAME$(18)= "AUTO REPAIR": CAT$(18)="W" CAT.NAME$(19)= "SALES TAX ": CAT$(19)="T" IF LP% THEN LPRINTER WIDTH 132 LP%=0 PRINT:PRINT PRINT TAB(40);"E X P E N S E S U M M A R Y F O R "; YEAR$ PRINT:PRINT:PRINT PRINT "MONTH CHARITY DRUGS CLOTHES FOOD HOUSEHLD MORTGAGE INSURANCE MEDICAL MISC.TX MISC.NO.TX" PRINT YR.TOTAL=0.0 FOR K%=1 TO 19 : CAT.TOTAL(K%)=0.0 :NEXT K% FOR L%=1 TO NO.MONTHS% PRINT MONTH$(L%):PRINT " "; FOR K%=1 TO 10 PRINT USING "$$####.##"; AMOUNT(L%,K%); CAT.TOTAL(K%)=CAT.TOTAL(K%)+AMOUNT(L%,K%) YR.TOTAL=YR.TOTAL+AMOUNT(L%,K%) NEXT K% PRINT NEXT L% PRINT "____________________________________________________________________________________" PRINT:PRINT " " FOR K%=1 TO 10 PRINT USING "$$####.##"; CAT.TOTAL(K%); NEXT K% PRINT:PRINT PRINT " PHONE B.PHONE R.PHONE SAVING UTILITY FUEL AUTO.PT AUTOREP TAX TOTAL" PRINT FOR L%=1 TO NO.MONTHS% PRINT MONTH$(L%) FOR K%=11 TO 19 PRINT USING "$$##.##"; AMOUNT(L%,K%); CAT.TOTAL(K%)=CAT.TOTAL(K%)+AMOUNT(L%,K%) YR.TOTAL=YR.TOTAL+AMOUNT(L%,K%) NEXT K% PRINT USING "$$####.##"; TOTAL(L%) PRINT NEXT L% PRINT "_________________________________________________________________________" PRINT FOR K%=11 TO 19 PRINT USING "$$##.##"; CAT.TOTAL(K%); NEXT K% PRINT USING "$$#####.##";YR.TOTAL PRINT:PRINT:PRINT:PRINT:PRINT IF NOT LP% THEN CONSOLE 1000 INPUT "To start over, type 1;otherwise type 0"; ANS% IF ANS% THEN GOTO 10 ELSE PRINT TAB(30);"Adios.[VIVA TEJAS!]" END