10 MAXFILES=2:CLEAR 500:DEFINTF,X,Z:REM flags & counters 20 SW=80:SH=24:PL=66:READXB,XP 30 DIM FB(XB),B$(XB),FP(XP),P$(XP),BP(XP),PP%(XP),RN%,BP 40 FORZ=0TOXB:READFB(Z),B$(Z):NEXTZ 50 FORZ=0TOXP:READFP(Z),P$(Z):NEXTZ 60 E$=CHR$(27):UP$=E$+"A":CL$=E$+"J" 70 FM$=" $$###.##-":FD$="#### \ \ \ \ \ \ $$###.##############-" 80 FB$="\ \ \ \ $$###.##- ........ $$###.##-" 90 FC$="\ \ \ \ ........ $$###.##- $$###.##-" 100 REM deffn dp$ (gosub 22000 if deffn not available) 110 REM deffn de$ (gosub 23000 if deffn not available) 120 D$=DATE$:GOSUB22000 130 REM deffn b (gosub ????? if deffn not available) 140 REM deffn p (gosub ????? if deffn not available) 200 OPEN"0:bills.dat"FORINPUTAS1 210 IF EOF(1) THEN 250 220 GOSUB21000 230 GOTO210 250 CLOSE 260 OPEN"0:bills.dat"FORAPPENDAS1 300 CLS 310 PRINT"nter bills" 320 PRINT"ake payment" 330 PRINT"

rint Bills" 340 PRINT"ist File" 350 PRINT"reate new file" 390 PRINT"one" 400 LINEINPUTA$ 410 GOSUB10000:REM convert to uc 420 ONINSTR("EMPLCD",A$)GOSUB1000,2000,3000,4000,5000,9000 430 GOTO300 999 END 1000 PRINT@0,"Enter Bills";CL$ 1100 PRINT"Which bill?" 1120 FORZ=1TOXB:REM list choices 1130 IFFB(Z)THENPRINTZ;" ";B$(Z) 1140 NEXTZ 1150 INPUTB:REM select choice 1160 IFB=0THENRETURN 1170 IFB<0ORB>XBTHENPRINTUP$;CL$;:GOTO1150 1180 IFNOTFB(B)THENPRINTUP$;CL$;:GOTO1150 1190 PRINT@SW/4,B$(B);" Bill";CL$ 1200 GOSUB11000:REM get date 1210 PRINT@SW/2,DE$;CL$ 1300 REM amount 1350 LINEINPUT"Amount:";A$:REM enter amount 1360 M=VAL(A$) 1370 IFM=0THEN1210 1380 PRINT@SW*3/4,"Amount: ";USINGFM$;M;:PRINTCL$ 1400 PRINT"Who is paying shares:":REM people 1405 S=0 1410 FOR Z=0TOXP:REM get share payers 1420 IFNOTFP(Z)THEN1480 1430 PRINTP$(Z); 1440 LINEINPUT" (y/n):";A$:IFA$=""THEN1440 1450 GOSUB10000 1460 IFA$<>"N"ANDA$<>"Y"THENPRINTUP$;CL$;:GOTO1430 1470 IFA$="Y"THENPP%(Z)=-1:S=S+1ELSEPP%(Z)=0:BP(Z)=0 1480 NEXTZ 1500 PRINT@SW,CL$:REM split 1505 INPUT"Equal Shares (y/n)";A$:GOSUB10000:REM even 1510 IFA$<>"Y"ANDA$<>"N"THEN1500 1515 IFA$="N"THEN1550 1520 BP=M/S:PRINT@SW,"Equal Share:";USINGFM$;BP;:PRINTCL$:REM calculate 1530 FORZ=0TOXP:IFPP%(Z)THENBP(Z)=BP:NEXTELSEBP(Z)=0:NEXT 1540 GOTO1600 1550 BP=0 1555 FORZ=0TOXP:BP(Z)=0:REM uneven 1560 IFPP%(Z)THENPRINTUSING"\ \";P$(Z);:INPUT" share";BP(Z):REM get shares 1565 NEXTZ 1570 FORZ=0TOXP:REM check shares 1580 BP=BP(Z)+BP 1585 NEXTZ 1590 IFABS(M-BP)>.005THENPRINT"incorrect total of";BP:GOTO1550 1600 FOR Z=0TOXP:REM print 1610 IFPP%(Z)THENBP=BP(Z):GOSUB20000 1620 NEXTZ 1700 REM save 'breakage' 1900 RETURN 2000 PRINT@0,"Make Payment";CL$ 2010 FORZ=0TOXP 2020 IFFP(Z)THENPRINTZ,P$(Z) 2030 NEXTZ 2040 INPUT"Who is making payment";Z 2050 IFZ<0ORZ>XPTHEN2010 2060 IFNOTFP(Z)THEN2010 2070 PRINT@SW/2,P$(Z);CL$ 2080 INPUT"Amount of payment:";BP 2090 GOSUB11000:REM"get date" 2100 B=0 2110 BP=-BP 2120 GOSUB20000 2900 RETURN 3000 PRINT@0,"Print Bills";CL$ 3010 INPUT"

