100 REM SILENT PARTNER 110 REM WAYNE ARNETT 120 REM 130 PRINT CHR$(142),CHR$(147) 140 PRINT TAB(11)"SILENT PARTNER" 150 PRINT TAB(11)"--------------" 160 DIM P(13),BB(12),SD(12) 170 DIM M$(12),T$(19),D(19),U(19) 180 FOR I=1TO12:READ M$(I):NEXT 190 FOR I=1TO19:READ T$(I):NEXT 200 LI$=" **************************************":REM SPACE + 38 * 210 UL$="[163][163][163][163][163][163][163][163]":REM 8 COMM. T'S 220 F1$=CHR$(133):F7$=CHR$(136) 230 DEF FNA(X)=INT((X+.005)*100)/100 240 DEF FNB(X)=INT((X+.0005)*1000)/10 250 H1$="SUMMARY STATEMENT: " 260 DATA JANUARY,FEBRUARY,MARCH,APRIL,MAY,JUNE 265 : 270 DATA JULY,AUGUST,SEPTEMBER,OCTOBER,NOVEMBER,DECEMBER 275 : 280 DATA BEGINNING BALANCE,OWNER DEPOSIT(S),RENTAL INCOME,OTHER INCOME 285 : 290 DATA TOTAL RENT & OTHER,LOAN PMT (PITI),OTHER LOAN PMTS,UTILITIES & WATER 295 : 300 DATA LANDSCAPE,CONDO FEE,REPAIR & MAINT,ADVERTISING,MISC EXPENSE 305 : 310 DATA TOTAL EXPENSE,OWNER WITHDRAWAL(S),ENDING BALANCE,SEC DEP LIABILITY 315 : 320 DATA OPERATING CASH,CASH FLOW THIS PERIOD 330 FOR I=1TO19 340 FOR J=1 TO 22-LEN(T$(I)) 350 T$(I)=T$(I)+" ":REM 1 SPACE 360 NEXT J,I:GOTO390 365 : 370 REM *** MENU 375 : 380 PRINT"[147]" 390 PRINT:PRINT 400 PRINT TAB(8)"1 - ";TAB(13)"ENTER DATA":PRINT 410 PRINT TAB(8)"2 - ";TAB(13)"READ FROM FILES":PRINT 420 PRINT TAB(8)"3 - ";TAB(13)"EXIT PROGRAM":PRINT 430 PRINTLI$:PRINT 440 PRINT TAB(7)"ENTER YOUR CHOICE - "; 450 INPUT R:ON R GOTO470,1990,2620 455 : 460 REM *** PRELIMINARY INFORMATION 465 : 470 PRINT"[147]":IF KEY=0 THEN510 480 PRINT"THERE'S ALREADY DATA IN MEMORY. NEW" 490 PRINT"ENTRIES WILL OVER-WRITE OLD DATA. " 500 PRINT:RT=1:GOTO2470 510 GOSUB2390 520 IF AD$<>""THEN560 530 PRINT"ENTER PROPERTY ADDRESS - MAX ONE LINE:" 540 PRINT ">";:INPUT AD$ 550 IF LEN(AD$)<2 THEN PRINT"MUST HAVE AN ADDRESS":GOTO540 560 AD$=LEFT$(AD$,40):LF$=LEFT$(AD$,2) 570 PRINT:PRINTLI$ 580 PRINT"ENTER ANY COMMENTS OR NOTES YOU WANT TO" 590 PRINT"APPEAR ON THE PRINTOUT - MAX 2 LINES." 600 PRINT ">";:INPUT CM$ 610 CM$=LEFT$(CM$,80) 620 PRINT:PRINTLI$:IF GS THEN RETURN 630 PRINT"ENTER NUMBER OF MONTH OF THIS SUMMARY." 640 PRINT">";:INPUT M:IF M<1 OR M>12 THEN640 645 : 650 REM *** COLLECT AND PROCESS DATA 655 : 660 PRINT"[147]ENTER AMOUNTS FOR ";M$(M):PRINT 670 FOR I=1TO17 680 IF I=5 OR I=14 OR I=16 THEN I=I+1 690 PRINTI;TAB(4)T$(I); 700 PRINT "--- ";:INPUT D(I) 710 IF I=2 OR I=4 THEN PRINTLI$ 720 NEXT:PRINTLI$:ND=1 730 PRINT"CHECK YOUR ENTRIES - ARE THERE ANY" 740 PRINT"MISTAKES? (Y/N)"; 750 INPUT R$:IF LEFT$(R$,1)="Y" THEN770 760 GOTO830 770 INPUT"ENTER LINE NO. THAT HAS AN ERROR";R 780 IF R<1 OR R>17THEN770 790 IF R=5 OR R=14 OR R=16 THEN770 800 PRINT"ENTER CORRECTION FOR LINE";R; 810 INPUT EC:D(R)=EC 820 PRINT"ANY OTHER MISTAKES? (Y/N)";:GOTO750 830 PRINT"[147]":IF PR>1000 THEN860 840 INPUT"PURCHASE PRICE";PR 850 PRINT:INPUT"DOWN PAYMENT";DP 855 : 860 PRINT:PRINTTAB(11)"PROCESSING DATA" 870 KEY=1:D(5)=D(3)+D(4) 880 FOR I=6TO13:D(14)=D(14)+D(I):NEXT 890 D(16)=D(1)+D(2)+D(5)-D(14)-D(15) 900 D(18)=D(16)-D(17) 910 D(19)=D(5)-D(14) 920 FOR I=1TO19:D(I)=FNA(D(I)):NEXT 930 IF LM>FM THEN950 940 H2$=H1$+M$(M):GOTO960 950 H2$=H1$+M$(FM)+" TO "+M$(LM) 960 IF FILE=1 THEN1220 970 PRINT"[147]DO YOU WANT TO RECORD A FILE WITH" 980 PRINT M$(M);"'S DATA? (Y/N)"; 990 INPUT R$:IF LEFT$(R$,1)<>"Y"THEN1220 995 : 1000 REM *** WRITE TO FILE 1005 : 1010 IF LM>FM THEN1040 1020 IF FILE=1 THEN1070 1030 GOTO1090 1040 PRINT:PRINT"MORE THAN ONE MONTH'S DATA IS IN" 1050 PRINT"MEMORY. SAVING THIS WILL CAUSE FILE" 1060 PRINT"ERROR!":PRINT:GOTO2430 1070 PRINT:PRINT"DON'T TRY TO RESAVE SAME DATA" 1080 PRINT:GOTO2430 1090 PRINTLI$:PRINT"BE SURE DISK DRIVE IS READY TO RECORD." 1100 PRINT:RT=2:GOTO2470 1110 CLOSE1 1120 NA$="0:"+LF$+M$(M)+",S,W" 1130 PRINT NA$:OPEN1,8,9,NA$ 1140 PRINT#1,M 1150 FOR J=1TO13:IF J=5 THEN J=6 1160 PRINT#1,D(J):NEXT 1170 PRINT#1,D(15):PRINT#1,D(17) 1180 PRINT#1,PR:PRINT#1,DP 1190 PRINT#1,AD$ 1200 CLOSE1:FILE=1 1205 : 1210 REM *** PRINTOUT 1215 : 1220 PRINT"[147]BE SURE PRINTER IS ON, AND THE PAPER" 1230 PRINT:PRINT"POSITIONED FOR AN 11 INCH RUN." 1240 PRINT:PRINTLI$ 1250 IF LM>FM THEN GS=1:GOSUB580:GS=0 1260 PRINT:RT=3:GOTO2470 1270 CLOSE3:OPEN3,4 1280 PRINT#3,CHR$(14)H2$ 1290 PRINT#3:PRINT#3,AD$;CHR$(15) 1300 PRINT#3:PRINT#3,"NOTES:" 1310 PRINT#3,CM$:CM$="" 1320 FOR I=1TO39:PRINT#3,"- ";:NEXT 1330 PRINT#3:PRINT#3,CHR$(14) 1340 PRINT#3,CHR$(16)"20INCOME AND EXPENSE" 1350 PRINT#3,CHR$(15):PRINT#3 1360 M=0:T1=10:T2=5:T3=20 1370 FOR I=1TO5:IF I=3 THEN PRINT#3 1380 GOSUB1450:NEXT 1390 T1=15:T2=0:T3=13 1400 FOR I=6TO14:GOSUB1450:NEXT 1410 T1=10:T2=5:T3=20 1420 FOR I=15TO19:GOSUB1440:NEXT 1430 GOTO1570 1440 IF I=15 OR I=17 OR D(I)<0 THEN M=1 1450 U(I)=ABS(D(I)):GS=1 1460 V=U(I):GOSUB2550:R$=V$ 1470 L=LEN(R$):R$=RIGHT$(R$,L-1) 1480 PRINT#3,TAB(T1)T$(I); 1490 PRINT#3,TAB(T2)"------"; 1500 IF M THEN1520 1510 PRINT#3,TAB(T3-L)R$:GOTO1530 1520 PRINT#3,TAB(T3-(L+1));"(";R$;")" 1530 IF I=5 OR I=14 OR I=16 THEN1550 1540 GOTO1560 1550 PRINT#3,TAB(T3+43-L);RIGHT$(UL$,L-1) 1560 M=0:RETURN 1570 PRINT#3:PRINT#3:PRINT#3,CHR$(14) 1580 PRINT#3,CHR$(16)"22EXPENSE ANALYSIS" 1590 PRINT#3,CHR$(15) 1600 PRINT#3:PRINT#3,TAB(3)"EXPENSES:"; 1610 PRINT#3,TAB(13)"DOLLAR AMOUNT"; 1620 PRINT#3,TAB(5)"% TOTAL EXP."; 1630 PRINT#3,TAB(5)"% RENTAL INCOME" 1640 PRINT#3 1650 FOR I=6TO14 1660 V=D(I):GOSUB2550:R1$=V$ 1670 P1=D(I)/D(14):P1=FNB(P1) 1680 V=P1:GOSUB2610:R2$=V$ 1690 IF D(3)=0 THEN R3$="N/A":GOTO1720 1700 P2=D(I)/D(3):P2=FNB(P2) 1710 V=P2:GOSUB2610:R3$=V$ 1720 PRINT#3,TAB(3)T$(I); 1730 PRINT#3,TAB(9-LEN(R1$))R1$; 1740 PRINT#3,TAB(17-LEN(R2$))R2$; 1750 PRINT#3,TAB(19-LEN(R3$))R3$:NEXT 1760 IF PR<1000 OR D(3)=0 THEN 1970 1770 PRINT#3:PRINT#3:PRINT#3,CHR$(14) 1780 PRINT#3,CHR$(16)"19INVESTMENT ANALYSIS" 1790 PRINT#3,CHR$(15):PRINT#3 1800 GRM=PR/((D(3)/ND)*12):GRM=FNA(GRM) 1810 CF=(D(19)/ND):CF=FNA(CF) 1820 RN=(CF*12)/DP:RN=FNB(RN) 1830 BE=(D(14)/ND):BE=FNA(BE) 1840 GS=0:V=PR:GOSUB2550:PR$=V$ 1850 PRINT#3,"PURCHASE PRICE: ";PR$; 1860 V=DP:GOSUB2550:DP$=V$ 1870 PRINT#3,TAB(20)"DOWN PAYMENT: ";DP$ 1880 PRINT#3,"GROSS RENT MULTIPLIER =";GRM; 1890 IF CF<0 THENCF$=STR$(CF):GOTO1910 1900 V=CF:GOSUB2550:CF$=V$ 1910 PRINT#3,TAB(4)"AVERAGE OR PRESENT CASH FLOW: ";CF$ 1920 PRINT#3,"RETURN AS AN (ANNUALIZED) PERCENTAGE OF DOWN PAYMENT: "; 1930 PRINT#3,RN;"%" 1940 V=BE:GOSUB2550:BE$=V$ 1950 PRINT#3,"MONTHLY RENT NEEDED TO BREAK EVEN BASED "; 1960 PRINT#3,"ON CURRENT/AVE EXPENSES: ";BE$ 1970 CLOSE3:GOTO380 1975 : 1980 REM *** READFROM FILE 1985 : 1990 IF KEY=0 AND FILE=0 THEN2030 2000 PRINT"[147]THERE IS DATA IN MEMORY WHICH WILL BE" 2010 PRINT"LOST WHILE READING FROM FILES.":PRINT 2020 PRINT:RT=4:GOTO2470 2030 GOSUB2390 2040 PRINT:PRINT"[147]BE SURE DISK DRIVE IS READY WITH THE" 2050 PRINT"CORRECT FILE DISK INSERTED." 2060 PRINTLI$ 2070 PRINT"ENTER NUMBER OF FIRST MONTH TO BE READ" 2080 PRINT"FROM FILES INTO MEMORY." 2090 PRINT:INPUT"FIRST MONTH";FM 2100 IF FM<1 OR FM>12 THEN2090 2110 PRINT:PRINT"TO READ MORE THAN ONE FILE (FOR A" 2120 PRINT"SUMMARY) ENTER NUMBER OF LAST MONTH." 2130 PRINT"OTHERWISE, HIT RETURN WITHOUT A NUMBER." 2140 PRINT:INPUT"LAST MONTH";LM 2150 IF LM<2 THEN LM=FM:ND=1:GOTO2180 2160 IF LM>12 OR LM""THEN2220 2190 PRINT:PRINT"ENTER FIRST 2 CHARACTERS OF THE" 2200 INPUT"PROPERTY'S ADDRESS";LF$ 2210 LF$=LEFT$(LF$,2) 2220 PRINT:CLOSE1 2230 FOR I=FM TO LM 2240 NA$=LF$+M$(I) 2250 PRINT NA$:OPEN1,8,9,NA$ 2260 INPUT#1,M:INPUT#1,BB(I) 2270 FOR J=2TO13:IF J=5 THEN J=6 2280 INPUT#1,P(J):D(J)=D(J)+P(J):NEXTJ 2290 INPUT#1,OW:D(15)=D(15)+OW 2300 INPUT#1,SD(I) 2310 INPUT#1,AA:IF AA>1000 THEN PR=AA 2320 INPUT#1,BB:IF BB>100 THEN DP=BB 2330 INPUT#1,AD$ 2340 CLOSE1:NEXTI 2350 FILE=1:D(1)=BB(FM):D(17)=SD(LM) 2360 GOTO860 2365 : 2370 REM *** SUBROUTINES 2375 : 2380 REM SET VARIABLES TO ZERO 2390 FOR I=1TO19:D(I)=0:NEXT 2400 FILE=0:KEY=0:FM=0:LM=0 2410 RETURN 2420 REM FUNCTION KEYS 2430 PRINT TAB(6)"<<< PRESS 'F1' FOR MENU >>>":PRINTLI$ 2440 GET R$:IF R$=""THEN2440 2450 IF R$=F1$ THEN380 2460 GOTO2440 2470 PRINT TAB(6)"<<< PRESS 'F1' FOR MENU >>>" 2480 PRINT:PRINT TAB(12)"'F7' TO PROCEED":PRINTLI$ 2490 GET R$:IF R$=""THEN2490 2500 IF R$=F1$ THEN380 2510 IF R$=F7$ THEN2530 2520 GOTO2490 2530 ON RT GOTO510,1110,1270,2030 2540 REM DECIMAL PLACEMENT 2550 V$=STR$(INT(V))+"."+RIGHT$(STR$(V*100),2) 2560 IF V=0 THEN V$="00.00" 2570 IF GS THEN RETURN 2580 V$="$"+RIGHT$(V$,LEN(V$)-1) 2590 IF V<0THEN V$="("+V$+")" 2600 RETURN 2610 V$=STR$(INT(V))+"."+RIGHT$(STR$(V*10),1):RETURN 2620 PRINT"[147]PROGRAM OVER - TO RESTART WITHOUT LOSS" 2630 PRINT"OF DATA, ENTER 'GOTO 380'" 2640 END