home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug044.ark / ANNTOT1.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  5KB  |  124 lines

  1. REM                      ANNTOT1.BAS
  2. REM
  3. REM   This is a source program written in CBASIC version 2 for use with
  4. REM   CP/M on a 48K machine with dual floppy discs.  It is possible to
  5. REM   get by with less memory and a single disc, so try it with smaller
  6. REM   configurations.  The program reads monthly categorized totals from
  7. REM   disc files (64 character record fixed length) and outputs them in
  8. REM   ledger form for optional printing on hardcopy or vision on the screen.
  9. REM   Use the programs BUDGET1 and LEDGER1 to prepare the records.
  10. REM                     Patrick Cunningham (512)822-3593
  11.  
  12.      PRINT TAB(10);"ANNTOT1.BAS: SUMS MONTHLY FILES GENERATED BY LEDGER1"
  13.      PRINT:PRINT:PRINT
  14.      INPUT "If listing is to be done at lineprinter, type 1;console,0";LP%
  15. REM  
  16. REM  Later we will reference LP% and set up the printer if desired.
  17. REM
  18. 10   PRINT "What year are you totalling";
  19.      INPUT LINE YEAR$
  20.      IF LEN(YEAR$)<>4 THEN GOTO 10
  21. 11   PRINT "How many months of the year have passed [are totalled on disc]";
  22.      INPUT NO.MONTHS 
  23.      IF NO.MONTHS<1 OR NO.MONTHS>12 THEN PRINT "Improper number":GOTO 11
  24.      NO.MONTHS%=INT(NO.MONTHS)
  25.      PRINT "Number of months on disc:";NO.MONTHS%;
  26.      INPUT "If this is correct,<cr>.";LINE RESP$
  27.      IF RESP$<>"" THEN GOTO 11
  28.      FILE.NAME$="EXP"+YEAR$+"."+"TOT"
  29.      OPEN FILE.NAME$ RECL 64 AS 1
  30.      PRINT FILE.NAME$ ; " OPENED."
  31. REM
  32. REM  We now read all the months' data into memory.
  33. REM
  34.      DIM MONTH$(NO.MONTHS%)
  35.      DIM CAT$(19)
  36.      DIM AMOUNT(NO.MONTHS%,19)
  37.      DIM TOTAL(NO.MONTHS%)
  38.      FOR L%=1 TO NO.MONTHS%
  39.           READ # 1; SYMBOL$,MONTH$(L%),D.YEAR$
  40.           IF SYMBOL$<>"*" THEN PRINT "* not found with month.":GOTO 1000
  41.           IF D.YEAR$<>YEAR$ THEN PRINT D.YEAR$;" on disc not ";YEAR$:GOTO 1000
  42.           FOR M%=1 TO 19
  43.                READ # 1; SYMBOL$,CAT$(M%),T.AMOUNT
  44.                IF SYMBOL$<>" " THEN PRINT "<> not found with amount":GOTO 1000
  45.                AMOUNT(L%,M%)=T.AMOUNT
  46.                NEXT M%
  47.           READ # 1; SYMBOL$,T.TOTAL
  48.           IF SYMBOL$<>"=" THEN PRINT "= not found with total.":GOTO 1000
  49.           TOTAL(L%)=T.TOTAL
  50.           PRINT TAB(20);  "Data for "; MONTH$(L%); " is in memory."
  51.           NEXT L%
  52. REM
  53. REM  We now total each category and list on the printer, if desired
  54. REM
  55.      
  56.      DIM CAT.TOTAL(19)
  57.      DIM CAT.NAME$(19)
  58.      CAT.NAME$(1)="CHARITY ": CAT$(1)="C"
  59.      CAT.NAME$(2)="DRUGS/PH": CAT$(2)="D"
  60.      CAT.NAME$(3)="CLOTHING": CAT$(3)="G"
  61.      CAT.NAME$(4)="FOOD    ": CAT$(4)="F"
  62.      CAT.NAME$(5)="HOUSEHLD": CAT$(5)="H"
  63.      CAT.NAME$(6)="MORTGAGE": CAT$(6)="I"
  64.      CAT.NAME$(7)="INSURANC": CAT$(7)="J"
  65.      CAT.NAME$(8)="MEDICAL ": CAT$(8)="Y"
  66.      CAT.NAME$(9)="MISC/TAX": CAT$(9)="M"
  67.      CAT.NAME$(10)= "MISC/NONTAX": CAT$(10)="N"
  68.      CAT.NAME$(11)= "PERS.PHONE ": CAT$(11)="P"
  69.      CAT.NAME$(12)= "BUS. PHONE ": CAT$(12)="B"
  70.      CAT.NAME$(13)= "REIMB.PHONE": CAT$(13)="R"
  71.      CAT.NAME$(14)= "SAVINGS    ": CAT$(14)="S"
  72.      CAT.NAME$(15)= "UTILITIES  ": CAT$(15)="U"
  73.      CAT.NAME$(16)= "GAS/PERS.  ": CAT$(16)="E"
  74.      CAT.NAME$(17)= "AUTO PARTS ": CAT$(17)="X"
  75.      CAT.NAME$(18)= "AUTO REPAIR": CAT$(18)="W"
  76.      CAT.NAME$(19)= "SALES TAX  ": CAT$(19)="T"
  77.      IF LP% THEN LPRINTER WIDTH 132
  78.      LP%=0
  79.      PRINT:PRINT
  80.      PRINT TAB(40);"E X P E N S E    S U M M A R Y    F O R  "; YEAR$
  81.      PRINT:PRINT:PRINT
  82.      PRINT "MONTH  CHARITY DRUGS   CLOTHES FOOD   HOUSEHLD MORTGAGE INSURANCE MEDICAL MISC.TX   MISC.NO.TX"
  83.      PRINT
  84.      YR.TOTAL=0.0
  85.      FOR K%=1 TO 19 : CAT.TOTAL(K%)=0.0 :NEXT K%
  86.      FOR L%=1 TO NO.MONTHS%
  87.           PRINT MONTH$(L%):PRINT "  ";
  88.           FOR K%=1 TO 10
  89.                PRINT USING "$$####.##"; AMOUNT(L%,K%);
  90.                CAT.TOTAL(K%)=CAT.TOTAL(K%)+AMOUNT(L%,K%)
  91.                YR.TOTAL=YR.TOTAL+AMOUNT(L%,K%)
  92.                NEXT K%
  93.           PRINT
  94.           NEXT L%
  95.      PRINT "____________________________________________________________________________________"
  96.      PRINT:PRINT "  "
  97.      FOR K%=1 TO 10
  98.           PRINT USING "$$####.##"; CAT.TOTAL(K%);
  99.           NEXT K%
  100.      PRINT:PRINT
  101.      PRINT " PHONE B.PHONE R.PHONE SAVING UTILITY FUEL  AUTO.PT AUTOREP TAX    TOTAL"
  102.      PRINT 
  103.      FOR L%=1 TO NO.MONTHS%
  104.           PRINT MONTH$(L%)
  105.           FOR K%=11 TO 19
  106.                PRINT USING "$$##.##"; AMOUNT(L%,K%);
  107.                CAT.TOTAL(K%)=CAT.TOTAL(K%)+AMOUNT(L%,K%)
  108.                YR.TOTAL=YR.TOTAL+AMOUNT(L%,K%)
  109.                NEXT K%
  110.           PRINT USING "$$####.##"; TOTAL(L%)
  111.           PRINT
  112.           NEXT L%
  113.      PRINT "_________________________________________________________________________"
  114.      PRINT
  115.      FOR K%=11 TO 19
  116.           PRINT USING "$$##.##"; CAT.TOTAL(K%);
  117.           NEXT K%
  118.      PRINT USING "$$#####.##";YR.TOTAL
  119.      PRINT:PRINT:PRINT:PRINT:PRINT
  120.      IF NOT LP% THEN CONSOLE
  121. 1000 INPUT "To start over, type 1;otherwise type 0"; ANS%
  122.      IF ANS% THEN GOTO 10 ELSE PRINT TAB(30);"Adios.[VIVA TEJAS!]"
  123. END
  124. EOF