rinter or creen";A$ 3020 GOSUB10000 3030 IFA$<>"S"ANDA$<>"P"THEN3000 3040 IFA$="S"THENOPEN"crt:"FOROUTPUTAS2 3050 IFA$="P"THENOPEN"lpt:"FOROUTPUTAS2 3060 GOSUB24000:REM set da$ to 1 month ago 3070 PRINT#2,CHR$(12);:LC=0 3100 PRINT@0,"Print Bills";CL$ 3110 PRINT"Print Bills for whom:":REM people 3120 FOR Z=0TOXP:REM get people 3130 IFNOTFP(Z)THEN3190 3140 PRINTP$(Z); 3150 LINEINPUT" (y/n):";A$ 3160 GOSUB10000 3170 IFA$<>"N"ANDA$<>"Y"THENPRINTUP$;CL$;:GOTO3140 3180 IFA$="Y"THENPP%(Z)=-1:ELSEPP%(Z)=0 3190 NEXTZ 3200 FORZ=0TOXP 3210 IFNOTPP%(Z)THEN3500 3220 CLOSE1:OPEN"0:bills.dat"FORINPUTAS1 3230 PRINT#2,USING"\ \ \ \ \ \ \ \";P$(Z),DAY$,DATE$,TIME$ 3240 PRINT#2,"DATE DESCRIPTION CHARGES CREDITS BALANCE" 3250 LC=LC+2 3260 BT=0 3300 IF NOT EOF(1) THEN GOSUB21000 ELSE3400 3310 IF P<>Z THEN3300 3320 BT=BP+BT 3330 IF DA$>DP$ THEN3300 3340 D$=DP$ 3350 GOSUB23000 3360 IF B=0 THENPRINT#2,USINGFC$;DE$,B$(B),BP,BTELSEPRINT#2,USINGFB$;DE$,B$(B),BP,BT 3370 LC=LC+1 3380 GOTO 3300 3400 IF LC>PL/2THEN PRINT#2,CHR$(12);:LC=0 ELSE PRINT#2, STRING$(PL\2-LC,13);:LC=LC+(PL\2-LC) 3500 NEXTZ 3900 CLOSE 3910 OPEN"0:bills.dat"FORAPPENDAS1 3920 RETURN 4000 PRINT@0,"list file routine" 4010 CLOSE 4020 OPEN"0:bills.dat"FORINPUTAS1 4030 IF NOT EOF(1) THEN GOSUB21000ELSE4900 4040 D$=DP$:GOSUB23000 4050 LPRINTUSINGFD$;RN%,DE$,P$(P),B$(B),BP 4060 GOTO4030 4900 CLOSE 4910 OPEN"0:bills.dat"FOR APPEND AS1 4920 RETURN 5000 PRINT@0,"create New file";CL$ 5010 OPEN"0:bills.new"FOROUTPUTAS2 5200 FORZ=0TOXP:PRINTZ,FP(Z) 5210 IFNOTFP(Z)THEN5900 5220 CLOSE1:OPEN"0:bills.dat"FORINPUTAS1 5230 BT=0 5300 IF NOT EOF(1) THEN GOSUB21000 ELSE5400 5310 IF P<>Z THEN5300 5320 BT=BP+BT 5330 D$=DP$ 5340 GOSUB23000 5350 GOTO 5300 5400 R1%=R1%+1:REM print record to new file 5410 R1$="" 5420 FORZ1=0TO1 5430 R1$=R1$+CHR$(PEEK(VARPTR(R1%)+Z1)) 5440 NEXTZ1 5450 PRINT#2,R1$; 5500 PRINT#2,DP$;:REM print date 5600 BT$="":REM print amount 5610 FORZ1=0TO7 5620 BT$=BT$+CHR$(PEEK(VARPTR(BT)+Z1)) 5630 NEXTZ1 5640 PRINT#2,BT$; 5700 CO$=CHR$(Z):REM print code 5710 PRINT#2,CO$; 5800 REM lprint record for audit trail 5810 LPRINTUSINGFD$;R1%,DE$,P$(Z),B$(B),BT 5900 NEXTZ 5910 CLOSE 5920 RETURN 9000 INPUT"Are you sure";A$ 9010 GOSUB10000 9020 IFA$="Y"THENCLOSE:MAXFILES=1:ENDELSERETURN 10000 IFA$<>""THENA=ASC(A$)ELSE10900:REM lc to UC 10010 IFA>96ANDA<123THENA$=CHR$(A-32)ELSEA$=CHR$(A) 10900 RETURN 11000 D$=DP$:REM get date 11010 GOSUB23000 11020 PRINT"Date:";DE$; 11030 LINEINPUT" MM/DD/YY: ";D$ 11040 IFD$=""THENRETURN 11050 IF(INSTR(D$,"/")<>3ANDINSTR(4,D$,"/")<>6)ORLEN(D$)<>8THENPRINTUP$;CL$;:GOTO11020 11060 GOSUB22000 11070 D$=DP$ 11080 GOSUB23000 11900 RETURN 12000 PRINT@SW*(SH-1),LOC(1);" ";FNDE$(DT$);" ";P$(FNP);" ";B$(FNB);" ";USINGFM$;CVS(M$) 12010 LPRINTLOC(1);" ";FNDE$(DT$);" ";P$(FNP);" ";B$(FNB);" ";USINGFM$;CVS(M$) 12020 A$=INKEY$:IFA$=""THEN12020 12030 RETURN 19000 FORZ=1TOLOF(1) 19010 GET1,Z 19020 GOSUB12000 19030 NEXTZ 20000 RN%=RN%+1:REM print record to file 20010 RN$="" 20020 FORZ1=0TO1 20030 RN$=RN$+CHR$(PEEK(VARPTR(RN%)+Z1)) 20040 NEXTZ1 20050 PRINT#1,RN$; 20100 PRINT#1,DP$;:REM print date 20200 BP$="":REM print amount 20210 FORZ1=0TO7 20220 BP$=BP$+CHR$(PEEK(VARPTR(BP)+Z1)) 20230 NEXTZ1 20240 PRINT#1,BP$; 20300 CO$=CHR$(B*16+Z):REM print code 20310 PRINT#1,CO$; 20500 REM lprint record for audit trail 20510 LPRINTUSINGFD$;RN%,DE$,P$(Z),B$(B),BP 20999 RETURN 21000 FORZ1=0TO1:REM read record from file 21010 POKEVARPTR(RN%)+Z1,ASC(INPUT$(1,1)) 21020 NEXTZ1 21100 FORZ1=1TO2:REM get date 21110 MID$(DP$,Z1,1)=INPUT$(1,1) 21120 NEXTZ1 21200 FORZ1=0TO7:REM get amount 21210 POKEVARPTR(BP)+Z1,ASC(INPUT$(1,1)) 21220 NEXTZ1 21300 CO$=INPUT$(1,1):REM get code 21310 B=ASC(CO$)\16:P=ASC(CO$)AND15 21999 RETURN 22000 DP$=CHR$(VAL(RIGHT$(D$,2))*2+VAL(D$)\8)+CHR$((VAL(D$)AND7)*32+VAL(MID$(D$,4)))'pack date 22900 RETURN 23000 DE$=RIGHT$(STR$((ASC(D$)AND1)*8+ASC(RIGHT$(D$,1))\32+100),2) 23010 DE$=DE$+"/"+RIGHT$(STR$((ASC(RIGHT$(D$,1))AND31)+100),2) 23020 DE$=DE$+"/"+RIGHT$(STR$((ASC(D$)\2)+100),2):REM unpack date 23900 RETURN 24000 DA=VAL(DATE$)-1:REM set da$ to 1 month ago 24010 YR=VAL(RIGHT$(DATE$,2)) 24020 IF DA=0 THEN DA=12:YR=YR-1 24030 D$=RIGHT$(STR$(DA+100),2)+MID$(DATE$,3,4)+RIGHT$(STR$(YR+100),2) 24040 GOSUB22000 24050 DA$=DP$ 24900 RETURN 65000 DATA 10,8 65010 DATA 0,Payment,-1,Rent,-1,Phone,-1,Electric,-1,Oil,-1,Garbage,-1,Water,-1,Sundries,-1,Washer/Dryer,-1,AT&T,-1,Food 65020 DATA 0,"Dennis Reeder",0,"David Moreland",-1,"David Lohkamp",-1,"Leonard Erickson",-1,"Joyce Zimmerschied",0,"Ramalina Steiner",0,"Sue O'Neill",0,"Bob Harland",0,"Anthony Pryor"