home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG044.ARK
/
ANNTOT1.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-04-29
|
5KB
|
124 lines
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,<cr>.";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
EOF