Listing of file='STOCKM.BAS;01' on disk='vmedia/taylor-sideA-sector.ccvf'
1 PRINT CHR$ (12) 10 PRINT TAB( 25);"STOCK MARKET" 20 IF P8* P9= 12THEN 9100 30 PRINT :PRINT :PRINT 50 PRINT "HI. I'M YOUR LOCAL STOCK BROKER. I'LL BE HAPPY TO " 51 PRINT "OPEN AN ACCOUNT FOR YOU. " 52 PRINT :INPUT "WHAT IS YOUR NAME? ";N$ 60 X= LEN (N$) 70 PRINT :PRINT "DO YOU HAVE A FAVORITE NUMBER THAT I CAN USE FOR YOUR ACCOUNT?" 72 PRINT :PRINT "PLEASE TYPE ONLY NUMERICAL CHARACTERS, NO , OR - OR OTHER." 80 PRINT " ";:INPUT Y 90 Y1= INT (Y/ 10):Y2= Y- 10* Y1 95 FOR F= 1TO Y2:Y1= RND (X):NEXT F 100 DIM S(5),P(5),Z(5),C(5) 110 T5= 0:X9= 0:N1= 0:N2= 0:E1= 0:E2= 0 115 D6= 0:K3= 1:X9= 0 120 FOR F= 1TO 5:P(F)= 0:Z(F)= 0:NEXT F 130 C= 10000 200 PRINT "DO YOU WANT THE INSTRUCTIONS? (YES OR NO) " 210 INPUT Y$ 220 PRINT CHR$ (12) 230 IF Y$< "Y"THEN 300 235 REM ***************INSTRUCTIONS****************** 240 PRINT " THIS PROGRAM PLAYS THE STOCK MARKET." 250 PRINT "YOU WILL BE GIVEN $10,000 AND MAY BUY OR SELL STOCKS." 260 PRINT "THE STOCK PRICES WILL GO UP AND DOWN RANDOMLY AND" 270 PRINT "THEREFORE, THIS MODEL DOES NOT REPRESENT EXACTLY WHAT" 280 PRINT "HAPPENS ON THE EXCHANGES." 290 PRINT :PRINT "A TABLE OF AVAILABLE STOCKS, THEIR PRICES, AND THE NUMBER OF" 291 PRINT "SHARES IN YOUR PORTFOLIO WILL BE PRESENTED." 292 PRINT "FOLLOWING THIS, INITIALS OF EACH STOCK WILL BE PRESENTED " 293 PRINT "WITH A QUESTION MARK.":PRINT 294 PRINT :PRINT "TO BUY A STOCK, TYPE +NNN, WHERE NNN IS THE NUMBER" 295 PRINT " OF SHARES YOU WISH TO BUY." 296 PRINT "TO SELL A STOCK, TYPE -NNN." 297 PRINT 298 PRINT :PRINT "A BROKERAGE FEE OF 2% WILL BE CHARGED ON ALL TRANSACTIONS." 299 PRINT :PRINT :PRINT :PRINT :INPUT "PRESS <RETURN> WHEN READY TO CONTINUE.";Y$ 300 PRINT CHR$ (12) 310 PRINT "TO GET A FEEL FOR THE MARKET," 311 PRINT "RUN THE PROGRAM FOR AT LEAST FIFTEEN WEEKS.":PRINT :PRINT 320 REM ******** INITIAL STOCK VALUES **************** 330 FOR I= 1TO 5 340 B= INT (RND (Y)* 100+ 10) 350 S(I)= B 360 NEXT I 370 REM ******** A IS SLOPE OF MARKETTREND 371 REM SAME FOR ALL STOCKS *************** 380 A= INT (10* RND (X)+ .5)/ 100 390 REM ******** T8 IS INITIAL NUMBER OF DAYS FOR 391 REM FIRST TREND************************ 400 T8= INT (4.99* RND (X)+ 1) 410 IF A< .06THEN 450 420 A= A- .11 430 PRINT "THE GENERAL MARKET TREND HAS BEEN DOWN THE LAST FEW DAYS." 440 GOTO 480 450 PRINT "THE GENERAL MARKET TREND HAS BEEN UP FOR THE LAST" 451 PRINT "FEW DAYS.":PRINT 480 PRINT "YOU HAVE $10,000 TO INVEST. USE INTEGERS FOR ALL YOUR" 481 PRINT "TRANSACTIONS. DO NOT USE $ OR , WHEN YOU TYPE THE NUMBERS.":PRINT 490 FOR F= 1TO 2000:NEXT F 500 GOSUB 2000 510 GOSUB 3000 520 GOSUB 6000 522 GOTO 7000 526 GOSUB 5000 530 D= T+ C 540 IF X9> 0THEN 560 550 PRINT "COMPUTER STOCK EXCHANGE AVERAGE: ";Z5 555 X9= 1 557 GOTO 570 560 PRINT "COMPUTER STOCK EXCHANGE AVERAGE: ";Z5;"; NET CHANGE: ";Z6 570 PRINT 580 T= INT (100* T+ .5)/ 100 590 PRINT "TOTAL STOCK ASSETS ARE $";T 600 C= INT (100* C+ .5)/ 100 610 PRINT "TOTAL CASH ASSETS ARE $";C 620 D= INT (100* D+ .5)/ 100 630 PRINT "TOTAL ASSETS ARE $";D 640 PRINT 645 GOTO 9000 650 IF D6< 12THEN 700 655 IF D6< 15THEN 690 660 PRINT "DO YOU WISH TO CONTINUE? (YES OR NO)" 670 INPUT Y$ 680 IF Y$= "NO"OR Y$= "N"THEN 1800 685 GOTO 700 690 PRINT :PRINT :INPUT "PRESS <RETURN> TO CONTINUE.";Y$ 700 K1= INT (D6/ 12):K2= D6- K1* 12 710 IF D6< 12THEN GOTO 520 720 IF K2> 4THEN GOTO 520 725 IF K3= 1THEN GOTO 730 726 K3= 1:GOTO 520 730 ON K2+ 1GOTO 8000,8200,8400,520,8600 740 GOTO 520 1800 PRINT CHR$ (12) 1810 PRINT "YOU HAVE EARNED A TOTAL OF ";Q;" IN DIVIDENDS" 1812 PRINT "OVER A PERIOD OF ";D6;" WEEKS WHICH IS A " 1814 PRINT "RATE OF RETURN OF ";INT (Q* 5.2/ D6+ .5)/ 10;"%." 1820 PRINT :PRINT "IF YOU ARE A SINGLE WAGE EARNER MAKING AN ANNUAL WAGE OF $15000" 1825 PRINT "AFTER EXEMPTIONS AND DEDUCTIONS, THEN THE TAXES DUE ON THESE" 1830 PRINT "DIVIDENDS ARE APPROXIMATELY " 1835 PRINT :PRINT " STATE OF CALIFORNIA $ "; 1840 T1= INT (9* Q+ .5)/ 100:PRINT T1 1845 PRINT " U.S.INTERNAL REVENUE "; 1850 T2= INT (30* (Q- T1)+ .5)/ 100:PRINT T2 1860 PRINT :PRINT 1870 C1= INT (100* (D- Q- 10000)+ .5)/ 100 1875 PRINT :PRINT :PRINT :PRINT "PRESS <RETURN> WHEN READY." 1876 INPUT Y$ 1880 PRINT "YOU HAVE USED 10000 FOR ";D6;" WEEKS." 1885 PRINT "YOUR EARNINGS ON THIS MONEY ARE ";C1;"." 1890 PRINT "THIS IS A RATE OF RETURN OF ";INT (C1* 5.2/ D6+ .5)/ 10;"%." 1900 PRINT :PRINT "THE TAXES ON THIS AMOUNT OF CAPITAL GAINS ARE APPROXIMATELY" 1905 PRINT :PRINT " STATE OF CALIFORNIA $ "; 1906 T3= INT (9* C1+ .5)/ 100:PRINT T3 1910 PRINT " U.S.INTERNAL REVENUE "; 1915 T4= INT (30* (C1- T3)+ .5)/ 100:PRINT T4 1920 PRINT :PRINT "THIS ASSUMES THAT NO STOCKS WERE HELD OVER SIX MONTHS." 1921 PRINT 1925 PRINT "YOUR TOTAL EARNINGS WERE $ ";D- 10000 1930 PRINT :PRINT "YOUR TOTAL EARNINGS AFTER TAXES WERE $ "; 1940 C2= D- 10000- T1- T2- T3- T4 1950 PRINT INT (C2* 100+ .5)/ 100 1960 PRINT :PRINT "THIS IS A RATE OF RETURN OF ";INT (C2* 5.2/ D6+ .5)/ 10;"%." 1990 PRINT "HOPE YOU HAD FUN!" 1995 LOAD "MENU":RUN 2000 REM SUBROUTINE TO PRINT STOCK NAMES 2010 PRINT ,"STOCK",,,"INITIALS" 2020 PRINT 2030 PRINT "INT. BALLISTIC MISSILES ","IBM" 2040 PRINT "GENEROUS MINICOMPUTERS",,"GM" 2050 PRINT "RECTANGULAR COMPONENTS ASSN.","RCA" 2060 PRINT "CORN BALL SOUNDS",,"CBS" 2070 PRINT "EVERLASTING POLITICAL ASSN.","EPA" 2080 PRINT :PRINT 2090 RETURN 3000 PRINT ,"STOCK",,"PRICE/SHARE":PRINT 3010 PRINT ,"IBM",,S(1) 3020 PRINT ,"GM",,S(2) 3030 PRINT ,"RCA",,S(3) 3040 PRINT ,"CBS",,S(4) 3050 PRINT ,"EPA",,S(5) 3060 PRINT 3070 RETURN 4000 REM *****SUBROUTINE TO COMPUTE STOCK VALUES ::::: 4010 REM N1 AND N2 ARE NUMBERS OF DAYS 4020 IF N1> 0THEN 4050 4030 I1= INT (4.99* RND (X)+ 1) 4040 N1= INT (4.99* RND (X)+ 1) 4045 E1= 1 4050 IF N2> 0THEN 4100 4060 I2= INT (4.99* RND (X)+ 1) 4070 N2= INT (4.99* RND (X)+ 1) 4080 E2= 1 4100 N1= N1- 1:N2= N2- 1 4110 REM *****LOOP THROUGH ALL STOCKS ****** 4120 FOR I= 1TO 5 4130 X1= RND (X) 4140 IF X1> .25THEN 4200 4150 X1= .25 4160 GOTO 4500 4200 IF X1> .50THEN 4250 4210 X1= .50 4220 GOTO 4500 4250 IF X1> .75THEN 4300 4270 GOTO 4500 4300 X1= 0.0 4500 W3= 0 4510 IF E1< 1THEN 4600 4520 IF INT (I1+ .5)< > INT (I+ .5)THEN 4600 4522 W3= 2:E1= 0 4524 IF E2< 1THEN 4600 4526 IF INT (I2+ .5)< > INT (I+ .5)THEN 4600 4530 W3= - 2:E2= 0 4600 REM **** C(I) IS CHANGE IN STOCK VALUE *********** 4610 C(I)= X1* A* S(I)+ W3+ A* INT (3- 6* RND (X)+ .5)/ 8 4620 C(I)= INT (8* C(I)+ .5)/ 8 4630 S(I)= S(I)+ C(I) 4640 IF S(I)> 0THEN 4700 4645 S(I)= S(I)- C(I) 4650 LETC(I)= 0 4700 S(I)= INT (8* S(I)+ .5)/ 8 4710 NEXT I 4720 REM ********AFTER T8 DAYS CHANGE THE TREND ***** 4722 T8= T8- 1 4724 IF T8< 1THEN 4730 4726 RETURN 4730 T8= INT (4.99* RND (X)+ 1) 4740 A= INT (RND (X)* 10+ .5)/ 100 4750 IF A< .06THEN 4800 4760 A= A- .1 4800 RETURN 5000 REM ***** SUBROUTINE TO COMPUTE AVERAGES ********* 5010 REM NYSE AVERAGE Z5;TEMP VALUE Z4;NET CHANGE Z6 5020 Z4= Z5 5030 Z5= 0 5040 T= 0 5050 FOR I= 1TO 5 5060 Z5= Z5+ S(I) 5070 T= T+ S(I)* P(I) 5080 NEXT I 5090 Z5= INT (100* (Z5/ 5)+ .5)/ 100 5100 Z6= INT ((Z5- Z4)* 100+ .5)/ 100 5110 RETURN 5140 PRINT " 6000 REM SUBROUTINE TO INPUT TRANSACTIONS 6010 PRINT "WHAT IS YOUR TRANSACTION IN (TYPE NUMBER OF SHARES) " 6020 INPUT " IBM ";Z(1) 6030 INPUT " GM ";Z(2) 6040 INPUT " RCA ";Z(3) 6050 INPUT " CBS ";Z(4) 6060 INPUT " EPA ";Z(5) 6070 PRINT :PRINT 6080 REM TOTAL DAY'S PURCHASES IN $:P5 6090 P5= 0 6100 REM TOTAL DAY'S SALES IN $: S5 6110 S5= 0 6120 FOR I= 1TO 5 6130 LETZ(I)= INT (Z(I)+ .5) 6140 IF Z(I)< = 0THEN 6200 6150 P5= P5+ Z(I)* S(I) 6160 GOTO 6250 6200 S5= S5- Z(I)* S(I) 6210 IF - Z(I)< = P(I)THEN 6250 6220 PRINT "YOU HAVE OVERSOLD A STOCK; TRY AGAIN." 6230 GOTO 6000 6250 NEXT I 6260 REM :::::TOTAL VALUE OF TRANSACTION :::::T5 6270 T5= P5+ S5 6280 REM ******BROKERAGE FEE:********** 6290 B5= INT (2* T5+ .5)/ 100 6300 C5= C- P5- B5+ S5 6310 IF C5> = 0THEN 6350 6315 C6= INT (100* - C5+ .5)/ 100 6320 PRINT "YOU HAVE USED $ ";C6;" MORE THAN YOU HAVE." 6330 GOTO 6000 6350 C= INT (100* C5+ .5)/ 100 6360 RETURN 7000 REM ***** SUBROUTINE TO CALCULATE NEW PORTFOLIO ** 7010 FOR I= 1TO 5 7020 P(I)= P(I)+ Z(I) 7030 NEXT I 7040 GOSUB 4000 7060 PRINT CHR$ (12) 7065 D6= D6+ 1 7070 PRINT " ****** END OF TRADING, WEEK ";D6;" ******" 7080 FOR F= 1TO 200:NEXT F 7085 PRINT 7090 PRINT "STOCK","PRICE/SHARE","HOLDINGS","NET VALUE","CHANGE" 7095 PRINT :PRINT "" 7100 PRINT :PRINT "IBM",S(1);TAB( 24);P(1);TAB( 40);INT (S(1)* P(1)* 100+ .5)/ 100;TAB( 56);C(1) 7110 PRINT "GM",S(2);TAB( 24);P(2);TAB( 40);INT (S(2)* P(2)* 100+ .5)/ 100;TAB( 56);C(2) 7120 PRINT "RCA",S(3);TAB( 24);P(3);TAB( 40);INT (S(3)* P(3)* 100+ .5)/ 100;TAB( 56);C(3) 7130 PRINT "CBS",S(4);TAB( 24);P(4);TAB( 40);INT (S(4)* P(4)* 100+ .5)/ 100;TAB( 56);C(4) 7140 PRINT "EPA",S(5);TAB( 24);P(5);TAB( 40);INT (S(5)* P(5)* 100+ .5)/ 100;TAB( 56);C(5) 7150 PRINT "" 7240 PRINT 7250 GOTO 526 8000 REM *********DIVIDEND TIME ************************ 8010 Q(2)= INT (22* S(2)+ .5)/ 1000 8020 S(2)= S(2)- 1:C(2)= - 1 8030 FOR F= 1TO 5 8040 IF F< > 2THEN C(F)= 0 8050 NEXT F 8060 K3= 0 8100 PRINT "GM HAS JUST PAID A DIVIDEND OF ";Q(2);" PER SHARE." 8110 Q5= INT (100* Q(2)* P(2)+ .5)/ 100:C= C+ Q5:Q= Q+ Q5 8115 PRINT :PRINT 8120 GOTO 7090 8200 K4= INT (10* RND (X)+ .5) 8210 IF K4< 5THEN 8300 8220 PRINT "EPA HAS DECIDED TO ISSUE A DIVIDEND OF 12.5 CENTS PER SHARE." 8230 Q5= INT (12.5* P(2)+ .5)/ 100 8235 C= C+ Q5:Q= Q+ Q5 8240 FOR F= 1TO 5:C(F)= 0:NEXT F 8245 K3= 0 8250 GOTO 7090 8300 PRINT "EPA HAS DECIDED NOT TO ISSUE A DIVIDEND THIS QUARTER DUE TO SAGGING PROFITS." 8305 PRINT :PRINT 8310 GOTO 520 8400 Q(4)= INT (9* S(2)+ .5)/ 1000 8410 S(4)= S(4)- .5:C(4)= - .5 8420 Q(3)= INT (7* S(2)+ .5)/ 1000 8430 S(3)= S(3)- .25:C(3)= - .25 8440 C(1)= 0:C(2)= 0:C(5)= 0 8460 K3= 0 8490 PRINT "RCA PAYS A DIVIDEND OF ";Q(3);" PER SHARE." 8500 PRINT "CBS PAYS A DIVIDEND OF ";Q(4);" PER SHARE." 8520 Q5= INT (100* Q(4)* P(4)+ .5)/ 100+ INT (100* Q(3)* P(3)+ .5)/ 100 8521 C= C+ Q5:Q= Q+ Q5 8525 PRINT :PRINT 8526 K3= 0 8530 GOTO 7090 8600 K2= RND (Y) 8610 IF K2< .2THEN GOTO 8700 8620 IF K2> .9THEN GOTO 8750 8630 Q(1)= INT (15* S(1)+ .5)/ 1000 8640 S(1)= S(1)- .625:C(1)= - .625 8650 FOR F= 2TO 5:C(F)= 0:NEXT F 8660 PRINT "IBM PAYS A QUARTERLY DIVIDEND OF ";Q(1);" PER SHARE." 8670 Q5= INT (100* Q(1)* P(1)+ .5)/ 100 8672 C= C+ Q5:Q= Q+ Q5 8674 K3= 0 8680 GOTO 7090 8700 PRINT "DUE TO A STRIKE AT IBM, THE QUARTERLY DIVIDEND IS REDUCED TO" 8710 PRINT ".10 PER SHARE." 8720 FOR F= 2TO 5:C(F)= 0:NEXT F 8730 Q5= INT (10* P(1)+ .5)/ 100 8732 C= C+ Q5:Q= Q+ Q5 8740 C(1)= - 3:S(1)= S(1)- 3 8745 K3= 0 8747 GOTO 7090 8750 PRINT "PROFITS AT IBM ARE UP THIS QUARTER AND SHAREHOLDERS ARE PAID" 8751 PRINT "A SPECIAL DIVIDEND THIS QUARTER OF .50 PER SHARE." 8760 S(1)= S(1)+ 2:C(1)= 2 8770 FOR F= 2TO 5:C(F)= 0:NEXT F 8780 Q5= INT (50* P(1)+ .5)/ 100:C= C+ Q5:Q= Q+ Q5 8785 K3= 0 8790 PRINT :PRINT :GOTO 7090 9000 P8= INT (RND (X)* 10+ .5) 9010 IF K5= 1THEN GOTO 9045 9020 IF P8* K2= 56THEN 9100 9030 IF PI* K2= 20THEN 9200 9040 IF P8* K2= 24THEN 9300 9045 K5= 0 9050 GOTO 650 9100 PRINT "THE COUNTRY OF DAI BAJAR ORDERED MISSILES WHICH UTILIZED" 9105 PRINT "THE ENTIRE PLANT #1 OF THE TWO PLANTS OWNED BY IBM." 9110 PRINT "HOWEVER, THAT COUNTRY HAS JUST DECLARED BANKRUPTCY AND WILL" 9120 PRINT "NOT PAY FOR ITS ORDER." 9130 PRINT "IBM STOCK IS REVALUED AT 1/2 ITS ORIGINAL VALUE." 9135 K5= 1:FOR F= 1TO 3000:NEXT F 9140 S(1)= INT (50* S(1)+ .5)/ 100 9150 C(1)= - S(1) 9155 FOR F= 2TO 5:C(F)= 0:NEXT F 9160 GOTO 7090 9200 PRINT "THE EVERLASTING POLITICAL ASSOCIATION SPONSORED A MEASURE TO " 9210 PRINT "PROHIBIT BUILDING WITHIN 5 MILES OF AN AIRPORT." 9215 PRINT "THIS BILL WAS SOUNDLY DEFEATED SINCE THE AREA AROUND THE " 9220 PRINT "AIRPORT WAS THE ONLY FLAT LAND WITHIN 50 MILES." 9230 PRINT "DONATIONS TO THE EPA SLOWED TO A TRICKLE AND THE" 9240 PRINT "VALUE OF EPA STOCK DROPPED 20%." 9250 C(5)= INT (20* S(5)+ .5)/ 100* - 1 9260 S(5)= S(5)+ C(5) 9265 K5= 1:FOR F= 1TO 3000:NEXT F 9270 FOR F= 1TO 4:C(F)= 0:NEXT F 9280 GOTO 7090 9300 PRINT "GM WAS MAKING SO MUCH PROFIT DURING THE LAST QUARTER THAT " 9310 PRINT "ANOTHER COMPANY BEGAN MAKING SIMILAR MINICOMPUTERS AT A " 9320 PRINT "LOWER COST AND SELLING PRICE. GM SALES HAVE PLUMMETED." 9330 PRINT "GM STOCK VALUE DECLINED 30%." 9335 K5= 1:FOR F= 1TO 3000:NEXT F 9340 C(2)= - INT (30* S(2)+ .5)/ 100 9350 S(2)= S(2)+ C(2) 9360 FOR F= 1TO 5 9370 IF F< > 2THEN C(F)= 0 9380 NEXT F 9390 GOTO 7090