3 REM GKCOST: PRICE/EARNINGS RATIO CALCULATION 10 REM 20 REM **** SANT'S PRICE EARNINGS RATIO PROGRAM ***************** 30 REM 50 REM Y IS THE INDEX FOR START AND END OF PERIOD IN YEARS 60 REM G IS THE GROWTH RATE FOR THAT PERIOD 70 REM K IS THE RISK DISCOUNT RATE FOR THAT PERIOD 80 REM P IS THE PAYOUT RATE FOR DIVIDENDS FOR THAT PERIOD 90 REM F IS THE PRIOR EPS FOR THAT PERIOD 100 REM C IS THE COMPOUND GROWTH FACTOR FOR THAT PEROID 110 REM E IS THE PRESENT PERIOD EPS 120 REM S IS THE SUM OF DIVIDENDS AND DISCOUNTED STOCL CK PRICE 130 REM FOR THAT SEGMENT 140 REM D IS THE DISCOUNTED VALUE OF THE DIVIDENDS FOR THAT SEGMENT 160 REM R IS THE DISCOUNTED PRICE OF THE NEXT SEGMENT 170 REM DISCOUNTED BACK TO THE BEGINNING OF THIS SEGMENT 180 REM V IS THE NET PRESENT VALUE 190 OPEN'DATA.DAT' AS FILE1%:DIM #1%,Y(20,2),G(20),K(20),P(20),F(20), C(20),E(20),S(20),D(20),R(20),V(20) 220 REM 230 MAT Y=ZER:MAT G=ZER:MAT K=ZER:MAT P=ZER:MAT F=ZER:MAT C=ZER: MAT E=ZER:MAT S=ZER:MAT D=ZER:MAT R=ZER:MAT V=ZER 340 PRINT TAB(20);'SHARE PRICE (P/E) CALCULATIONS':PRINT:PRINT 365 INPUT'DO YOU WISH DIRECTIONS';D$:IFMID(D$,1,1)='N' THEN 860 390PRINT:PRINT 400PRINTTAB(20);'SHARE PRICE (P/E) CALCULATIONS' 410 PRINT:PRINT 420PRINT'THIS PROGRAM CALCULATES THE THEORETICAL P/E RATIO FOR' 430 PRINT 'A GIVEN FIRM.' 440 PRINT"IT TAKES ADVANTAGE OF THE FACT THAT MOST FIRM'S FINANCIAL" 450 PRINT"FUTURE MAY BE THOUGHT OF AS YEARS SEGMENTED INTO' 470 PRINT"THE FIRM'S GROWTH RATE, DIVIDENT PAY-OUT RATIO AND DISCOUNT" 480 PRINT"RATE ARE ASSUMED CONSTANT. THE COMMON STOCK P/E" 490 PRINT"RATIO IS CALCULATED ASSUMING AN INITIAL EPS OF $1.00, TO GET" 500 PRINT"THE THEORETICAL MARKET PRICE OF THE STOCK, YOU NEED ONLY" 510 PRINT"MULTIPLY THE P/E RATIO BY THE ACTUAL BEGINNING EPS." 520 PRINT 530 PRINT"TO USE THIS PROGRAM, SEGMENT YOUR FIRM'S FUTURE INTO" 540 PRINT"YEARS OF SIMILAR FINANCIAL NATURER, THEN INPUT THE START-" 550 PRINT"ING YEAR AND ENDING YEAR OF EACH SEGMENT AS WELL AS ITS " 560 PRINT"CHARACTERISTIC GROWTH RATE, PAYOUT RATIO, AND DISCOUNT RATE" 570 PRINT"FOR EACH SEGMENT. FOR YOUR FINAL ENDING YEAR, TYPE'0'." 580 PRINT"THE PROGRAM USES AN INFINITE MODEL FOR THE LAST YEAR." 590 PRINT 600 PRINT"BE SURE TO REMEMBER THAT WHEN ENTERING RATIOS AND RATES" 610 PRINT"PERCENTAGES ARE INPUTED AS '33', NOT '.33' OR '33%'." 620 PRINT 630 PRINT"THERE ARE TWO OUTPUT FORMATS, A LONG AND SHORT FORM." 640 PRINT"THE LONG FORM PRINTS OUT ALL INTERMEDIATE CALCULATIONS" 650 PRINT"WHILE THE SHORT FORM PRINTS OUT JUST THE ANSWER." 660 PRINT 670 PRINT"YOU MAY RERUN THIS PROGRAM USING A MODIFIED VERSION OF" 680 PRINT"YOUR INTIALLY INPUTED DATA. YOU MAY MODIFY THE" 700 PRINT" 'NO' CHANGE IN EXISTING VALUES" 710 PRINT" 'INDIVIDUALLY' CHANGE EACH SEGMENT'S VALUE" 720 PRINT" 'PERCENTAGE' CHANGE IN ALL SEGMENT VALUES" 730 PRINT" 'ONE' NEW VALUE TO BE APPLIED TO ALL SEGMENTS" 740 PRINT 860 PRINT:PRINT 870 INPUT'HOW MANY SEGMENTS WILL YOU USE (MAX IS 20)';N 890 PRINT 900 PRINT"PLEASE INPUT YOU DATA IN THE FOLLOWING ORDER, SEPARATED BY" 910 PRINT"COMMAS:" 920PRINT 930 PRINT"STARTING YEAR, ENDING YEAR, GROWTH RATE, PAYOUT RATIO," 940 PRINT"DISCOUNT RATE" 950 PRINT 960 FOR I=1 TO N 970 INPUT Y(I,1),Y(I,2),G(I),P(I),K(I) 980 IF G(I)=0 THEN 1000 990 G(I)=G(I)/100 1000 I FP(I)=0 THEN 1020 1010 P(I)=P(I)/100 1020 IF K(I)=0 THEN 1040 1030 K(I)=K(I)/100 1040 NEXT I 1050 PRINT 1060 PRINT"'LONG'OR 'SHORT' FORMAT"; 1070 INPUT C$ 1080 IF MID(C$,1,1)='L' THEN 1120 1090 IF MID(C$,1,1)='S' THEN 1120 1100 PRINT"UNACCEPTABLE ANSWER - TRY AGAIN" 1110 GOTO 1060 1120 E(1)=1 1130 FOR I=2 TO N 1140 F(I)=E(I-1) 1150 C(I)=(1+G(I-1))^(Y(I-1,2)-Y(I-1,1)+1) 1160 E(I)=F(I)*C(I) 1170 NEXT I 1180 I=N 1190 Y(I,2)=0 1200 IF K(I)>G(I) THEN 1230 1210 V(I)=1 1220 GOTO 1240 1230 V(I)=(1+G(I))/(K(I)-G(I)) 1240 S(I)=V(I)*P(I)*E(I) 1250 D(I)=S(I) 1260 R(I)=0 1270 I=I-1 1280 IF I=0 THEN 1390 1290 L=Y(I,2)-Y(I,1)+1 1300 R(I)=S(I+1)/(1+K(I))^L 1310 T1=(1+G(I))/(1+K(I)) 1320 V(I)=0 1330 FOR J=1 TO L 1340 V(I)=V(I)+T1^J 1350 NEXT J 1360 D(I)=V(I)*P(I)*E(I) 1370 S(I)=D(I)+R(I) 1380 GOTO 1270 1390 PRINT 1400 PRINT 1410 PRINT:PRINT 1420 PRINT TAB(20);"SHARE PRICE (P/E) CALULATIONS" 1430 PRINT:PRINT 1440 IF MID(C$,1,1)='S' THEN 1520 1450 PRINT'SEGMENT YEARS GROWTH DIVIDEND DISCOUNT' 1460 PRINT' NO. S E RATE PAYOUT RATE' 1470 PRINT 1480 FOR I=1 TO N 1490 PRINT USING ' ## ### ### #.### #.### #.###', I,Y(I,1),Y(I,2),G(I),P(I),K(I) 1500 NEXT I 1510 GOTO 1620 1520 PRINT'SEGMENT YEARS GROWTH DIVIDEND DISCOUNT TOTAL' 1540 PRINT' NO. S E RATE PAYOUT RATE VALUE' 1560 PRINT 1570 FOR I=1 TO N 1580 PRINT USING' ## ### ### #.### #.### #.### ####.###',I,Y(I,1),Y(I,2),G(I),P(I),K(I),S(I) 1590NEXT I 1600 GOTO 1790 1610 REM 1620 PRINT 1630 PRINT 1640 PRINT'PRIOR COMPOUND CURRENT DIVIDEND G-P.V. SEGMENT' 1660 PRINT'SEGMENT X GROWTH = BEGINNING X PAYOUT X DISCOUNT = DIVIDEND' 1680 PRINT'EPS FACTOR EPS RATIO FACTOR VALUE' 1690 FOR I=1 TO N 1700 PRINT USING'####.## ####.## ####.## ####.## ####.## ####.##',F(I),C(I),E(I),P(I),V(I),D(I) 1710 NEXT I 1720 PRINT:PRINT:PRINT 1730 PRINT'SEGMENT PRICE TOTAL' 1740 PRINT'DIVIDEND + DISCOUNT = VALUE' 1750 PRINT 'VALUE' 1760 FOR I=1 TO N 1770 PRINT USING'####.## ####.## ####.##',D(I),R(I),S(I) 1780 NEXT I 1790 PRINT:PRINT 1800 PRINT'DESIRED RERUN OPTION:' 1810 PRINT"'MODIFY', 'START' OVER,'END' RUN"; 1820 INPUT A$ 1830 PRINT 1840 IF MID(A$,1,1)='M' THEN 2090 1850 IF MID(A$,1,1)='S' THEN 380 1860 IF MID(A$,1,1)='E' THEN 2820 1870 PRINT'UNACCEPTABLE OPTION - TRY AGAIN' 1900 GOTO 1800 2090 C=0 2100 PRINT'MODIFICATION OPTIONS:' 2110 PRINT"'NO' CHANGE, 'INDIVIDUALLY', 'PERCENTAGE', 'ONE' VALUE"; 2120 PRINT 2130 RESTORE 2140 READ A$ 2150 C=C+1 2160 PRINT 2170 PRINT"MODIFY ";A$;' '; 2180 INPUT B$ 2190 MAT A=ZER 2200 IF MID(B$,1,1)='N' THEN 2260 2210 IF MID(B$,1,1)='I' THEN 2320 2220 IF MID(B$,1,1)='P' THEN 2540 2230 PRINT'HOW MANY SEGMENTS'; 2240 PRINT'UNACCEPTABLE REQUEST - TRY AGAIN' 2250 GOTO 2170 2260 IF C<>3 THEN 2140 2270 PRINT 2280 PRINT'DIRECTIONS THIS RERUN'; 2290 INPUT D$ 2300 IF MID(D$,1,1)='Y' THEN 380 2310GOTO 1050 2320 REM INDIVIDUAL CHANGES 2330 PRINT'HOW MANY SEGMENTS'; 2340 INPUT A 2350 PRINT'WHICH ONES'; 2360 MAT INPUT A(A) 2370 FOR I=1 TO N 2380 FOR J=1 TO A 2390 IF I<>A(J) THEN 2510 2400 PRINT'SEGMENT ';I;' '; 2410 ON C GOTO 2420,2450,2480 2420 INPUT G(I) 2430 G(I)=G(I)/100 2440 GOTO 2520 2450 INPUT P(I) 2460 P(I)=P(I)/100 2470 GOTO 2520 2480 INPUT K(I) 2490 K(I)=K(I)/100 2500 GOTO 2520 2510 NEXT J 2520 NEXT I 2530 GOTO 2260 2540 REM A PERCENTAGE CHANGE IN VALUE 2550 PRINT'WHAT PERCENTAGE CHANGE DO YOU WISH'; 2560 INPUT A 2570 A=A+100 2580 IF A>0 THEN 2610 2590 PRINT'NEW PERCENTAGE IS LESS THAN ZERO - RETYPE' 2600 GOTO 2550 2610 FOR I=1 TO N 2620 ON C GOTO 2630,2650,2670 2630 G(I)=A*G(I)/100 2640 GOTO 2680 2650 P(I)=A*P(I)/100 2660 GOTO 2680 2670 K(I)=A*K(I)/100 2680 NEXT I 2690 GOTO 2260 2700 PRINT'WHAT ONE VALUE DO YOU WISH'; 2710 INPUT A 2720 FOR I=1 TO N 2730 ON C GOTO 2740,2760,2780 2740 G(I)=A/100 2750 GOTO 2790 2760 P(I)=A/100 2770 GOTO 2790 2780 K(I)=A/100 2790 NEXT I 2800 GOTO 2260 2810 DATA 'GROWTH RATE','PAYOUT RATIO','DISCOUNT RATE' 2820 CLOSE 1%:KILL'DATA.DAT':END