1  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
2  REM
3  REM       GKCOST: PRICE/EARNINGS RATIO CALCULATION
4  REM
5  REM       36515 REV A
6  REM
7  REM ****  CONTRIBUTED PROGRAM  ***********************************
10  REM
20  REM ***** SANT'S PRICE EARNINGS RATIO PROGRAM *****
30  REM
40  REM
50  REM Y IS 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 PERIOD
110  REM E IS THE PRESENT PERIOD EPS
120  REM S IS THE SUM OF DIVIDENDS AND DISCOUNTED STOCK PRICE
130  REM    FOR THAT SEGMENT
140  REM D IS THE DISCOUNTED VALUE OF THE DIVIDENDS FOR
150  REM   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  DIM Y[20,2],G[20],K[20],P[20],F[20],C[20]
200  DIM E[20],S[20],D[20],R[20],V[20]
210  DIM A$[21],B$[21],C$[10],D$[10]
220  REM
230  MAT Y=ZER
240  MAT G=ZER
250  MAT K=ZER
260  MAT P=ZER
270  MAT F=ZER
280  MAT C=ZER
290  MAT E=ZER
300  MAT S=ZER
310  MAT D=ZER
320  MAT R=ZER
330  MAT V=ZER
340  PRINT TAB(20);"SHARE PRICE (P/E) CALCULATIONS"
350  PRINT LIN(2)
360  PRINT "DO YOU WISH DIRECTIONS ";
370  INPUT D$
380  IF D$[1,1]="N" THEN 860
390  PRINT LIN(2)
400  PRINT TAB(20);"SHARE PRICE (P/E) CALCULATIONS"
410  PRINT LIN(2)
420  PRINT "THIS PROGRAM CALCULATES THE THEORETICAL P/E RATIO FOR";
430  PRINT " A GIVEN FIRM."
440  PRINT "IT TAKES ADVANTAGE OF THE FACT THAT MOST FIRMS' FINANCIAL";
450  PRINT " FUTURE MAY"
460  PRINT "BE THOUGHT OF AS YEARS SEGMENTED INTO PERIODS OF SIMILAR";
470  PRINT " FINANCIAL "
480  PRINT "POLICY.  WITHIN EACH SEGMENT, THE FIRM'S GROWTH RATE,";
490  PRINT " DIVIDEND PAY-"
500  PRINT "OUT RATIO AND DISCOUNT RATE ARE ASSUMED CONSTANT.  THE";
510  PRINT " COMMON STOCK"
520  PRINT "P/E RATIO IS CALCULATED ASSUMING AN INITIAL EPS OF $1.00.";
530  PRINT " TO GET THE"
540  PRINT "THEORETICAL MARKET PRICE OF THE STOCK, YOU NEED ONLY";
550  PRINT " MULTIPLY THE P/E"
560  PRINT "RATIO BY THE ACTUAL BEGINNING EPS."
570  PRINT 
580  PRINT "TO USE THIS PROGRAM, SEGMENT YOUR FIRM'S FUTURE INTO";
590  PRINT " YEARS OF SIMILAR"
600  PRINT "FINANCIAL NATURE, THEN INPUT THE STARTING YEAR AND ENDING";
610  PRINT " YEAR OF EACH"
620  PRINT "SEGMENT AS WELL AS ITS CHARACTERISTIC GROWTH RATE,";
630  PRINT " PAYOUT RATIO, AND"
640  PRINT "DISCOUNT RATE FOR EACH SEGMENT.  FOR YOUR FINAL ENDING";
650  PRINT " YEAR, TYPE '0'."
660  PRINT "THE PROGRAM USES AN INFINITE MODEL FOR THE LAST YEAR."
670  PRINT 
680  PRINT "BE SURE TO REMEMBER THAT WHEN ENTERING RATIOS AND RATES";
690  PRINT " PERCENTAGES"
700  PRINT "ARE INPUTED AS '33' , NOT '.33' OR '33%' ."
710  PRINT 
720  PRINT "THERE ARE TWO OUTPUT FORMATS, A LONG AND SHORT FORM."
730  PRINT "THE LONG FORM PRINTS OUT ALL INTERMEDIATE CALCULATIONS ";
740  PRINT "WHILE THE"
750  PRINT "SHORT FORM PRINTS OUT JUST THE ANSWER."
760  PRINT 
770  PRINT "YOU MAY RERUN THIS PROGRAM USING A MODIFIED VERSION OF YOUR ";
780  PRINT "INTIALLY"
790  PRINT "INPUTED DATA.  YOU MAY MODIFY THE DESIGNATED CATEGORY ";
800  PRINT "AS FOLLOWS:"
810  PRINT 
820  PRINT "            'NO' CHANGE IN THE EXISTING VALUES"
830  PRINT "            'INDIVIDUALLY' CHANGE EACH SEGMENT'S VALUE"
840  PRINT "            'PERCENTAGE' CHANGE IN ALL SEGMENT VALUES"
850  PRINT "            'ONE' NEW VALUE TO BE APPLIED TO ALL SEGMENTS"
860  PRINT LIN(2)
870  PRINT "HOW MANY SEGMENTS WILL YOU USE (MAX IS 20) ";
880  INPUT N
890  PRINT 
900  PRINT "PLEASE INPUT YOUR DATA IN THE FOLLOWING ORDER, SEPARATED ";
910  PRINT "BY COMMAS:"
920  PRINT 
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  LET G[I]=G[I]/100
1000  IF P[I]=0 THEN 1020
1010  LET P[I]=P[I]/100
1020  IF K[I]=0 THEN 1040
1030  LET K[I]=K[I]/100
1040  NEXT I
1050  PRINT 
1060  PRINT "'LONG' OR 'SHORT' FORMAT ";
1070  INPUT C$
1080  IF C$[1,1]="L" THEN 1120
1090  IF 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 LIN(2)
1420  PRINT TAB(20);"SHARE PRICE (P/E) CALCULATIONS"
1430  PRINT LIN(2)
1440  IF C$[1,1]="S" THEN 1520
1450  PRINT  USING 1910
1460  PRINT  USING 1940
1470  PRINT 
1480  FOR I=1 TO N
1490  PRINT  USING 1970;I,Y[I,1],Y[I,2],G[I],P[I],K[I]
1500  NEXT I
1510  GOTO 1620
1520  PRINT  USING 1920
1530  PRINT  USING 1930
1540  PRINT  USING 1950
1550  PRINT  USING 1960
1560  PRINT 
1570  FOR I=1 TO N
1580  PRINT  USING 1980;I,Y[I,1],Y[I,2],G[I],P[I],K[I],S[I]
1590  NEXT I
1600  GOTO 1790
1610  REM
1620  PRINT 
1630  PRINT 
1640  PRINT  USING 1990
1650  PRINT  USING 2000
1660  PRINT  USING 2010
1670  PRINT  USING 2020
1680  PRINT  USING 2030
1690  FOR I=1 TO N
1700  PRINT  USING 2040;F[I],C[I],E[I],P[I],V[I],D[I]
1710  NEXT I
1720  PRINT LIN(3)
1730  PRINT  USING 2050
1740  PRINT  USING 2060
1750  PRINT  USING 2070
1760  FOR I=1 TO N
1770  PRINT  USING 2080;D[I],R[I],S[I]
1780  NEXT I
1790  PRINT LIN(2)
1800  PRINT "DESIRED RERUN OPTION:"
1810  PRINT "'MODIFY', 'START' OVER, 'END' RUN ";
1820  INPUT A$
1830  PRINT 
1840  IF A$[1,1]="M" THEN 2090
1850  IF A$[1,1]="S" THEN 380
1860  IF A$[1,1]="E" THEN 2820
1870  PRINT "UNACCEPTABLE REQUEST, PLEASE RETYPE"
1880  GOTO 1800
1890  PRINT "UNACCEPTABLE OPTION - TRY AGAIN"
1900  GOTO 1800
1910  IMAGE "SEGMENT",4X,"YEARS",4X,"GROWTH",2X,"DIVIDEND",2X,"DISCOUNT"
1920  IMAGE #,"SEGMENT",4X,"YEARS",4X,"GROWTH",2X,"DIVIDEND",2X
1930  IMAGE "DISCOUNT",2X,"TOTAL"
1940  IMAGE 2X,"NO.",6X,"S",4X,"E",4X,"RATE",4X,"PAYOUT",5X,"RATE"
1950  IMAGE #,2X,"NO.",6X,"S",4X,"E",4X,"RATE",4X,"PAYOUT"
1960  IMAGE 5X,"RATE",4X,"VALUE"
1970  IMAGE 2X,2D,5X,3D,2X,3D,4X,D.3D,4X,D.3D,5X,D.3D
1980  IMAGE 2X,2D,5X,3D,2X,3D,4X,D.3D,4X,D.3D,5X,D.3D,2X,4D.3D
1990  IMAGE #,"PRIOR  ",3X,"COMPOUND",3X,"CURRENT",5X,"DIVIDEND",3X
2000  IMAGE "G-P.V.",5X,"SEGMENT"
2010  IMAGE #,"SEGMENT X GROWTH   = BEGINNING X PAYOUT   X DISCOUNT = "
2020  IMAGE "DIVIDEND"
2030  IMAGE "EPS",7X,"FACTOR",5X,"EPS",9X,"RATIO",6X,"FACTOR",5X,"VALUE"
2040  IMAGE 4D.2D,3X,4D.2D,4X,4D.2D,5X,4D.2D,3X,4D.2D,4X,4D.2D
2050  IMAGE "SEGMENT",4X,"PRICE",6X,"TOTAL"
2060  IMAGE "DIVIDEND + DISCOUNT = VALUE"
2070  IMAGE "VALUE"
2080  IMAGE 4D.2D,4X,4D.2D,4X,4D.2D
2090  LET C=0
2100  PRINT "MODIFICATION OPTIONS:"
2110  PRINT "'NO' CHANGE, 'INDIVIDUALLY', 'PERCENTAGE', 'ONE' VALUE ";
2120  PRINT 
2130  RESTORE 2810
2140  READ A$
2150  LET C=C+1
2160  PRINT 
2170  PRINT "MODIFY ";A$;" ";
2180  INPUT B$
2190  MAT A=ZER
2200  IF B$[1,1]="N" THEN 2260
2210  IF B$[1,1]="I" THEN 2320
2220  IF B$[1,1]="P" THEN 2540
2230  IF B$[1,1]="O" THEN 2700
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 D$[1,1]="Y" THEN 380
2310  GOTO 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  GOTO C OF 2420,2450,2480
2420  INPUT G[I]
2430  LET G[I]=G[I]/100
2440  GOTO 2520
2450  INPUT P[I]
2460  LET P[I]=P[I]/100
2470  GOTO 2520
2480  INPUT K[I]
2490  LET 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  LET 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  GOTO C OF 2630,2650,2670
2630  LET G[I]=A*G[I]/100
2640  GOTO 2680
2650  LET P[I]=A*P[I]/100
2660  GOTO 2680
2670  LET 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  GOTO C OF 2740,2760,2780
2740  LET G[I]=A/100
2750  GOTO 2790
2760  LET P[I]=A/100
2770  GOTO 2790
2780  LET K[I]=A/100
2790  NEXT I
2800  GOTO 2260
2810  DATA "GROWTH RATE","PAYOUT RATIO","DISCOUNT RATE"
2820  END 
