IMD 1.16: 29/05/2007 18:55:05 FOGCPM.081 --FOGCPM081STOKBASEDOC` STOKBASETXTSTKBASE INTw STKBASE2INTy!"#$%&'()*+,-./0STKBASE3INTy123456789:;<=>?@STKGRAP2INT>ABCDEFGHSTKGRAP3INT>IJKLMNOPSTKGRAPHINT>QRSTUVWXSTKPRIC2INTXYZ[\]^_`abcSTKPRIC3INTXdefghijklmnSTKPRICEINTXopqrstuvwxyJULDATE%BASz{LINREG BAS|}~PORTPRFMBASQKSORT$ BAS QKSORT% BAS SCRNIN BASSCRNIN2 BASSCRNIN3 BASSTKFPRNTBASSTKGRAPHBAS STKHIST BASSTKPLOT BASSTKPRICEBASSTKUPDTEBASDAYHST DATSTKFIL01DATSTKPRICEDATCSTKBASELTR-06-00 86 -CPM081 DOCThis is the disk name. DOCUMENTATION FOR STOCK BASE I. INSTALLATION GUIDE Yo shoul hav th followin file availabl o th tw discs: 1) STKBASE.BAS ... main program for STKBASE.INT stkchang.bas stkcreat.bas stkadd.bas stkupdte.bas ... same as stkupdat.bas stktrans.bas ... only required for compilation juldate%.bas ... utility routines qksort$.bas scrnin.bas 2) STKPRICE.BAS ... main program for STKPRICE.INT stkhist.bas stkupdat.bas stkprfm.bas stkfprnt.bas juldate%.bas ... utility routines qksort$.bas qksort%.bas scrnin.bas 3) STKGRAPH.BAS ... main program for STKGRAPH.INT stkplot.bas stkbeta.bas linreg.bas portprfm.bas qksort%.bas ... utility routines scrnin.bas 4) CBASIC run-time files stkbase.int stkprice.int stkgraph.int T produc a operabl disc cop th thre IN file t on disc Thi ca the b inserte int th drive Plac th CBASI ru tim interprete i dis A Issu th command: CRUN2 B:STKBASE Th messag t loa th program dis i dis an a empt dis fo storin dat o dis shoul appea o th screen. Not tha al sourc file ar provided Comment i th mai program provid list o subroutine require fo eac compilation Thes ar th sam a give above bu th individua listing provid more information. Th progra i writte t writ t th Osborn OM- monito an prin t a Okidat 82 i expande 13 colum prin mode Fo differen printer th printe routine i fil SCRNIN.BA shoul b change an th program recompile wit CBASIC Onl tw printe commands are used: newpage$ = chr$(12) small.print$ = chr$(29). Th compresse prin output lin o 13 character t th printer. II. USER'S GUIDE sampl o wha th progra ca d fo yo ha bee writte an sen t Osborn fo inclusio i th Portabl Companion Basically th progra STOC BAS i use fo portfoli valuation A such th progra ca b use t trac th performanc o stoc portfolio Price mus b entere a regula interval b th user Se Sectio I an the file STOKBASE.TXT as well for further details. Th firs ste i usin th progra i t loa th program Th mai men wil appear I yo hav alread purchase stocks th nex ste i t creat stoc dat fil usin th CREAT DAT FIL option Thi subroutin (STKCREAT wil promp yo t ente informatio abou eac o you stocks an th detail o th purchase Whe al stock hav bee entered yo wil b prompte t ente price fo eac stock Us price fro fe day prio t th dat o entry Th nex ste have novices perform is to update the stock prices. Thi optio i selecte fro th mai men b usin th UPDAT PRICE option Th subroutin (STKUPDAT wil promp yo fo th dat o th update an fo th price o al stocks Yo wil als b aske t ente th Standar Poor 50 Industria Stoc Average Yo shoul b abl t fin thi i th busines sectio o you dail newspaper Th printe shoul no b turne on Th progra wil as i yo wis t se the updated performance summary on the screen, on the printer, or both. Afte th summary yo wil b aske i yo wis t stor th price i on o th HISTOR files eithe daily weekly monthly quarterly o yearly Th subroutin (STKHIST i use t stor th data. A thi point ther stil exist to fe dat t d prope time- serie summary Yo shoul hav a leas fiv dat point i eac histor fil befor usin th TIME-SERIE option Bu yo ca ru th HISTORICA PERFORMANC summary whic compare wher yo ar no versu th origina purchas fo th portfolio Yo ca sor th dat man different ways. Tha i essentiall wha th progra does Yo als hav th capabilit o updatin th dat files correctin errors accountin fo stoc splits an addin o deletin stocks Th versio yo receiv ma no hav th CAPITA GAIN sectio whic summarize lon an shor ter capital gains for tax purposes. Sample files provided with the program include: DAYHST.DAT STKFIL01.DAT STKPRICE.DAT Wit thes files yo ca observ th historica performanc summar printou usin optio 4 th ba char plot o pric actio an alpha-bet calculatio usin optio 6 Al file produce b th progra ar readabl b th use i Wordstar Not tha becaus thi i CBASI program "CONTRO̠ S wil paus execution s i yo wis t examin somethin o th screen, hit a control S to allow examination. III. PROGRAMMER'S GUIDE Defect i th program Th dat bas manipulatio aspect o th progra ar ver crud an brut force I yo kno o mor elegan way to store and update data, by all means, change these sections. Occasionall whe creatin file fo th firs time hav ru ou o memor an crashe th entir syste losin al m laboriousl type i data No creat file usin 2 stock an us th ad stoc feature to add additional stocks. Th stoc evaluatio procedure wer eas t writ an ar straightforward Th dat bas aspect wer muc harde t write sinc the nee t b muc mor integrated Also haven' ha muc experienc i dat bas programmin s thes section suffere accordingly. BUGS Array ar limite t 5 items Onc yo hav inpu mor tha 5 pric points th bet routin ma fai du t arra overflow Simpl re-dimensio th array i STKGRAP use i th bet calculatio an recompile I yo pla t ente lot o pric information mak sur yo hav spac availabl o th DAT dis fo backups Th onl warnin abou dis spac come whe yo initiall ru th program Observ th amoun o fre dis spac left A som point yo wil hav t cop th XXXHST.DA pric file t anothe diskett an us Wordsta t delet pric entrie s tha yo hav dis spac left Not whe usin Wordsta tha mos dat file hav fixe recor length Error will occur unless you leave the record length intact. All helpful comments will be appreciated. Please write to: Edward A. Valenzuela 2001 Wyllys Midland, Michigan 48640 Thanks. IV. INVESTING WITH STOCK BASE Persona computer an investment g naturall together Th compute o cours i a investment bu asid fro spendin money mor an mor user ar utilizin th powe o th micr t trac thei finances I th fiel o investmen analysis ther ar thre broa area o use portfoli management stoc selection an marke timing Th progra describe i thi articl fall int th portfoli managemen area PORTFOLIO MANAGEMENT usefu portfoli managemen progra woul kee trac o al bu an sel transactions allow th use t follo an trac give portfolio rea o hypothetical an provide summary fo us a ta tim o gain an losses Thi i a ambitiou lis o wishes progra fulfillin al thes de sire woul b to larg t cove i on article I thi article shal describ progra whic pro vide portfoli valuation pric histor informa tion an a analysi o "winner an losers" Othe module wil com later. WHAT THE PROGRAM WILL DO FOR YOU Th progra "STOCK.BASE i designe t provid simpl dat management First th user create an maintain dat bas o informatio abou eac stock Informatio suc a th stoc name numbe o share purchased dat purchased pric paid an stoc exchang th stoc i trade o ar entered Se Tabl fo complet listin of information maintained. TABLE 1. stock name stock exchange number shares purchase price commission paid date purchased stock symbol annual dividend Onc th basi dat fil ha bee created pric informatio i entere int separat pric files Th pric informatio i intende t b entere fro newspape reports O course use ca hav price update b accessin on o th man service available suc a Standar Poor's bu let' tr an kee th syste simpl fo now Th syste wil promp yo wit th nam o th stoc whos pric shoul b entered Th orde i alphabetical Onc pric informatio fo th entir portfoli ha bee entered th use ca hav repor printe ou o displaye o th terminal. Thi performanc repor summarize th pric actio sinc th las period Pric changes per centag changes dolla changes ar al listed Th repor i sorte i orde o wors performer t bes performer o percentag gai basis Th progra prompt fo th lates S& 50 inde value s yo hav basi fo comparin you performanc relativ t th market Th progra calculate th performanc o th entir portfoli a well. RISK-RETURN RELATIONSHIPS Historica pric file ar maintaine fo daily weekly monthly quarterly o annua prices Onc sufficien pric informatio ha bee entere t mak th analysi meaningful risk- return analysis can be performed. Th risk-retur analysi perform least- square regressio o th chang o th individua stoc price versu th change i th marke index th S& 500 Fo instance i th marke goe u b 1% an o th averag you stoc goe u b 2% you stoc woul b considere t b mor volatil tha th market Tha is you stoc jump aroun more increasin b large amoun whe th marke goe up B th sam token you stoc probabl als goe dow b large amoun than th marke inde i declinin market Th progra analyze pric change an come u wit what are known as the stocks alpha and beta. Th stock' alph i measur o th exces return provide t th investo abov th marke returns Th stock' bet i measur o th responsivenes o th stoc t change i th valu o th market Thes parameter correspon t th intercep an slop o th least-square line Alpha th intercept i measur o th retur o th stock Beta th slope i measur o th ris i th stock Th rati o alph t bet i thu measur o th retur fo give amoun o risk Knowin th relativ risk-retur relationship amon th stock i portfoli shoul hel th investo t improv the retur o lower the risk, whichever is preferred. STOCK.BAS i personalize recor keepin syste fo smal stoc portfolios I allow yo t creat an maintai dat bas consistin o stock an stoc prices Maintenanc include provision fo addin stocks deletin stocks changin informa tion accomodatin stoc split an stoc dividends Th primar stoc fil include dat consistin o names numbe o shares dat purchased origina prices commissions dividends stoc exchange an symbol Eac perio (daily weekly monthly o quarterly th use enter curren pric informatio int pric file Th progra the use th dat t prin ou th curren valuatio o th portfolio ranke b an o numbe o criteria suc a sorte b percen increase annua return dat purchased o stoc exchange Th pric fil main tain price fo u t fiv year o weekl pric fo 5 stoc portfolio modul analyze th price an print ou stoc betas estimate yearl return an print ou othe statistica informa tion ba grap showin pric actio fo th las 5 week i als displaye o th monitor. Example o th type o report availabl ar show in the Portable Companion article.  March 15, 1983 Jim Woolley FOG Disk Librarian P.O. Box 11683-A Palo Alto, California 94306 Dear Mr. Woolley, Enclose ar tw disk containin m stoc portfoli analysi progra STOC BASE Thi progra i a integrated menu- drive serie o CBASI module whic satisfies mos o th requirement o th smal investor T ge quic sampl o wha the program can do, plac DIS o th drive pu you CBASI run-tim interpreter on the A drive, and type: CRUN2 B:STKBASE th program shoul loa an as yo t plac th dat dis o driv an th program dis o driv A Befor hittin an keys tak DIS ou o th driv an pu i i th drive Th thre compile IN file ar o thi disk Plac DIS o the B drive. This disk contains sample data files. No hi an ke an typ t continu afte th nex message. The main menu should come up. Demonstration Ente optio 6 th time-serie option Whe i ask wha fil t analyze pic #1 DAYHST.DAT Whe i ask i yo wan t plo only answe i th affirmativ wit P Whe i ask i yo wan autoscaling ente A Yo shoul no se BA CHARTS of the prices for the stocks in the data files. I yo hav a Okidat 82A o printe whic use compresse prin o 13 character wid whic i accesse b th comman CHR$(29 an newpag optio o CHR$(12) the yo ca als selec optio 4 th historica performanc option Thi wil dum summar o th portfoli t th printer I you printe i different yo wil hav t chang th progra an recompile. I thi work wit you printer yo ca als ru th sam optio 6 bu withou specifyin plo only I wil no prin ou risk/retur analysis creat file BETA.DAT wit th dat o i whic ca the b sorte usin optio 9 Optio 5 th updat option ca als b ru onc th printe proble i take car of That' quic run-dow o wha th progra ca do Althoug i ma no see like much th integration th user- friendliness an th dat bas editin feature require man long hours. Documentatio fo th progra i also provided i th fil calle STOKBASE.DO an thi fil calle STOKBASE.TXT I yo hav an questions dro m note A mentione i th DO file hav submitte a articl t th Portabl Companio describin the use of the program. I' stil workin o th schedul routine whic need t b integrate wit th stoc add delete an spli routine s yo only type in an entry once. Thanks, Edward A. Valenzuela  wil no prin ou risk/retur analysis creat file BETA.DAT wit th dat o i whic ca the b sorte usin optio 9 Optio 5 th updat option ca als b ru onc th printe proble i take car of That' quic run-dow o wh1$*:(@~~6T/\S X: /\  V X:7[ 06n  U X:/3 0,3,3,6,8,11,13,16,19,21,24,26,6  7=:6~ pr  pr   7π pW.pWt65T.\ S X:VX: mt6TprtRR R R R R R!R"<# R$R%R& '6'' 7&&&6('6ۀ'' 7(((6΀)'6'' 7 )))6*'6%'' 70***66=)+TS6J*,TS6e$d4.(-TS.t6}0,/@0t63-1M&21S3t6/7h$182"$!$-8M$6$+43$152"$-5M$dn;:1'9:9t;2<; =; >; ?; @; A; B; C; D; E; F; G; H; I; J; K; L; M; N; O<PO QO RO SO TO UO VO 76$,@$- M$STOCK PORTFOLIO ANALYSIS$d4$/h$-M$CHANGE disks at this time$d4-M$PROGRAMS disk should be on DRIVE A$d4$-M$DATA files disk should be loaded on DRIVE B$d4WLp/ h$-M$Amount of FREE STORAGE area remaining $W# bytes$d4/h$-M$!$dPRESS ANY KEY TO CONTINUE $d4w 7Y6QuX\YXB:*.*Z/h$-M$Amount of FREE SPACE on DATA disk $Yp# Kbytes$d4-M$PLEASE TAKE NOTE OF DISK SPACE!$!$d4 Enter y to continue n;Z1'u$,@$- M$*** STOCK PORTFOLIO ANALYSIS ***$d4- M$ option list$$d4-M$0 = EXIT to CP/M$d4d4 EDITING FUNCTIONS$d4-M$1 = CREATE stock file$d4-M$2 = ADD/DELETE to stock file$d4-M$3 = CHANGE entries in stock file$d4-M$4 = STOCK SPLIT entry$d4d4 ANALYSIS SECTION$d4-M$5 = UPDATE stock prices$d4-M$6 = HISTORICAL performance summary$d4-M$7 = TIME-SERIES regressions$d4-M$8 = RISK/RETURN file sort$d4d4 RECORD KEEPING SECTION$d4-M$9 = BUY/SELL FILE entry$d4$/h$- M$!$dSELECT OPTION NUMBER: n;":'7}6: 76: ^9666666666 6 -6 6 6A:STKPRICEy6A:STKPRICEy6A:STKGRAPHy6A:STKGRAPHy6*F6[STOCK FILE CHANGE PROGRAM\enter stock name for data changes]F V^Y^Y7 $,@$-M$[$d4$-M$STOCK NAME:$d4$-M$INSTRUCTIONS:$d4_456\78 ` B:STKFIL01.DATP j ` 7`7 7``9G_`=!\7 ,6 46 4a`6 6 / h$-M$match not found$d4continue...? y or n?n;b1'bbsbY7 6 f @6 data file B:STKFIL01.DAT not found$d4check disk in drive B$d4enter y to continuen;b1'u6 fa`a/h$12"$-M$`=!$d412"$-M$`>!$d4-M$`<!p#d4-M$`@!$d4-M$`A!#d4-M$`B!#d4-M$`I!$d4-M$`M!#d4]T7 `a a%`<!p+`=!,`I!,`>!,`@!,`B!+`A!+`F!p+`M!+? @/ h$d12"$d4'6 g'' 7 z12"$d46 Z^45,6input another stock? y or n?7 8^^s6 \[STOCK SPLIT PROGRAM\enter stock name that split]T V_a=!\7  @/ h$-M$IS THIS THE CORRECT STOCK TO UPDATE ?$d4-M$!$dy or n?n;b1'bx7 }6by7 6 6 6 d4enter the split factor as a fraction$d4for example, if the stock splits 2 for 1$d4your present holdings double, the factor$d4is 2.00$d4if the split is 3 for 2, factor = 1.50$d4d4if a stock dividend is declared rather than$d4a split, enter the multiplicative factor$d4for example, for a 5% stock dividend,$d4the factor is 1.05$d4d4ENTER STOCK SPLIT FACTOR : n;c"'d4you have entered $c# as the split factor$d4enter y/n if this is correct/incorrect n;Z1'ZZsZn76B:STKPRICE.DATjB:STKFIL01.DATP jdad%e)f)>eecgeWhgSehXffcifWjiSfjXd%e+f+? a%k):_*l*m*n*o)p)q):r)>kkcpr a%kp+_,l,m,n,o+p+qp+r+?@ @{ss^9666666tB:DAYHST.DAT6tB:WEEKHST.DAT6tB:MONTHST.DAT6tB:QUARTHST.DAT6tB:YEARHST.DAT6`wtj`u7wu%v):>wuaw%f)>ffcifWjiSfjXw%f+?uuv6ss6@ss6ss^9666666!xDAYHST6xWEEKHST6xMONTHST6xQUARTHST6xYEARHST6`tB:x.DATyB:x.$$$zB:x.BAKtjykz-`7&{)>&{+?&v):>&vp+?&|)>&|+?``}7&f)>&f+?``6&p+?`}`v7&f)>&f+?``66Qss6@@eztY 7 6tyY 76ss6ss^96?6M6\6k6{6xDAYHST6xWEEKHST6xMONTHST6xQUARTHST6xYEARHST6`ytB:x.DATyB:x.$$$zB:x.BAKtjyk`7y&{)>&{+?&v):>&vp+?&|)>&|+?``a7@&f)>&f+?``6&f)>`a`v7v&f)>&f+?``6P6݀ss6'@etyY 76ss6'y2 `QB:STKFIL01.DAT jFILE B:STKFIL01.DAT ALREADY EXISTS$d4 do you want to continue? y or n? n;Z1'Zn7, @old file will be written to B:STKFIL01.BAK$d4B:STKFIL01.BAKB:STKFIL01.DATY76Qd4UNABLE TO RENAME OLD DATA FILE TO BACKUP$d4enter name for old stock file: 5 characters n;~1'B:~sFIL.DATB:STKFIL01.datY76do you want to continue? y or n? n;Z1'Zn7QB:STKFIL01.DATP ky7$,@$-M$STOCK PURCHASE DATA$d4$-M$STOCK NAME:$d4-M$EXCHANGE:$d4-M$NUMBER SHARES:$d4-M$PURCHASE DATE:$d4-M$TOTAL COST:$d4-M$COMMISSION:$d4-M$SYMBOL:$d4-M$DIVIDEND:$d4$-M$INSTRUCTIONS:$d4<$h/ h$12<$-M$SELECT FIELD TO BE CORRECTED$d4-M$0 = no changes$d4-M$1 = stock name 5 = total purchase cost$d4-M$2 = stock exchange 6 = commission charges$d4-M$3 = number of shares 7 = stock symbol$d4-M$4 = date purchased 8 = annual dividend$d4d4-M$!$dWHICH FIELD DO YOU WANT TO CHANGE?n;":' 7$12"$-M$dENTER A FIELD BETWEEN 0 AND 8: n;":'6/767܀/ h$12"$d4'6ɀ'' 7܀12"$d46b^966<666$6h666-M$!$dare you sure?n;b1'bybn 7{$12"$-M$!$denter y for yes or n for non;b1'6$$12"$d4by7bn76F!`9V/ h$12"$d4'6'' 712"$d46ڀ/ h$d445,6input another stock? y or n?7 82n7N6 8 7e6 @B:STKFIL01.DATP j `7 &):>6A:STKBASEy6j @B:STKFIL01.DAT j6 7I &<!):=!*I!*>!*@!*B!)A!)V!):M!)>V!6؀ @yB:STKFIL01.BAKzB:STKFIL01.DATyzY 7~66unable to rename oldfile to BAK file$d4#o;2B:STKFIL01.DATP k'6'' 7B'V! &<!p+=!,I!,>!,@!,B!+A!+p+M!+?6ր @B:STKPRICE.DATkB:STKPRICE.BAKk39\&p+,,?9b`6`` 7̀&`J!+`J!+?`K!`J!6&`J!+`J!+?`K!`J!9_@@:4 56enter name of stock7 8=!:Sm456enter exchange: NYSE, AMEX, OTC or OTHER7 8>!ms456enter number of shares purchased7 8<!X:@!456enter date: month/day/year purchased7 8456enter total purchase cost7 8A!X456enter total commission charges7 8B!Xl456ENTER STOCK SYMBOL7 8I!ls456enter stock dividend7 8M!X$,@$-M$STOCK ADD/DELETE PROGRAM$d4,@$-M$0 = return to main menu$d4-M$1 = ADD to stock file$d4-M$2 = DELETE stock from file$d4$-M$INSTRUCTIONS: enter menu selection$d4-M$!$d and hit returnn;":'7!K6![b^96!\6'y2y7'!s6"`! `"B:STKPRICE.DATjB:STKFIL01.DATP j6"rno such file: B:STKPRICE.DAT exists$d4check disk on DRIVE B$d4enter y to resumen;b1'u6"no such file: B:STKFIL01.DAT exists$d4check disk on DRIVE B$d4enter y to resumen;b1'u6"`" `"9M9S9P9J@ @B:STKFIL01.BAKP k9Y @K!K!J!J!$d4/ h$-M$INSTRUCTIONS:$d4-M$!$ENTER current stock price for :$=!$d4n;J!"'K!J!#o6$O`6#`` 7#`=!T7#`=!T6#|`6#`` 7$`G!`=!s`G!T7#`G!`G!zzzz`G!`G!S6#}`6$.`` 7$NG!`G!7$K}}6$=!$ is to be added after $}=!$d4 in the $}p# position $d4B:STKPRICE.DATjB:STKFIL01.DATP k9\`'`}7%{`F!` '%`<!p+`=!,`I!,`>!,`@!,`B!+`A!+`F!p+`M!+?'%`J!+`K!+?``''6$F!`` '%`<!p+`=!,`I!,`>!,`@!,`B!+`A!+`F!p+`M!+?'%`J!+`K!+?`}''`7&`F!` '%`<!p+`=!,`I!,`>!,`@!,`B!+`A!+`F!p+`M!+?'%`J!+`K!+?``''6& `'%`J!+`K!+?@ @$/h$!$d4UPDATING HISTORICAL PRICE FILES FOR LATEST$d4 STOCK ADDITION ... you may wish to do something$d4 else for the next few minutes ...$d4$/ h$-M$INSTRUCTIONS:$d445,6input another stock? y or n?7 826!c!s[STOCK DELETION PROGRAM\enter stock name to be deleted]T V_a=!\7(? @6(@/ h$-M$IS THIS THE CORRECT STOCK TO DELETE ?$d4-M$!$dy or n?n;b1'by7(6(6(6'ހ`)H `)HB:STKPRICE.DATjB:STKFIL01.DATP j9M``a7)9P9G```F!`6(`a`7)@9P9G```F!`6)`9P@ @`) `)B:STKPRICE.DATjB:STKFIL01.DATP j9Y9\9b9_@ @$/h$!$d4UPDATING HISTORICAL PRICE FILES FOR LATEST$d4 STOCK DELETION ... you may wish to do something$d4 else for the next few minutes ...$d4"$,@$- M$STOCK TRANSACTION FILE$d4$d4-M$0 = return to main menu$d4-M$1 = ADD to transaction file$d4-M$2 = ORIGINAL CREATION OF FILE$d4$-M$INSTRUCTIONS: enter menu selection$d4-M$!$d and hit returnn;":'7+f6+vb^96+6+wyB:TRANSACT.DATPk, yB:TRANSACT.DATPj`,y7,&k):_*)m*n*o)p)l*>6+Ȁ, y71n,-;0$,@$-M$STOCK PURCHASE DATA$d4$-M$STOCK NAME:$d4-M$BOUGHT/SOLD?:$d4-M$NUMBER SHARES:$d4-M$TRADE DATE:$d4-M$TOTAL COST:$d4-M$COMMISSION:$d4-M$SYMBOL:$d4-M$BUY/SELL PRICE:$d4$-M$INSTRUCTIONS:$d41r$h1/ h$12"$-M$SELECT FIELD TO BE CORRECTED$d4- M$0 = no changes$d4- M$1 = stock name$d4- M$2 = bought/sold$d4- M$3 = number of shares$d4- M$4 = date purchased/sold$d4- M$5 = total purchase cost$d4- M$6 = commission charges$d4- M$7 = stock symbol$d4- M$8 = price per share$d4-M$!$dWHICH FIELD DO YOU WANT TO CHANGE?n;":' 7/H$12"$-M$dENTER A FIELD BETWEEN 0 AND 8: n;":'6.7/T6/7/Ԁ/ h$d12"$d4'6/ '' 7/1 2"$d46/12"$d4/b^9661r666$6 h6616-S-M$!$dare you sure?n;b1'bybn 70N$12"$-M$!$denter y for yes or n for non;b1'6/by70[60bn70/h$12"$d412"$$d6.&<!p+=!,J!+>!,@!,B!+A!+I!,?/ h$d12"$d4'61 '' 71(12"$d46145,6input another purchase/sell? y or n?7 86, @m4 56enter B for bought, S for sold7 8>!ms456enter price per share paid7 8J!X  !!;73!!73`'`'72`V!G!'V!G!72€`V!`V!'V!'V!pD72ր``62ހ''62k`72퀓!`!`62R62+$d4enter date of current stock prices: mo/dy/yr$d4n;1'ppp$d47|`63`` 74/h$d4'63'' 7312"$d463/h$INSTRUCTIONS: ENTER stock price for $`=!$!$d4n;`J!"'7|8D63`64+`` 74`<!`K!p`<!`J!p`L!`C!`C!p74`D!p64`D!`C!dp64p74рp64݀dp`4&`K!))>`=!S&P 500/h$12"$d412"$d4/h$INSTRUCTIONS: ENTER stock price for $`=!$!$d4n;`J!"'`C!`J!`K!`K!p75`D!p65`D!`C!`K!dpd4You now have a chance to correct input errors$d4any price changes ? (y/n)?n;Z1'ZnZN 76967|enter number of stock for price changen;":'<!J!pprice for $=!$ is $J!#d4enter correct price n;J!"'<!K!p<!J!pL!C!C!p77CD!p67ZD!C!dpp77mp67ydp66$d4'67'' 7712"$d467$d4J ***** STOCK PRICE UPDATE *****$d4d4number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4`78i/`8h$d468/h$d4/ h$d4`J!`K! ### / stock name / ##.### ##.### ###.###c`p#5`=!$5`K!#5`J!#5#d4&p+,,?`69`` 79,&`J!+`K!+?69&`J!+`K!+?@69e6969696:6:6:v6:6:6: &`<!):`=!*`I!*`>!*`@!*`B!)`A!)`F!):`M!)>`69`` 799G69&):**>&`J!)`K!)>`6:`` 7:9P6:  &`<!p+`=!,`I!,`>!,`@!,`B!+`A!+`F!p+`M!+?`6:`` 7:9V6:~&p+,,?&`J!+`K!+?`6:`` 7:9_6:number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4`C!dpp77mp67ydp66$d4'67'' 7712"$d467$d4J ***** STOCK PRICE UPDAT1$*<&(@~~6T/\S X: /\  V X:7[ 06n  U X:/3 0,3,3,6,8,11,13,16,19,21,24,26,6  7=:6~ pr  pr   7π pW.pWt65T.\ S X:VX: mt6TprtRR R R R R R!R"<# R$R$R% &6&& 7%%%6'&6ۀ&& 7'''6΀(&6&& 7 (((6)&6%&& 70)))66=(*TS6J)+TS6e$d4-',TS-t6}/+.@/t62,0M%10S2t6.6h$071"$!$,7M$5$*33$041"$,4M$dn;91'898t:2;: <: =: >: ?: @: A: B: C: D: E: F: G: H: I: J: K: L: M: N2ON PN QN RN SN TN UN 76$+@$, M$STOCK PORTFOLIO ANALYSIS$d4$.h$,M$CHANGE disks at this time$d4,M$PROGRAMS disk should be on DRIVE A$d4$,M$DATA files disk should be loaded on DRIVE B$d4VLp. h$,M$Amount of FREE STORAGE area remaining $V# bytes$d4.h$,M$!$dPRESS ANY KEY TO CONTINUE $d4w 7Y6QuW\XWB:*.*Z.h$,M$Amount of FREE SPACE on DATA disk $Xp# Kbytes$d4PLEASE TAKE NOTE OF DISK SPACE!$!$d4enter y to continue n;Y1'$+@$, M$STOCK PORTFOLIO ANALYSIS$d4$,M$option list$$d4,M$0 = EXIT to CP/M$d4,M$1 = CREATE stock file$d4,M$2 = ADD/DELETE to stock file$d4,M$3 = CHANGE entries in stock file$d4,M$4 = HISTORICAL performance summary$d4,M$5 = UPDATE weekly stock prices$d4,M$6 = TIME-SERIES regressions$d4,M$7 = BUY/SELL FILE entry$d4,M$8 = STOCK SPLIT entry$d4,M$9 = RISK/RETURN f ile sort$d4$.h$, M$!$dSELECT OPTION NUMBER: n;":'76<% 7'6<% ^96H6N6T6Z6j6z666T666A:STKPRICEy6A:STKPRICEy6A:STKGRAPHy6)6 ]6A:STKGRAPHy6ZSTOCK FILE CHANGE PROGRAM[enter stock name for data changes\F]Y]Y7 \$+@$,M$Z$d4$,M$STOCK NAME:$d4$,M$INSTRUCTIONS:$d4^345[67 ` 2B:STKFIL01.DATP j ` Հ_7 Հ__:^_<!\7 6 6 Ҁ`_6 6 . h$,M$match not found$d4continue...? y or n?n;a1'aasaY7 16  @6 2data file B:STKFIL01.DAT not found$d4check disk in drive B$d4enter y to continuen;a1'u6 `8_`.h$01"$,M$_<!$d401"$,M$_=!$d4,M$_;!p#d4,M$_?!$d4,M$_@!#d4,M$_A!#d4,M$_H!$d4,M$_L!#d4\T7 qe_` `%_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+? @. h$d01"$d4&6 && 7 01"$d46 ]34,5input another stock? y or n?6 7]]s6ZSTOCK SPLIT PROGRAM[enter stock name that split\T^`<!\7 @. h$,M$IS THIS THE CORRECT STOCK TO UPDATE ?$d4,M$!$dy or n?n;a1'ax7 6ay7 +6 .6 .6 ]d4enter the split factor as a fraction$d4for example, if the stock splits 2 for 1$d4your present holdings double, the factor$d4is 2.00$d4if the split is 3 for 2, factor = 1.50$d4d4if a stock dividend is declared rather than$d4a split, enter the multiplicative factor$d4for example, for a 5% stock dividend,$d4the factor is 1.05$d4d4ENTER STOCK SPLIT FACTOR : n;b"'d4you have entered $b# as the split factor$d4enter y/n if this is correct/incorrect n;Y1'YYsYn7%6B:STKPRICE.DATjB:STKFIL01.DATP jc`c%d)e)>ddbfdWgfSdgXeebheWihSeiXc%d+e+? `%j):^*k*l*m*n)o)p):q)>jjbpr `%jp+^,k,l,m,n+o+pp+q+?@ @rr^9666J6_6t66.sB:DAYHST.DAT6sB:WEEKHST.DAT6sB:MONTHST.DAT6sB:QUARTHST.DAT6sB:YEARHST.DAT6`sj` t7t%u):>vt`v%e)>eebheWihSeiXv%e+?ttu6rr6@rr6rr^96L6Z6i6x66wDAYHST6wWEEKHST6wMONTHST6wQUARTHST6wYEARHST6`sB:w.DATxB:w.$$$yB:w.BAKsjxky-`7&z)>&z+?&u):>&up+?&{)>&{+?__|7R&e)>&e+?__6,&p+?_|_u7&e)>&e+?__6b6rr64@@eysY 76sxY 76rr64rr^96666 66SwDAYHST6(wWEEKHST6(wMONTHST6(wQUARTHST6(wYEARHST6(`sB:w.DATxB:w.$$$yB:w.BAKsjxky-`'7&z)>&z+?&u):>&up+?&{)>&{+?__`7&e)>&e+?__6&e)>_`_u7&e)>&e+?__66rr6ŀ@@eysY 7<6HsxY 7H6Hrr6y2 `B:STKFIL01.DAT jFILE B:STKFIL01.DAT ALREADY EXISTS$d4 do you want to continue? y or n? n;Y1'Yn7ހ @old file will be written to B:STKFIL01.BAK$d4B:STKFIL01.BAKB:STKFIL01.DATY786d4UNABLE TO RENAME OLD DATA FILE TO BACKUP$d4enter name for old stock file: 5 characters n;}1'~B:}sFIL.DAT~B:STKFIL01.datY76:do you want to continue? y or n? n;Y1'Yn7B:STKFIL01.DATP ky7\8MY$+@$,M$STOCK PURCHASE DATA$d4$,M$STOCK NAME:$d4,M$EXCHANGE:$d4,M$NUMBER SHARES:$d4,M$PURCHASE DATE:$d4,M$TOTAL COST:$d4,M$COMMISSION:$d4,M$SYMBOL:$d4,M$DIVIDEND:$d4$,M$INSTRUCTIONS:$d4%qG. h$01<$,M$SELECT FIELD TO BE CORRECTED$d4,M$0 = no changes$d4,M$1 = stock name 5 = total purchase cost$d4,M$2 = stock exchange 6 = commission charges$d4,M$3 = number of shares 7 = stock symbol$d4,M$4 = date purchased 8 = annual dividend$d4d4,M$!$dWHICH FIELD DO YOU WANT TO CHANGE?n;":' 78$01"$,M$dENTER A FIELD BETWEEN 0 AND 8: n;":'67D67. h$01"$d4&6{&& 701"$d46nb^9666%6q666G66e,M$!$dare you sure?n;a1'ayan 7-$01"$,M$!$denter y for yes or n for non;a1'6$01"$d4ay7Kan7X6e_:. h$01"$d4&6&& 701"$d46. h$d434,5input another stock? y or n?6 72n76Y 8 7 6Y @B:STKFIL01.DATP j `Y7@ &):>6.A:STKBASEy6 @B:STKFIL01.DAT j6 7 &;!):<!*H!*=!*?!*A!) @!)U!):L!)>6 @xB:STKFIL01.BAKyB:STKFIL01.DATxyY 766Hunable to rename oldfile to BAK file$d4#B:STKFIL01.DATP k&6y&& 7؀&U! &;!p+<!,H!,=!,?!,A!+@!+p+L!+?6l @B:STKPRICE.DATkB:STKPRICE.BAKk4l:&p+,,?:_69__ 7b&_I!+_I!+?_J!_I!6,&_I!+_I!+?_J!_I!:@@93 45enter name of stock6 7<!9Sl345enter exchange: NYSE, AMEX, OTC or OTHER6 7=!ls345enter number of shares purchased6 7;!X:?!345enter date: month/day/year purchased6 7345enter total purchase cost6 7@!X345enter total commission charges6 7A!Xk345ENTER STOCK SYMBOL6 7H!ks345enter stock dividend6 7L!X$+@$,M$STOCK ADD/DELETE PROGRAM$d4+@$,M$0 = return to main menu$d4,M$1 = ADD to stock file$d4,M$2 = DELETE stock from file$d4$,M$INSTRUCTIONS: enter menu selection$d4,M$!$d and hit returnn;":'7 6 b^96 6'qy2y7'p! 6"I`!H `!B:STKPRICE.DATjB:STKFIL01.DATP j6"no such file: B:STKPRICE.DAT exists$d4check disk on DRIVE B$d4enter y to resumen;a1'u6"Hno such file: B:STKFIL01.DAT exists$d4check disk on DRIVE B$d4enter y to resumen;a1'u6"H`" `"#::::@ @B:STKFIL01.BAKP k: @J!J!I!I!8M$d4. h$,M$INSTRUCTIONS:$d4,M$!$ENTER current stock price for :$<!$d4n;I!"'J!I!#6#個_6#__ 7#>_<!T7#;_<!T6#_6#S__ 7#_F!_<!s_F!T7#_F!_F!zzzz_F!_F!S6#F|_6#__ 7#F!_F!7#||6#<!$ is to be added after $|<!$d4 in the $|p# position $d4B:STKPRICE.DATjB:STKFIL01.DATP k:_&_|7%_E!_ &%_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?&%_I!+_J!+?__&&6$rE!__ &%_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?&%_I!+_J!+?_|&&_7&B_E!_ &%_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?&%_I!+_J!+?__&&6%_&%_I!+_J!+?@ @$.h$!$d4UPDATING HISTORICAL PRICE FILES FOR LATEST$d4 STOCK ADDITION ... you may wish to do something$d4 else for the next few minutes ...$d4/$. h$,M$INSTRUCTIONS:$d434,5input another stock? y or n?6 726 ! ZSTOCK DELETION PROGRAM[enter stock name to be deleted\T^`<!\7'Հ @6'. h$,M$IS THIS THE CORRECT STOCK TO DELETE ?$d4,M$!$dy or n?n;a1'ay7(?6(B6(B6't`(ހ `(B:STKPRICE.DATjB:STKFIL01.DATP j:__`7(::___E!_6(_`_7(::___E!_6(_:@ @`)4 `)4B:STKPRICE.DATjB:STKFIL01.DATP j::::@ @$.h$!$d4UPDATING HISTORICAL PRICE FILES FOR LATEST$d4 STOCK DELETION ... you may wish to do something$d4 else for the next few minutes ...$d4$+@$, M$STOCK TRANSACTION FILE$d4$d4,M$0 = return to main menu$d4,M$1 = ADD to transaction file$d4,M$2 = ORIGINAL CREATION OF FILE$d4$,M$INSTRUCTIONS: enter menu selection$d4,M$!$d and hit returnn;":'7*6+ b^96+56+ yB:TRANSACT.DATPk+yB:TRANSACT.DATPj`+y7+&j):^*)l*m*n)o)k*>6+^+y70+,0$+@$,M$STOCK PURCHASE DATA$d4$,M$STOCK NAME:$d4,M$BOUGHT/SOLD?:$d4,M$NUMBER SHARES:$d4,M$TRADE DATE:$d4,M$TOTAL COST:$d4,M$COMMISSION:$d4, M$SYMBOL:$d4,M$BUY/SELL PRICE:$d4$,M$INSTRUCTIONS:$d41012C2231y. h$01"$,M$SELECT FIELD TO BE CORRECTED$d4,M$0 = no changes$d4,M$1 = stock name $5 = total purchase cost$d4,M$2 = bought/sold $6 = commission charges$d4,M$3 = number of shares $7 = stock symbol$d4,M$4 = date purchased/sold $8 = price per share$d4d4,M$!$dWHICH FIELD DO YOU WANT TO CHANGE?n;":' 7.$01"$,M$dENTER A FIELD BETWEEN 0 AND 8: n;":'6.y7.6/[7/[. h$01"$d4&6/ && 7/&01"$d46/01"$d4/Xb^961606162C62626361y6,,M$!$dare you sure?n;a1'ayan 7/$01"$,M$!$denter y for yes or n for no n;a1'6/~ay7/60an70$01"$d401"$d46.@&;!p+<!,I!+=!,?!,A!+@!+H!,?. h$01"$d4&60&& 7001"$d46034,5input another purchase/sell? y or n?6 76+@l345enter B for BUY, S for SELL, SPL for SPLIT6 7=!ls=!B71_bought=!S71xsold345enter price per share 6 7I!X93 45enter name of stock6 7<!9S345enter number of shares 6 7;!X:?!345enter date: month/day/year 6 7345enter total value of trade6 7@!X345enter total commission charges6 7A!Xk345ENTER STOCK SYMBOL6 7H!ks  !!:74k!!74h_&_&742_U!F!&U!F!74_U!_U!&U!&U!pD74'__64/&&63_74>!_!_6363|$d4enter date of current stock prices: mo/dy/yr$d4n;1'ppp$d48̀_64__ 75g.h$d4&64&& 7501"$d464.h$INSTRUCTIONS: ENTER stock price for $_<!$!$d4n;_I!"'8964Ҁ_65|__ 76_;!_J!p_;!_I!p_K!_B!_B!p75_C!p66 _C!_B!dp65op76"p66.dp`6D&_J!))>_<!S&P 500.h$01"$d401"$d4.h$INSTRUCTIONS: ENTER stock price for $_<!$!$d4n;_I!"'_B!_I!_J!_J!p77_C!p67_C!_B!_J!dpd4You now have a chance to correct input errors$d4any price changes ? (y/n)?n;Y1'YnYN 7768enter number of stock for price changen;":';!I!pprice for $<!$ is $I!#d4enter correct price n;I!"';!J!p;!I!pK!B!B!p78C!p68C!B!dpp78p68ʀdp67R$d4&68&& 7801"$d468$d4J ***** STOCK PRICE UPDATE *****$d4d4number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4_79._8h$d469Ѐ.h$d4. h$d4_I!_J! ### / stock name / ##.### ##.### ###.###c_p#5_<!$5_J!#5_I!#5#d4&p+,,?_6:d__ 7:}&_I!+_J!+?6:W&_I!+_J!+?@6:6;6;*6;<6;S6;o6;6;6;6< &_;!):_<!*_H!*_=!*_?!*_A!)_@!)_E!):_L!)>_6;#__ 7;):6;&):**>&_I!)_J!)>_6;h__ 7;n:6;[ &_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?_6;__ 7;:6;&p+,,?&_I!+_J!+?_6<__ 7<$:6<number STOCK NAME OLD PRICE NEK!B!B!p78C!p68C!B!dpp78p68ʀdp67R$d4&68&& 7801"$d468$d4J ***** STOCK PRICE UPDATE *****$d4d4number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4_79._8h$d469Ѐ.h$d4. h$d4_I!_J! ### / stock name / ##.### ##.### ###.###c_p#5_<!$5_J!#5_I!#5#d4&p+,,?_6:d__ 7:}&_I!+_J!+?6:W&_I!+_J!+?@6:6;6;*6;<6;S6;o6;6;6;6< &_;!):_<!*_H!*_=!*_?!*_A!)_@!)_E!):_L!)>_6;#__ 7;):6;&):**>&_I!)_J!)>_6;h__ 7;n:6;[ &_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?_1$*<*(@~~6T/\S X: /\  V X:7[ 06n  U X:/3 0,3,3,6,8,11,13,16,19,21,24,26,6  7=:6~ pr  pr   7π pW.pWt65T.\ S X:VX: mt6TprtRR R R R R R!R"<# R$R$RQ% &6&& 7ŀ%%%6'&6߀&& 7'''6Ҁ(&6&& 7(((6)&6)&& 74)))66A(*TS6N)+TS6i$d4-',TS-t6/+.D/t62,0Q%10S2t6.6l$071"$!$,7Q$5$*37$041"$,4Q$dn;91'898t:2;: <: =: >: ?: @: A: B: C: D: E: F: G: H: I: J: K: L: M: N2ON PN QN  RN SN TN UN 76$+D$, Q$STOCK PORTFOLIO ANALYSIS$d4$.l$,Q$CHANGE disks at this time$d4,Q$PROGRAMS disk should be on DRIVE A$d4$,Q$DATA files disk should be loaded on DRIVE B$d4VLp. l$,Q$Amount of FREE STORAGE area remaining $V# bytes$d4.l$,Q$!$dPRESS ANY KEY TO CONTINUE $d4w 7]6UuW\XWB:*.*Z.l$,Q$Amount of FREE SPACE on DATA disk $Xp# Kbytes$d4PLEASE TAKE NOTE OF DISK SPACE!$!$d4enter y to continue n;Y1'$+D$, Q$STOCK PORTFOLIO ANALYSIS$d4$,Q$option list$$d4,Q$0 = EXIT to CP/M$d4,Q$1 = CREATE stock file$d4,Q$2 = ADD/DELETE to stock file$d4,Q$3 = CHANGE entries in stock file$d4,Q$4 = HISTORICAL performance summary$d4,Q$5 = UPDATE weekly stock prices$d4,Q$6 = TIME-SERIES regressions$d4,Q$7 = BUY/SELL FILE entry$d4,Q$8 = STOCK SPLIT entry$d4,Q$9 = RISK/RETURN file sort$d4$.l$, Q$!$dSELECT OPTION NUMBER: n;":'76<) 7+6<) ^96L6R6X6^6n6~666X666A:STKPRICEy6A:STKPRICEy6A:STKGRAPHy6)6 a6A:STKGRAPHy6ZSTOCK FILE CHANGE PROGRAM[enter stock name for data changes\F]Y]Y7 `$+D$,Q$Z$d4$,Q$STOCK NAME:$d4$,Q$INSTRUCTIONS:$d4^345[67 ` 6B:STKFIL01.DATP j ` ـ_7 ـ__:^_<!\7 6 6 ր`_6 6 . l$,Q$match not found$d4continue...? y or n?n;a1'aasaY7 56  @6 6data file B:STKFIL01.DAT not found$d4check disk in drive B$d4enter y to continuen;a1'u6 `<_`.l$01"$,Q$_<!$d401"$,Q$_=!$d4,Q$_;!p#d4,Q$_?!$d4,Q$_@!#d4,Q$_A!#d4,Q$_H!$d4,Q$_L!#d4\T7 ui_` `%_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+? @. l$d01"$d4&6 && 7 01"$d46 ]34,5input another stock? y or n?6 7]]s6ZSTOCK SPLIT PROGRAM[enter stock name that split\T^`<!\7 @. l$,Q$IS THIS THE CORRECT STOCK TO UPDATE ?$d4,Q$!$dy or n?n;a1'ax7 6ay7 /6 26 26 ad4enter the split factor as a fraction$d4for example, if the stock splits 2 for 1$d4your present holdings double, the factor$d4is 2.00$d4if the split is 3 for 2, factor = 1.50$d4d4if a stock dividend is declared rather than$d4a split, enter the multiplicative factor$d4for example, for a 5% stock dividend,$d4the factor is 1.05$d4d4ENTER STOCK SPLIT FACTOR : n;b"'d4you have entered $b# as the split factor$d4enter y/n if this is correct/incorrect n;Y1'YYsYn7)6B:STKPRICE.DATjB:STKFIL01.DATP jc`c%d)e)>ddbfdWgfSdgXeebheWihSeiXc%d+e+? `%j):^*k*l*m*n)o)p):q)>jjbpr `%jp+^,k,l,m,n+o+pp+q+?@ @rr^96:6N6c6x662sB:DAYHST.DAT6sB:WEEKHST.DAT6sB:MONTHST.DAT6sB:QUARTHST.DAT6sB:YEARHST.DAT6`sj`$t7t%u):>vt`v%e)>eebheWihSeiXv%e+?ttu6rr6"@rr6"rr^96P6^6m6|66ÀwDAYHST6wWEEKHST6wMONTHST6wQUARTHST6wYEARHST6`sB:w.DATxB:w.$$$yB:w.BAKsjxky-`7&z)>&z+?&u):>&up+?&{)>&{+?__|7V&e)>&e+?__60&p+?_|_u7&e)>&e+?__6f6rr68@@eysY 76sxY 76rr68rr^96666 66WwDAYHST6,wWEEKHST6,wMONTHST6,wQUARTHST6,wYEARHST6,` sB:w.DATxB:w.$$$yB:w.BAKsjxky-`+7 &z)>&z+?&u):>&up+?&{)>&{+?__`7&e)>&e+?__6&e)>_`_u7&e)>&e+?__66rr6ɀ@@eysY 7@6LsxY 7L6Lrr6y2 `B:STKFIL01.DAT jFILE B:STKFIL01.DAT ALREADY EXISTS$d4 do you want to continue? y or n? n;Y1'Yn7 @old file will be written to B:STKFIL01.BAK$d4B:STKFIL01.BAKB:STKFIL01.DATY7<6d4UNABLE TO RENAME OLD DATA FILE TO BACKUP$d4enter name for old stock file: 5 characters n;}1'~B:}sFIL.DAT~B:STKFIL01.datY76>do you want to continue? y or n? n;Y1'Yn7B:STKFIL01.DATP ky7`<Q]$+D$,Q$STOCK PURCHASE DATA$d4$,Q$STOCK NAME:$d4,Q$EXCHANGE:$d4,Q$NUMBER SHARES:$d4,Q$PURCHASE DATE:$d4,Q$TOTAL COST:$d4,Q$COMMISSION:$d4,Q$SYMBOL:$d4,Q$DIVIDEND:$d4$,Q$INSTRUCTIONS:$d4)uK. l$01<$,Q$SELECT FIELD TO BE CORRECTED$d4,Q$0 = no changes$d4,Q$1 = stock name 5 = total purchase cost$d4,Q$2 = stock exchange 6 = commission charges$d4,Q$3 = number of shares 7 = stock symbol$d4,Q$4 = date purchased 8 = annual dividend$d4d4,Q$!$dWHICH FIELD DO YOU WANT TO CHANGE?n;":' 7<$01"$,Q$dENTER A FIELD BETWEEN 0 AND 8: n;":'67H67. l$01"$d4&6&& 701"$d46rb^9666)6u666K66i,Q$!$dare you sure?n;a1'ayan 71$01"$,Q$!$denter y for yes or n for non;a1'6$01"$d4ay7Oan7\6i_:. l$01"$d4&6&& 701"$d46. l$d434,5input another stock? y or n?6 72n76] 8 76] @B:STKFIL01.DATP j `]7D &):>62A:STKBASEy6 @B:STKFIL01.DAT j6 7 &;!):<!*H!*=!*?!*A!)@!)U!):L!)>6 @xB:STKFIL01.BAKyB:STKFIL01.DATxyY 7 6#6Lunable to rename oldfile to BAK file$d4# B:STKFIL01.DATP k&6}&& 7܀&U! &;!p+<!,H!,=!,?!,A!+@!+p+L!+?6p @B:STKPRICE.DATkB:STKPRICE.BAKk4p:&p+,,?:_6=__ 7f&_I!+_I!+?_J!_I!60&_I!+_I!+?_J!_I!:@@93 45enter name of stock6 7<!9Sl345enter exchange: NYSE, AMEX, OTC or OTHER6 7=!ls345enter number of shares purchased6 7;!X:?!345enter date: month/day/year purchased6 7345enter total purchase cost6 7@!X345enter total commission charges6 7A!Xk345ENTER STOCK SYMBOL6 7H!ks345enter stock dividend6 7L!X$+D$,Q$STOCK ADD/DELETE PROGRAM$d4+D$,Q$0 = return to main menu$d4,Q$1 = ADD to stock file$d4,Q$2 = DELETE stock from file$d4$,Q$INSTRUCTIONS: enter menu selection$d4,Q$!$d and hit returnn;":'7 6 b^96 6'uy2y7't! 6"M`!L `!B:STKPRICE.DATjB:STKFIL01.DATP j6" no such file: B:STKPRICE.DAT exists$d4check disk on DRIVE B$d4enter y to resumen;a1'u6"Lno such file: B:STKFIL01.DAT exists$d4check disk on DRIVE B$d4enter y to resumen;a1'u6"L`" `"'::::@ @B:STKFIL01.BAKP k: @J!J!I!I!<Q$d4. l$,Q$INSTRUCTIONS:$d4,Q$!$ENTER current stock price for :$<!$d4n;I!"'J!I!# 6#逋_6##__ 7#B_<!T7#?_<!T6#_6#W__ 7#_F!_<!s_F!T7#_F!_F!zzzz_F!_F!S6#J|_6#__ 7#F!_F!7#||6#<!$ is to be added after $|<!$d4 in the $|p# position $d4B:STKPRICE.DATjB:STKFIL01.DATP k:_&_|7%_E!_ &%_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?&%_I!+_J!+?__&&6$vE!__ &%_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?&%_I!+_J!+?_|&&_7&F_E!_ &%_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?&%_I!+_J!+?__&&6%_&%_I!+_J!+?@ @$.l$!$d4UPDATING HISTORICAL PRICE FILES FOR LATEST$d4 STOCK ADDITION ... you may wish to do something$d4 else for the next few minutes ...$d43$. l$,Q$INSTRUCTIONS:$d434,5input another stock? y or n?6 726 ! ZSTOCK DELETION PROGRAM[enter stock name to be deleted\T^`<!\7'ـ @6'. l$,Q$IS THIS THE CORRECT STOCK TO DELETE ?$d4,Q$!$dy or n?n;a1'ay7(C6(F6(F6'x`( `(B:STKPRICE.DATjB:STKFIL01.DATP j:__`7(::___E!_6(_`_7(::___E!_6(_:@ @`)8 `)8B:STKPRICE.DATjB:STKFIL01.DATP j::::@ @$.l$!$d4UPDATING HISTORICAL PRICE FILES FOR LATEST$d4 STOCK DELETION ... you may wish to do something$d4 else for the next few minutes ...$d4$+D$, Q$STOCK TRANSACTION FILE$d4$d4,Q$0 = return to main menu$d4,Q$1 = ADD to transaction file$d4,Q$2 = ORIGINAL CREATION OF FILE$d4$,Q$INSTRUCTIONS: enter menu selection$d4,Q$!$d and hit returnn;":'7+6+b^96+96+yB:TRANSACT.DATPk+yB:TRANSACT.DATPj`+y7+&j):^*)l*m*n)o)k*>6+b+y70+,0$+D$,Q$STOCK PURCHASE DATA$d4$,Q$STOCK NAME:$d4,Q$BOUGHT/SOLD?:$d4,Q$NUMBER SHARES:$d4,Q$TRADE DATE:$d4,Q$TOTAL COST:$d4,Q$COMMISSION:$d4, Q$SYMBOL:$d4,Q$BUY/SELL PRICE:$d4$,Q$INSTRUCTIONS:$d41022G2231}. l$01"$,Q$SELECT FIELD TO BE CORRECTED$d4,Q$0 = no changes$d4,Q$1 = stock name $5 = total purchase cost$d4,Q$2 = bought/sold $6 = commission charges$d4,Q$3 = number of shares $7 = stock symbol$d4,Q$4 = date purchased/sold $8 = price per share$d4d4,Q$!$dWHICH FIELD DO YOU WANT TO CHANGE?n;":' 7.$01"$,Q$dENTER A FIELD BETWEEN 0 AND 8: n;":'6.}7.6/_7/_. l$01"$d4&6/ && 7/*01"$d46/ 01"$d4/\b^961606262G62626361}6,,Q$!$dare you sure?n;a1'ayan 7/$01"$,Q$!$denter y for yes or n for non;a1'6/ay7/60an70$01"$d401"$d46.D&;!p+<!,I!+=!,?!,A!+@!+H!,?. l$01"$d4&60&& 7001"$d46034,5input another purchase/sell? y or n?6 76+@l345enter B for BUY, S for SELL, SPL for SPLIT6 7=!ls=!B71cbought=!S71|sold345enter price per share 6 7I!X93 45enter name of stock6 7<!9S345enter number of shares 6 7;!X:?!345enter date: month/day/year 6 7345enter total value of trade6 7@!X345enter total commission charges6 7A!Xk345ENTER STOCK SYMBOL6 7H!ks  !!:74o!!74l_&_&746_U!F!&U!F!74_U!_U!&U!&U!pD74+__643&&63_74B!_!_6363$d4enter date of current stock prices: mo/dy/yr$d4n;1'ppp$d48р_64__ 75k.l$d4&65&& 7501"$d464.l$INSTRUCTIONS: ENTER stock price for $_<!$!$d4n;_I!"'8964ր_65__ 76_;!_J!p_;!_I!p_K!_B!_B!p75_C!p66_C!_B!dp65sp76&p662dp`6H&_J!))>_<!S&P 500.l$01"$d401"$d4.l$INSTRUCTIONS: ENTER stock price for $_<!$!$d4n;_I!"'_B!_I!_J!_J!p77_C!p67"_C!_B!_J!dpd4You now have a chance to correct input errors$d4any price changes ? (y/n)?n;Y1'YnYN 7768enter number of stock for price changen;":';!I!pprice for $<!$ is $I!#d4enter correct price n;I!"';!J!p;!I!pK!B!B!p78C!p68C!B!dpp78€p68΀dp67V$d4&68&& 7801"$d468$d4J ***** STOCK PRICE UPDATE *****$d4d4number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4_79._8l$d469Ԁ.l$d4. l$d4_I!_J! ### / stock name / ##.### ##.### ###.###c_p#5_<!$5_J!#5_I!#5#d4&p+,,?_6:h__ 7:&_I!+_J!+?6:[&_I!+_J!+?@6:6;6;.6;@6;W6;s6;6;6;6< &_;!):_<!*_H!*_=!*_?!*_A!)_@!)_E!):_L!)>_6;'__ 7;-:6;&):**>&_I!)_J!)>_6;l__ 7;r:6;_ &_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?_6;__ 7;:6;&p+,,?&_I!+_J!+?_6<"__ 7<(:6<number STOCK NAME OLD PRICEK!B!B!p78C!p68C!B!dpp78€p68΀dp67V$d4&68&& 7801"$d468$d4J ***** STOCK PRICE UPDATE *****$d4d4number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4_79._8l$d469Ԁ.l$d4. l$d4_I!_J! ### / stock name / ##.### ##.### ###.###c_p#5_<!$5_J!#5_I!#5#d4&p+,,?_6:h__ 7:&_I!+_J!+?6:[&_I!+_J!+?@6:6;6;.6;@6;W6;s6;6;6;6< &_;!):_<!*_H!*_=!*_?!*_A!)_@!)_E!):_L!)>_6;'__ 7;-:6;&):**>&_I!)_J!)>_6;l__ 7;r:6;_ &_;!p+_<!,_H!,_=!,_?!,_A!+_@!+_E!p+_L!+?1$1.0$9.99$0.99$10.5$21.0$0.75$0.5$0.25$61444$64133$61440$65535$*h]~~c c c c c  c  c 6^  pr   tRR R R R RRR< RRR 6 7ˀ66 76؀6  766/ 7:6"6GTS6T TS6o$d4"!TS"t6$ #J$t6'!%W&%S't6#+r$%,&$$!,W$*$(=$%)&$!)W$dn;.1'-.-tu7> 7"/A:0STKBASE/0y6\B:STKPRICE.DATj&):1*2*>@`$ J$!W$ALPHA AND BETA CALCULATION FOR PORTFOLIO$d4$!W$option list$$d4!W$ 0 = RETURN to main menu$d4d4!W$ 1 = DAILY PRICE FILE$d4!W$ 2 = WEEKLY PRICE FILE$d4!W$ 3 = MONTHLY PRICE FILE$d4!W$ 4 = QUARTERLY PRICE FILE$d4!W$ 5 = YEARLY PRICE FILE$d4$#r$! W$$dSELECT FILE TO ANALYZE: n;":'$#r$%&$$d4FOR PRICE PLOTS ONLY, ENTER 'P': n;31'33s$#r$%&$$d4FOR AUTO-SCALING OF PLOTS, ENTER 'A': n;41'44s 7^966666 5B:DAYHST.DAT6p685B:WEEKHST.DAT64p685B:MONTHST.DAT6 p685B:QUARTHST.DAT6p685B:YEARHST.DAT6p7F8 BETA ANALYIS OF PORTFOLIO on 9 DATE: 3P766 U5j`:S&P 500;<=7=%<!)><!<!<!<!<<==;6>p?p@pApBpCD.B:STKFIL01.DATP jE6]EE 7׀= &F)::*G*H*I*J)K)E !):L)>5j`<7=E%M)>Mp76!<!!M==;<<6N@N76g3P7)6w71OxORX7=P.N<6`<< 7Q<Q!<!Q!Q!Q!<!Q!Q!PP.Q!6SRNpSR6TP.ST.7T.T.07T.0UP.RV!W!<64N<< 7k<!W7NW<!<!V7hV<!6'WWVV4XTYZ[\Adp €>>]@@^??_AA`BBaCCNDDPE766P @3P7:portfolioaB]>^@_?`ANCRNpSR6TD.SUD.Rd4ˀXTYZ[\Adp of$d4$d48$5$d49$1$d4 stand stand stand -correlation- ------- RETURNS PER PERIOD-------------- reward$d4 STOCK no.of alpha beta error error error r-square r geometric arith. standard annual to-risk a/b$d4 no. name points intrcpt slope estimate  average average deviatn min max yield ratio ratio$d4b--------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------b$d47T7 B:BETA.DAT kofc ## /........../ ### ##.### ##.### #.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##ccEp#5:$5Np#5[#5\#5d#5e#5f#5g#5h#5U#5i#5Y#5V#5W#5T#5X#5Z#d4 E B7 d4 &Ep+:,Np+[+\+d+e+f+g+h+U+i+Y+V+W+T+X+Z+?ofj ## /......../ ##### ##.### ##.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##jcEp#5:$5Np#5[#5\#5d#5e#5f#5g#5h#5U#5i#5Y#5T#5X#5Z#d4VpWp &Ep+:,Np+[+\+d+e+f+g+h+U+i+Y+V+W+T+X+Z+? @gkNlk474mk69m4k47E6Mlk4nol6gkoo 7nnn!o!6ZV!W!o6moo 7o!W7ǀWo!o!V7Vo!6pWV4A76W.76+W.q10r 7s 5t 26TWp786]Wpq20r15s10t 56TW*p7j6W*pq40r30s20t106TWTp76WTpq80r60s40t206TWp76Wpq160r120s80t406TuWV.v.uwVqWWSrVp.WSsVp.WStVp.WSxVWS6suW.v.uwpx 0o6moo 7yo!wvo !yr6{gz--------------------------------------------------$ J:$d4#r$!W$z$d4#r$!W$z$d4# r$!W$z$d4#r$!W$z$d4#r$q$d4#r$r$d4# r$s$d4#r$t$d4#r$x$$d4{. o6oo 7o  B7΀| 6Ӏ| {{p{|:l6o64oo 71 o B7| 6|{{p{|:l6#r$ J5$ 10$ 15$ 20$ 25$ 30$ 35$ 40$ 45$ 50$$d4{. |n6mnn 7on !6o 7o76{|:l{{p{. 766{. np{. 766error in graphics${#|p#d4]p_p`p^pap<6gN<< 7ˀ]]<!^^<!<!__<!``<!<!aa<!<!6Z}]Npi_Np~a}iNp^}}Np`iiNp\~[i\}NpNpIYIf\~NpIef^N}p}Ide^NpIg\~hgI2                    `7T$ J$! W$READING IN BETA FILE$d4B:STKPRICE.DATj&):1*2*>@B:BETA.DAT j;<6;<< 7} &o):<!*<!):<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)>6ʀ @6 @$ J$!W$HISTORICAL PORTFOLIO PERFORMANCE SUMMARY OPTION LIST$d4 J$! W$SORTING OPTIONS:$$d4J0 = return to main menu$d4d4J1 = on total risk/return ratio$d4J2 = on alpha/beta ratio$d4J3 = by alpha$d4J4 = by beta$d4J5 = by geometric average return$d4J6 = by standard deviation$d4$! W$$denter option number for sort:n;":'7^96,6x66 6H6total risk/return ratio6]; 7u!!dp:6P6瀘alpha/beta ratio6; 7!!p:66瀘alpha - return variable6; 7!!p:66瀘beta value6-; 7E!!dp:6 6瀘geometric average return6z; 7!!p:6m6瀘standard deviation of returns6; 7!!p:66瀙yes;6  7!6A5B:BETA.DAT8HISTORICAL SUMMARY OF PORTFOLIO from: 9SORTED BY  DATE: c ## /........../ ### ##.### ##.### #.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##j ## /......../ ##### ##.### ##.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.## U<6;<< 7<<!;7occ6&6KTS6X TS6s$d4"!TS"t6$ #N$t6'!%[&%S't6#+v$%,&$$!,[$*$(A$%)&$!)[$dn;.1'-.-tu7B 7&/A:0STKBASE/0y6`B:STKPRICE.DATj&):1*2*>@`$ N$![$ALPHA AND BETA CALCULATION FOR PORTFOLIO$d4$![$option list$$d4![$ 0 = RETURN to main menu$d4d4![$ 1 = DAILY PRICE FILE$d4![$ 2 = WEEKLY PRICE FILE$d4![$ 3 = MONTHLY PRICE FILE$d4![$ 4 = QUARTERLY PRICE FILE$d4![$ 5 = YEARLY PRICE FILE$d4$#v$! [$$dSELECT FILE TO ANALYZE: n;":'$#v$%&$$d4FOR PRICE PLOTS ONLY, ENTER 'P': n;31'33s$#v$%&$$d4FOR AUTO-SCALING OF PLOTS, ENTER 'A': n;41'44s 7^966666$5B:DAYHST.DAT6p6<5B:WEEKHST.DAT64p6<5B:MONTHST.DAT6 p6<5B:QUARTHST.DAT6p6<5B:YEARHST.DAT6p7F8 BETA ANALYIS OF PORTFOLIO on 9 DATE: 3P766 Y5j`:S&P 500;<=7 =%<!)><!<!<!<!<<==;6>p?p@pApBpCD.B:STKFIL01.DATP jE6aEE 7ۀ= &F)::*G*H*I*J)K)E !):L)>5j`<7=E%M)>Mp76!<!!M==;<<6N@N76g3P7-6w75OxORX7AP.N<6d<< 7ŀQ<Q!<!Q!Q!Q!<!Q!Q!PP.Q!6WRNpSR6TP.ST.7T.T.07T.0UP.RV!W!<68N<< 7o<!W7RW<!<!V7lV<!6+WWVV8XTYZ[\Adp ƀ>>]@@^??_AA`BBaCCNDDPE76 6T @3P7:portfolioaB]>^@_?`ANCRNpSR6TD.SUD.Rd4πXTYZ[\Adp of$d4$d48$5$d49$1$d4 stand stand stand -correlation- ------- RETURNS PER PERIOD-------------- reward$d4 STOCK no.of alpha beta error error error r-square r geometric arith. standard annual to-risk a/b$d4 no. name points intrcpt slope estimate  average average deviatn min max yield ratio ratio$d4b--------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------b$d47T7 B:BETA.DAT kofc ## /........../ ### ##.### ##.### #.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##ccEp#5:$5Np#5[#5\#5d#5e#5f#5g#5h#5U#5i#5Y#5V#5W#5T#5X#5Z#d4 E B7 d4 &Ep+:,Np+[+\+d+e+f+g+h+U+i+Y+V+W+T+X+Z+?ofj ## /......../ ##### ##.### ##.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##jcEp#5:$5Np#5[#5\#5d#5e#5f#5g#5h#5U#5i#5Y#5T#5X#5Z#d4VpWp &Ep+:,Np+[+\+d+e+f+g+h+U+i+Y+V+W+T+X+Z+? @gkNlk478mk6=m4k47I6Qlk4nol6kkoo 7nnn!o!6^V!W!o6moo 7o!W7ˀWo!o!V7Vo!6pWV4A76W.7 6/W.q10r 7s 5t 26XWp7<6aWpq20r15s10t 56XW*p7n6W*pq40r30s20t106XWTp76ŀWTpq80r60s40t206XWp76Wpq160r120s80t406XuWV.v.uwVqWWSrVp.WSsVp.WStVp.WSxVWS6wuW.v.uwpx 0o6moo 7yo!wvo !yr6gz--------------------------------------------------$ J:$d4#v$![$z$d4#v$![$z$d4# v$![$z$d4#v$![$z$d4#v$q$d4#v$r$d4# v$s$d4#v$t$d4#v$x$$d4{. o6oo 7o  B7Ҁ| 6׀| {{p{|:l6o64oo 75 o B7| 6!|{{p{|:l6#v$ J5$ 10$ 15$ 20$ 25$ 30$ 35$ 40$ 45$ 50$$d4{. |n6mnn 7on !6o 7o76{|:l{{p{. 766ŀ{. np{. 766error in graphics${#|p#d4]p_p`p^pap<6kN<< 7π]]<!^^<!<!__<!``<!<!aa<!<!6^}]Npi_Np~a}iNp^}}Np`iiNp\~[i\}NpNpIYIf\~NpIef^N}p}Ide^NpIg\~hgI2                    `7T$ N$! [$READING IN BETA FILE$d4B:STKPRICE.DATj&):1*2*>@B:BETA.DAT j;<6;<< 7 &o):<!*<!):<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)>6΀ @6 @$ N$![$HISTORICAL PORTFOLIO PERFORMANCE SUMMARY OPTION LIST$d4 N$! [$SORTING OPTIONS:$$d4J0 = return to main menu$d4d4J1 = on total risk/return ratio$d4J2 = on alpha/beta ratio$d4J3 = by alpha$d4J4 = by beta$d4J5 = by geometric average return$d4J6 = by standard deviation$d4$! [$$denter option number for sort:n;":'7^9606|66 6L6total risk/return ratio6a; 7y!!dp:6T6뀘alpha/beta ratio6; 7!!p:66뀘alpha - return variable6; 7 !!p:66뀘beta value61; 7I!!dp:6$6뀘geometric average return6~; 7!!p:6q6뀘standard deviation of returns6; 7!!p:66뀙yes;6  7!6E5B:BETA.DAT8HISTORICAL SUMMARY OF PORTFOLIO from: 9SORTED BY  DATE: c ## /........../ ### ##.### ##.### #.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##j ## /......../ ##### ##.### ##.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.## Y<6;<< 7@<!;7scc@`$ D$!Q$ALPHA AND BETA CALCULATION FOR PORTFOLIO$d4$!Q$option list$$d4!Q$ 0 = RETURN to main menu$d4d4!Q$ 1 = DAILY PRICE FILE$d4!Q$ 2 = WEEKLY PRICE FILE$d4!Q$ 3 = MONTHLY PRICE FILE$d4!Q$ 4 = QUARTERLY PRICE FILE$d4!Q$ 5 = YEARLY PRICE FILE$d4$#l$! Q$$dSELECT FILE TO ANALYZE: n;":'$#l$%&$$d4FOR PRICE PLOTS ONLY, ENTER 'P': n;31'33s$#l$%&$$d4FOR AUTO-SCALING OF PLOTS, ENTER 'A': n;41'44s 7^9666665B:DAYHST.DAT6p625B:WEEKHST.DAT64p625B:MONTHST.DAT6 p625B:QUARTHST.DAT6p625B:YEARHST.DAT6p7F8 BETA ANALYIS OF PORTFOLIO on 9 DATE: 3P7y6|6| O5j`:S&P 500;<=7=%<!)><!<!<!<!<<==;6>p?p@pApBpCD.B:STKFIL01.DATP jE6WEE 7р= &F)::*G*H*I*J)K)E !):L)>5j`<7=E%M)>Mp76!<!!M==;<<6N@N76g3P7#6w7+OxORX77P.N<6Z<< 7Q<Q!<!Q!Q!Q!<!Q!Q!PP.Q!6MRNpSR6TP.ST.7T.T.07T.0UP.RV!W!<6.N<< 7e<!W7HW<!<!V7bV<!6!WWVV.XTYZ[\Adp >>]@@^??_AA`BBaCCNDDPE766J @3P7:portfolioaB]>^@_?`ANCRNpSR6TD.SUD.Rd4ŀXTYZ[\Adp of$d4$d48$5$d49$1$d4 stand stand stand -correlation- ------- RETURNS PER PERIOD-------------- reward$d4 STOCK no.of alpha beta error error error r-square r geometric arith. standard annual to-risk a/b$d4 no. name points intrcpt slope estimate  average average deviatn min max yield ratio ratio$d4b--------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- --------- ---------b$d47T7 B:BETA.DAT kofc ## /........../ ### ##.### ##.### #.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##ccEp#5:$5Np#5[#5\#5d#5e#5f#5g#5h#5U#5i#5Y#5V#5W#5T#5X#5Z#d4 E B7 d4 &Ep+:,Np+[+\+d+e+f+g+h+U+i+Y+V+W+T+X+Z+?ofj ## /......../ ##### ##.### ##.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##jcEp#5:$5Np#5[#5\#5d#5e#5f#5g#5h#5U#5i#5Y#5T#5X#5Z#d4VpWp &Ep+:,Np+[+\+d+e+f+g+h+U+i+Y+V+W+T+X+Z+? @gkNlk47.mk63m4k47?6Glk4nol6akoo 7|nnn!o!6TV!W!o6moo 7o!W7Wo!o!V7ۀVo!6pWV4A76W.76%W.q10r 7s 5t 26NWp726WWpq20r15s10t 56NW*p7d6W*pq40r30s20t106NWTp76WTpq80r60s40t206NWp76Wpq160r120s80t406NuWV.v.uwVqWWSrVp.WSsVp.WStVp.WSxVWS6muW.v.uwpx 0o6moo 7yo!wvo !yr6ugz--------------------------------------------------$ J:$d4#l$!Q$z$d4#l$!Q$z$d4# l$!Q$z$d4#l$!Q$z$d4#l$q$d4#l$r$d4# l$s$d4#l$t$d4#l$x$$d4{. o6oo 7o  B7Ȁ| 6̀| {{p{|:l6o64oo 7+ o B7| 6|{{p{|:l6#l$ J5$ 10$ 15$ 20$ 25$ 30$ 35$ 40$ 45$ 50$$d4{. |n6mnn 7on !6o 7o76{|:l{{p{. 766{. np{. 7 66error in graphics${#|p#d4]p_p`p^pap<6aN<< 7ŀ]]<!^^<!<!__<!``<!<!aa<!<!6T}]Npi_Np~a}iNp^}}Np`iiNp\~[i\}NpNpIYIf\~NpIef^N}p}Ide^NpIg\~hgI2                    `}7T$ D$! Q$READING IN BETA FILE$d4B:STKPRICE.DATj&):1*2*>@B:BETA.DAT j;<6;<< 7w &o):<!*<!):<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)<!)>6Ā @6 @$ D$!Q$HISTORICAL PORTFOLIO PERFORMANCE SUMMARY OPTION LIST$d4 D$! Q$SORTING OPTIONS:$$d4J0 = return to main menu$d4d4J1 = on total risk/return ratio$d4J2 = on alpha/beta ratio$d4J3 = by alpha$d4J4 = by beta$d4J5 = by geometric average return$d4J6 = by standard deviation$d4$! Q$$denter option number for sort:n;":'7^96&6r666B6total risk/return ratio6W; 7o!!dp:6J6ဘalpha/beta ratio6; 7!!p:66ဘalpha - return variable6; 7!!p:66ဘbeta value6'; 7?!!dp:66ဘgeometric average return6t; 7!!p:6g6ဘstandard deviation of returns6; 7!!p:66မyes;6 7!6;5B:BETA.DAT8HISTORICAL SUMMARY OF PORTFOLIO from: 9SORTED BY  DATE: c ## /........../ ### ##.### ##.### #.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##j ## /......../ ##### ##.### ##.### #.### #.### #.### #.### ##.### ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.## O<6;<< 76<!;7icc: ?: @: A: B: C: D: E: F: G: H: I: J: K: L: M: N2ON PN QN RN SN TN UN 767 66666VA:WSTKBASEVWy6+`b:stkprice.$$$k`0b:stkprice.datj`[b:stkprice.bakj `b:stkfil01.datP j`*e**w*IX6XX 7XJ!XI!6XJ!XI! $3$d4 Enter date of current stock prices: mo/dy/yr$d4n;Y1'Z[p\p]p $d4 m`B:TEMPRICE.DATj`ƀ&^):Y*_*>X6ZXX 7ƀ&XI!)XJ!)>6@XZ6XX 73$d46 7K$d463$INSTRUCTIONS: ENTER stock price for $X<!$$d4n;XI!"' m XI!p7~X66рX6XX 7)`X;!XJ!p\\`aX;!XI!p]]aXK!aXB!a`[[XB!`p7XC!p6&XC!XB!`dp6\p7X<!S&P 5003$K$d4K$d4K$d43$INSTRUCTIONS: ENTER stock price for $X<!$$d4n;XI!"'XB!XI!XJ!XJ!p7+XC!p6HXC!XB!XJ!dpd4You now have a chance to correct input errors$d4any price changes ? (y/n)?n;d1'dndN 76 enter number of stock for price changen;e":'fe;!eI!pprice for $e<!$ is $eI!#d4enter correct price n;eI!"'`e;!eJ!pae;!eI!p]]afeK!aeB!a`[[eB!f``p7 eC!p6 eC!eB!`dp\p7 bp6 b[\dp6|:6 : 7 3T!C! prU!6 ' $ JDO YOU WANT TO PRINT TO :$d4J CONSOLE = 1 $d4J PRINTER = 2 $d4J BOTH = 3 $d4 3$$d4INSTRUCTIONS: enter selection and hit returnn;g":'g7 6 \hOPTION 5 - PRICES UPDATED FOR THE CURRENT WEEK - NEW VALUATIONisorted by: percent increase for week ?gg7 i6 l$d46  7 K$d46 z3$%K$d4K$d4$d4J ***** STOCK PRICE UPDATE *****$d4 price$d4number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4X7 X3$d46 ΀3$d4 3$d4jXI!XJ! ### / stock name / ##.### ##.### ###.###cXp#5X<!$5XJ!#5XI!#5j#d4k ## /................../ ##### ####.# ###.### ###.### ##.### #### #####.## $ % current previous price number current$d4 stock name increase increase price price increase of shares value$d4d4X6nXX 7XU!jI!J!kcXp#5<!$5B!#5C!#5I!#5J!#5j#5;!p#5K!#d4X7d46ad4kcXp#5X<!$5XB!#5XC!#5XI!#5XJ!#d4l TOTALS : ######.## ###.# ######.##d4lc[#5b#5]#d4 $dJ ***** STOCK PRICE CHANGE ANALYSIS *****$d4d4m## /........../ ###.### ###.## ###.## ####.# # STOCK NAME CURRENT PRICE % $$d4 PRICE change inc inc$d4-------------------------------------------------$d4d4n6 nn897ـ3$K$dX6 XX 7K$d463$d4on o7!p6PX>!X@!X;!pXG!5X?!6 @`3$ $READING IN CURRENT PRICES$d4b:stkprice.datj*es5Y*X6XX 7XK!X;!pXI!XB!XK!X@!X@!p79XC!p6VXC!XB!X@!dpXI!p7tXM!p6XM!XL!XI!dpX@!p7XD!p6XD!XK!X@!6ۀ3$ $CALCULATING ANNUAL YIELD$d4X6XX 7tXG!ustp.XD!XD!uppdpXD!XD!XM!XD!p7|XD!pXD!cp7XD!cp66end-of-file on unit 8 reached$d4@ $ $$HISTORICAL PERFORMANCE SUMMARY OPTION LIST$d4 $ $SORTING OPTIONS:$ $d4J0 = return to main menu$d4J1 = on date purchased$d4J2 = by number of shares$d4J3 = by stock exchange$d4J4 = by purchase cost$d4J5 = by current value$d4J6 = by percentage increase in value$d4J7 = by annual yield$d4J8 = by $ increase in value$d4J9 = alphabetical by stock name$d4J10 = by dividend yield$d4 $ $$denter option number for sort:n;":'76 ^96656u6+6p666V66ƀvdate of purchase6 72T!G!66vnumber of shares6_ 7rT!;!6R6vstock exchangewNYSExXxx6 7=!w7XU!XX6x7wAMEX6x7wOTC6x7wOTHER6:yyes6Hvtotal purchase price6Y 7mT!@!r6L6vcurrent value6 7T!K!r66vpercentage increase in value6 7T!C! pr66vannual yield (including dividends)6; 7ST!D! pr6.6vdollar increase in value6 7T!B! pr6{6vALPHABETICAL BY NAMEyno6Hvannual dividend yield6 7 T!M! pr66yyes:62: 7?U!6%'6H(րhOPTION 4 - HISTORICAL SUMMARY OF STOCK PORTFOLIOiSORTED BY v6of$d4$d4d4Jh$d4Ji$d4d4JDATE: $Y$d4d4 total total$d4Jstk date no. company stock purch current purchase$ current $ % dividend annual % of$d4Jno. purchd shrs symbol xchng equiv price cost  value increase inc yield return assets$d4d4q TOTALS : #####.## #####.## ######.## ###.#m ## /....../ ### /..../ /............/ /../ ##.### ##.### ####.## ####.## #####.## ###.# ##.# ###.# ##.#\p]pX6"tXX 7"\\XK!6"gX6"XX 7#Xyyes7"XU!zK!\dpmcXp#5?!$5;!p#5H!$5<!$5=!$5>!#5I!#5@!#5K!#5B!#5C!#5M!#5D!#5z#d4X7#nd4[[X@!]]XB!6"{][dpd4qc[#5\#5]#5{#d4g`$N `$sB:STKPRICE.DATjB:STKFIL01.DATP j*e|(Y}|X~current date is $Y$ = $}#d4X6$?XX 7$H*w)6$2*w6$file B:STKPRICE.DAT not found$d46$file B:STKFIL01.DAT not found$d4@ @`& $ $ $PRICE HISTORY FILE$d4 $$option list$ $d4$0 = RETURN to main menu$d4$1 = STORE prices in DAILY FILE$d4$2 = STORE prices in WEEKLY FILE$d4$3 = STORE prices in MONTHLY FILE$d4$4 = STORE prices in QUARTERLY FILE$d4$5 = STORE prices in ANNUAL FILE$d4 $3$ $$dSELECT option number: n;":' 7&@6^96&U6&i6&~6&6&B:DAYHST.DAT6&B:WEEKHST.DAT6&B:MONTHST.DAT6&B:QUARTHST.DAT6&B:YEARHST.DAT6&j6&k`'ZZsize of $$ is $p# Kbytes$d47'6'H6'1Zt'%):>7'Z&):>6'HEOF on unit #4 : $$d4&}+?&~p+?&~I!+?X6'XX 7'&XI!+?6'@6$  !!:7(Հ!!7(ҀXX7(XU!T!U!T!7(}XU!XU!U!U!pD7(XX6(6(&X7(!X!X6( 6'  !!:7)p!!p7)XpX7)XU!F!U!F!7)XU!XU!U!U!pD7)XX6)6)AX7)À!X!X6)(6) &X;!):X<!*XH!*X=!*X?!*XA!)X@!)XE!):XL!)>X6*^XX 7*d)6*Q&):Y*_*>&XI!)XJ!)>X6*XX 7**w6* &X;!p+X<!,XH!,X=!,X?!,XA!+X@!+XE!p+XL!+?X6+XX 7+*6+ &p+Y,_,?&XI!+XJ!+?X6+YXX 7+_+-6+LU!U!pD7(XX6(6(&X7(!X1$0.00274$*+e!x~~6prtR R R R R RRR< RRRQ 6 76x 6 76 6π 7ڀ6€ 6 766  TS6 TS64 $d4 TSt6Lt6m S t6ɀ$7$%O$$%$#$!$"O$"$dn;'1'&'&t6*(T+/(\,(+S-,X:./(+\/(*.V0/X:+7$10671(+.+U21X:/3 0,3,3,6,8,11,13,16,19,21,24,26,36T-33 7\4=:6G440pr-20pr0- 744)0pW.4pW)t67(5*7T+.7\/7+S0/X:87*+V98X:690m6t:2;: <: =: >: ?: @: A: B: C: D: E: F: G: H: I: J: K: L: M: N2ON PN QN RN SN TN UN 767666:6VA:WSTKBASEVWy6+db:stkprice.$$$k`4b:stkprice.datj`_b:stkprice.bakj `b:stkfil01.datP j`*i**{*MX6XX 7XJ!XI!6XJ!XI! $7$d4 Enter date of current stock prices: mo/dy/yr$d4n;Y1'Z[p\p]p $d4 q`B:TEMPRICE.DATj`ʀ&^):Y*_*>X6ZXX 7ʀ&XI!)XJ!)>6@XZ6XX 77$d46 7O$d467$INSTRUCTIONS: ENTER stock price for $X<!$$d4n;XI!"' q XI!p7X66ՀX6XX 7-`X;!XJ!p\\`aX;!XI!p]]aXK!aXB!a`[[XB!`p7XC!p6*XC!XB!`dp6\p7@bp6Lb[\dp`b&XJ!)c)>X<!S&P 5007$O$d4O$d4O$d47$INSTRUCTIONS: ENTER stock price for $X<!$$d4n;XI!"'XB!XI!XJ!XJ!p7/XC!p6LXC!XB!XJ!dpd4You now have a chance to correct input errors$d4any price changes ? (y/n)?n;d1'dndN 76 enter number of stock for price changen;e":'fe;!eI!pprice for $e<!$ is $eI!#d4enter correct price n;eI!"'`e;!eJ!pae;!eI!p]]afeK!aeB!a`[[eB!f``p7 eC!p6 eC!eB!`dp\p7 bp6 b[\dp6:6 : 7 7T!C! prU!6 ' $ JDO YOU WANT TO PRINT TO :$d4J CONSOLE = 1 $d4J PRINTER = 2 $d4J BOTH = 3 $d4 7$$d4INSTRUCTIONS: enter selection and hit returnn;g":'g7 6 `hOPTION 5 - PRICES UPDATED FOR THE CURRENT WEEK - NEW VALUATIONisorted by: percent increase for week Cgg7 m6 p$d46  7 O$d46 ~7$%O$d4O$d4$d4J ***** STOCK PRICE UPDATE *****$d4 price$d4number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4X7 X7$d46 Ҁ7$d4 7$d4jXI!XJ! ### / stock name / ##.### ##.### ###.###cXp#5X<!$5XJ!#5XI!#5j#d4k ## /................../ ##### ####.# ###.### ###.### ##.### #### #####.## $ % current previous price number current$d4 stock name increase increase price price increase of shares value$d4d4X6rXX 7XU!jI!J!kcXp#5<!$5B!#5C!#5I!#5J!#5j#5;!p#5K!#d4X7d46ed4kcXp#5X<!$5XB!#5XC!#5XI!#5XJ!#d4l TOTALS : ######.## ###.# ######.##d4lc[#5b#5]#d4 $dJ ***** STOCK PRICE CHANGE ANALYSIS *****$d4d4m## /........../ ###.### ###.## ###.## ####.# # STOCK NAME CURRENT PRICE % $$d4 PRICE change inc inc$d4-------------------------------------------------$d4d4n6 nn897݀7$O$dX6 XX 7O$d467$d4on o7@oXn6UoXX 7€XU!jI!J!mcXp#5<!$5I!#5j#5C!#5B!#d4X7d46Hp6ׇЀpp 766jXI!XJ!d4mcXp#5X<!$5XI!#5j#5XC!#5XB!#d4d4q PORTFOLIO : ###.## #####.##qcb#5[#d4p6Ѐpp 76uB:TEMPRICE.DATk&p+Y,_,?X6XX 7ۀ&XI!+XJ!+?6@@@@ @&p+Y,_,?X6XX 7'&XI!+XJ!+?6&XI!+XJ!+?@@ @eB:stkprice.bakB:stkprice.datY7t6B:stkprice.datB:stkprice.$$$Y76d4 JUPDATING HISTORICAL PRICE FILE$d4#unable to rename old data file to backup$d46unable to rename temporary file to new data file$d46FILE B: STKPRICE.DAT NOT FOUND$d4check diskette loaded in drive B$d4does a stock price file exist?$d4do you want to continue the routine? y or n?n;r1'ry7@u6Xd4reached END-OF-FILE on B:STKPRICE.DAT$d4 not enough stock prices in data file $d4to continue, enter yesn;r1'6FILE B: STKPRICE.BAK NOT FOUND$d4does a backup of the stock price file exist?$d4do you want to continue the routine? y or n?n;r1'ry76vFILE B:STKFIL01.DAT NOT FOUND$d4check diskette loaded in drive B$d4or perhaps you have not run the CREATE STOCK FILE yet!$d4do you want to continue the routine? y or n?n;r1'ry76 `m $$ $READING IN STOCK FILE$d4b:stkfil01.datP jX)X;!7:X>!p6TX>!X@!X;!pXG!5X?!6 @`7$ $READING IN CURRENT PRICES$d4b:stkprice.datj*is5Y*X6XX 7XK!X;!pXI!XB!XK!X@!X@!p7=XC!p6ZXC!XB!X@!dpXI!p7xXM!p6XM!XL!XI!dpX@!p7XD!p6XD!XK!X@!6߀7$ $CALCULATING ANNUAL YIELD$d4X6XX 7tXG!ustp.XD!XD!uppdpXD!XD!XM!XD!p7XD!pXD!cp7XD!cp66end-of-file on unit 8 reached$d4@ $$$HISTORICAL PERFORMANCE SUMMARY OPTION LIST$d4$ $SORTING OPTIONS:$ $d4J0 = return to main menu$d4J1 = on date purchased$d4J2 = by number of shares$d4J3 = by stock exchange$d4J4 = by purchase cost$d4J5 = by current value$d4J6 = by percentage increase in value$d4J7 = by annual yield$d4J8 = by $ increase in value$d4J9 = alphabetical by stock name$d4J10 = by dividend yield$d4 $ $$denter option number for sort:n;":'76 ^96696y6/6t666Z66ʀvdate of purchase6# 76T!G!66vnumber of shares6c 7vT!;!6V6vstock exchangewNYSExXxx6 7=!w7XU!XX6x7wAMEX6x7 wOTC6x7wOTHER6:yyes6Lvtotal purchase price6] 7qT!@!r6P6vcurrent value6 7T!K!r66vpercentage increase in value6 7T!C! pr66vannual yield (including dividends)6? 7WT!D! pr626vdollar increase in value6 7T!B! pr66vALPHABETICAL BY NAMEyno6Lvannual dividend yield6 7T!M! pr66yyes:66: 7CU!6)'6L(ڀhOPTION 4 - HISTORICAL SUMMARY OF STOCK PORTFOLIOiSORTED BY v6of$d4$d4d4Jh$d4Ji$d4d4JDATE: $Y$d4d4 total total$d4Jstk date no. company stock purch current purchase$ current $ % dividend annual % of$d4Jno. purchd shrs symbol xchng equiv price cost  value increase inc yield return assets$d4d4q TOTALS : #####.## #####.## ######.## ###.#m ## /....../ ### /..../ /............/ /../ ##.### ##.### ####.## ####.## #####.## ###.# ##.# ###.# ##.#\p]pX6"xXX 7"\\XK!6"kX6"XX 7#Xyyes7"XU!zK!\dpmcXp#5?!$5;!p#5H!$5<!$5=!$5>!#5I!#5@!#5K!#5B!#5C!#5M!#5D!#5z#d4X7#rd4[[X@!]]XB!6"{][dpd4qc[#5\#5]#5{#d4g`$R `$wB:STKPRICE.DATjB:STKFIL01.DATP j*i|(Y}|X~current date is $Y$ = $}#d4X6$CXX 7$L*{)6$6*{6$file B:STKPRICE.DAT not found$d46$file B:STKFIL01.DAT not found$d4@ @`& $$ $PRICE HISTORY FILE$d4 $$option list$ $d4$0 = RETURN to main menu$d4$1 = STORE prices in DAILY FILE$d4$2 = STORE prices in WEEKLY FILE$d4$3 = STORE prices in MONTHLY FILE$d4$4 = STORE prices in QUARTERLY FILE$d4$5 = STORE prices in ANNUAL FILE$d4 $7$ $$dSELECT option number: n;":' 7&D6^96&Y6&m6&6&6&B:DAYHST.DAT6&€B:WEEKHST.DAT6&€B:MONTHST.DAT6&€B:QUARTHST.DAT6&€B:YEARHST.DAT6&j6&k`'^Zsize of $$ is $p# Kbytes$d47'6'L6'5Zt'%):>7'^&):>6'LEOF on unit #4 : $$d4&}+?&~p+?&~I!+?X6'XX 7'&XI!+?6'@6$  !!:7(ـ!!7(րXX7(XU!T!U!T!7(XU!XU!U!U!pD7(XX6(6(*X7(!X!X6(6'  !!:7)p!!p7)XpX7)XU!F!U!F!7)XU!XU!U!U!pD7)XX6)6)EX7)ǀ!X!X6),6) &X;!):X<!*XH!*X=!*X?!*XA!)X@!)XE!):XL!)>X6*bXX 7*h)6*U&):Y*_*>&XI!)XJ!)>X6*XX 7**{6* &X;!p+X<!,XH!,X=!,X?!,XA!+X@!+XE!p+XL!+?X6+XX 7+!*6+&p+Y,_,?&XI!+XJ!+?X6+]XX 7+c+16+PU!U!pD7(XX6(6(*X7(!X1$0.00274$*+k!~~6prtR R R R R RRR< RR 6{ 76n 6 76 6ŀ 7Ѐ6 6 766 TS6 TS6* $d4 TSt6Bt6c S t6$-$%E$$%$#$!$"E$"$dn;'1'&'&t6*(T+/(\,(+S-,X:./(+\/(*.V0/X:+7106-1(+.+U21X:/3 0,3,3,6,8,11,13,16,19,21,24,26,36J-33 7R4=:6=50445pr-20pr0- 744)0pW.4pW)t68(6*8T+.8\/8+S0/X:98*+V:9X:7:0m7t;2<; =; >; ?; @; A; B; C; D; E; F; G; H; I; J; K; L; M; N; O2PO QO RO SO TO UO VO 7 6766$6@6WA:XSTKBASEWXy6+jb:stkprice.$$$k`:b:stkprice.datj`eb:stkprice.bakj `b:stkfil01.datP j`*o***SY6YY 7YK!YJ!6YK!YJ! $-$d4 Enter date of current stock prices: mo/dy/yr$d4n;Z1'[\p]p^p $d4 w`B:TEMPRICE.DATj`Ѐ&_):Z*`*>Y6[YY 7Ѐ&YJ!)YK!)>6@Y[6YY 7-$d46 7E$d46-$INSTRUCTIONS: ENTER stock price for $Y=!$$d4n;YJ!"' w YJ!p7Y66ۀY6YY 73aY<!YK!p]]abY<!YJ!p^^bYL!bYC!ba\\YC!ap7YD!p60YD!YC!adp6]p7Fcp6Rc\]dp`h&YK!)d)>Y=!S&P 500-$E$d4E$d4E$d4-$INSTRUCTIONS: ENTER stock price for $Y=!$$d4n;YJ!"'YC!YJ!YK!YK!p75YD!p6RYD!YC!YK!dpd4You now have a chance to correct input errors$d4any price changes ? (y/n)?n;e1'eneN 76 enter number of stock for price changen;f":'gf<!fJ!pprice for $f=!$ is $fJ!#d4enter correct price n;fJ!"'af<!fK!pbf<!fJ!p^^bgfL!bfC!ba\\fC!gaap7 fD!p6 fD!fC!adp]p7 cp6 c\]dp6;6 ; 7 =U!D! prV!6 ' $ JDO YOU WANT TO PRINT TO :$d4J CONSOLE = 1 $d4J PRINTER = 2 $d4J BOTH = 3 $d4 -$$d4INSTRUCTIONS: enter selection and hit returnn;h":'h7 6 fiOPTION 5 - PRICES UPDATED FOR THE CURRENT WEEK - NEW VALUATIONjsorted by: percent increase for week Igh7 s6 v$d46  7 E$d46 -$%E$d4E$d4$d4J ***** STOCK PRICE UPDATE *****$d4 price$d4number STOCK NAME OLD PRICE NEW PRICE change$d4---------------------------------------- ------$d4d4Y7 €Y-$d46 ؀-$d4 -$d4kYJ!YK! ### / stock name / ##.### ##.### ###.###cYp#5Y=!$5YK!#5YJ!#5k#d4l ## /................../ ##### ####.# ###.### ###.### ##.### #### #####.## $ % current previous price number current$d4 stock name increase increase price price increase of shares value$d4d4Y6xYY 7YV!kJ!K!lcYp#5=!$5C!#5D!#5J!#5K!#5k#5<!p#5L!#d4Y7d46kd4lcYp#5Y=!$5YC!#5YD!#5YJ!#5YK!#d4m TOTALS : ######.## ###.# ######.##d4mc\#5c#5^#d4 $dJ ***** STOCK PRICE CHANGE ANALYSIS *****$d4d4n## /........../ ###.### ###.## ###.## ####.# # STOCK NAME CURRENT PRICE % $$d4 PRICE change inc inc$d4-------------------------------------------------$d4d4o6 oo897-$E$dY6 YY 7%E$d46-$d4po p7FpYo6[pYY 7ȀYV!kJ!K!ncYp#5=!$5J!#5k#5D!#5C!#d4Y7d46Nq6݇Ѐqq 766ǀkYJ!YK!d4ncYp#5Y=!$5YJ!#5k#5YD!#5YC!#d4d4r PORTFOLIO : ###.## #####.##rcc#5\#d4q6Ѐqq 76{B:TEMPRICE.DATk&p+Z,`,?Y6YY 7&YJ!+YK!+?6@@@@ @&p+Z,`,?Y6YY 7-&YJ!+YK!+?6&YJ!+YK!+?@@ @eB:stkprice.bakB:stkprice.datY7z6B:stkprice.datB:stkprice.$$$Y76d4 JUPDATING HISTORICAL PRICE FILE$d4#unable to rename old data file to backup$d46unable to rename temporary file to new data file$d46FILE B: STKPRICE.DAT NOT FOUND$d4check diskette loaded in drive B$d4does a stock price file exist?$d4do you want to continue the routine? y or n?n;s1'sy7@u6^d4reached END-OF-FILE on B:STKPRICE.DAT$d4 not enough stock prices in data file $d4to continue, enter yesn;s1'6FILE B: STKPRICE.BAK NOT FOUND$d4does a backup of the stock price file exist?$d4do you want to continue the routine? y or n?n;s1'sy76|FILE B:STKFIL01.DAT NOT FOUND$d4check diskette loaded in drive B$d4or perhaps you have not run the CREATE STOCK FILE yet!$d4do you want to continue the routine? y or n?n;s1'sy76 `s $$ $READING IN STOCK FILE$d4b:stkfil01.datP jY)Y<!7@Y?!p6ZY?!YA!Y<!pYH!6Y@!6 @`-$ $READING IN CURRENT PRICES$d4b:stkprice.datj*ot6Z*Y6YY 7YL!Y<!pYJ!YC!YL!YA!YA!p7CYD!p6`YD!YC!YA!dpYJ!p7~YN!p6YN!YM!YJ!dpYA!p7YE!p6YE!YL!YA!6-$ $CALCULATING ANNUAL YIELD$d4Y6YY 7uYH!vtup.YE!YE!vppdpYE!YE!YN!YE!p7YE!pYE!cp7YE!cp6 6end-of-file on unit 8 reached$d4@ $$$HISTORICAL PERFORMANCE SUMMARY OPTION LIST$d4$ $SORTING OPTIONS:$ $d4J0 = return to main menu$d4J1 = on date purchased$d4J2 = by number of shares$d4J3 = by stock exchange$d4J4 = by purchase cost$d4J5 = by current value$d4J6 = by percentage increase in value$d4J7 = by annual yield$d4J8 = by $ increase in value$d4J9 = alphabetical by stock name$d4J10 = by dividend yield$d4 $ $$denter option number for sort:n;":'76 ^966?6656z66 6`66Ѐwdate of purchase6) 7<U!H!66wnumber of shares6i 7|U!<!6\6wstock exchangexNYSEyYyy6 7>!x7YV!YY6y7xAMEX6y7xOTC6y7%xOTHER6;zyes6Rwtotal purchase price6c 7wU!A!r6V6wcurrent value6 7U!L!r66wpercentage increase in value6 7U!D! pr66wannual yield (including dividends)6E 7]U!E! pr686wdollar increase in value6 7U!C! pr66wALPHABETICAL BY NAMEzno6Rwannual dividend yield6 7U!N! pr66zyes;6<; 7IV!6/'6R(iOPTION 4 - HISTORICAL SUMMARY OF STOCK PORTFOLIOjSORTED BY w6of$d4$d4d4Ji$d4Jj$d4d4JDATE: $Z$d4d4 total total$d4Jstk date no. company stock purch current purchase$ current $ % dividend annual % of$d4Jno. purchd shrs symbol xchng equiv price cost  value increase inc yield return assets$d4d4r TOTALS : #####.## #####.## ######.## ###.#n ## /....../ ### /..../ /............/ /../ ##.### ##.### ####.## ####.## #####.## ###.# ##.# ###.# ##.#\p]p^pY6"~YY 7"]]YL!6"qY6"YY 7#Yzyes7"YV!{L!]dpncYp#5@!$5<!p#5I!$5=!$5>!$5?!#5J!#5A!#5L!#5C!#5D!#5N!#5E!#5{#d4Y7#xd4\\YA!^^YC!6"|^\dpd4rc\#5]#5^#5|#d4g`$X `$}B:STKPRICE.DATjB:STKFIL01.DATP j*o}(Z~}Xcurrent date is $Z$ = $~#d4Y6$IYY 7$R*)6$<*6$file B:STKPRICE.DAT not found$d46$file B:STKFIL01.DAT not found$d4@ @`& $$ $PRICE HISTORY FILE$d4 $$option list$ $d4$0 = RETURN to main menu$d4$1 = STORE prices in DAILY FILE$d4$2 = STORE prices in WEEKLY FILE$d4$3 = STORE prices in MONTHLY FILE$d4$4 = STORE prices in QUARTERLY FILE$d4$5 = STORE prices in ANNUAL FILE$d4 $-$ $$dSELECT option number: n;":' 7&J6^96&_6&s6&6&6&B:DAYHST.DAT6&ȀB:WEEKHST.DAT6&ȀB:MONTHST.DAT6&ȀB:QUARTHST.DAT6&ȀB:YEARHST.DAT6&j6&k`'dZsize of $$ is $p# Kbytes$d47'6'R6';Zt' %):>7'd&):>6'REOF on unit #4 : $$d4&~+?&p+?&J!+?Y6'YY 7'&YJ!+?6'@6$  !!;7(߀!!7(܀YY7(YV!U!V!U!7(YV!YV!V!V!pD7(YY6(6(0Y7(!Y!Y6(6'  !!;7)q!!q7)YqY7)YV!G!V!G!7)YV!YV!V!V!pD7)YY6)6)KY7)̀!Y!Y6)26)  &Y<!):Y=!*YI!*Y>!*Y@!*YB!)YA!)YF!):YM!)>Y6*hYY 7*n)6*[&):Z*`*>&YJ!)YK!)>Y6*YY 7**6* &Y<!p+Y=!,YI!,Y>!,Y@!,YB!+YA!+YF!p+YM!+?Y6+!YY 7+'*6+&p+Z,`,?&YJ!+YK!+?Y6+cYY 7+i+76+VV!V!pD7(YY6(6(0Y7(!rem *---------------------------------------------* rem * JULIAN DATE SUBROUTINE * rem * ---------------------- * rem * WRITTEN: Edward A. Valenzuela * rem * DATE: January 10, 1983 * rem * VERSION: 1.30 * rem *---------------------------------------------* def fn.juldate$(date$) rem *** function takes a date in month/day/year format *** rem *** and returns a character string year.julian date *** rem ......decompose the character string into three integers...... rem ......isolate the month...... rem ......find the character position for the first slash...... nc% = len(date$) sl1% = match("/",date$,1) mo$ = left$(date$,sl1%-1) month% = val(mo$) rem .....isolate the year..... rem .....find the character position for the second slash...... sl2% = match("/",date$,sl1%+1) yr$ = right$(date$,nc%-sl2%) year% = val(yr$) rem .....now isolate the day..... if (sl1%+1) <= 0 then dy$ = "0" else \ dy$ = mid$(date$,sl1%+1,sl2%-sl1%-1) day% = val(dy$) rem ......now convert the three integers to julian date...... restore data 0,3,3,6,8,11,13,16,19,21,24,26 for ki% = 1 to month% read d30% next ki% d30% = d30% + int%(year%/4) + 1 + (month%-1)*28 + day% rem ... example 1/5/1 = 0 + 0 + 1 + 0 + 5 = 6 if int%(year%/4) = year%/4 and month% < 3 then d30% = d30% - 1 rem ... thus 1/5/1 = 6-1 = 5 fn.juldate$ = str$(year%) + "." + str$(d30%) return fend def fn.juldate%(date$) jdate$ = fn.juldate$(date$) nc% = len(jdate$) sl1% = match(".",jdate$,1) yr$ = left$(jdate$,sl1%-1) year% = val(yr$) jd$ = right$(jdate$,nc%-sl1%) jd% = val(jd$) fn.juldate% = jd% + year%*365 rem ......example 1/5/1 = 5 + 365 = 370 RETURN FEND rem *----------- END julian date SUBROUTINE -------* .now isolate the day..... if (sl1%+1) <= 0 then dy$ = "0" else \ dy$ = mid$(date$,sl1%+1,sl2%-sl1%-1) day% = val(dy$) reREM *----------------------------------------------* REM * LINEAR REGRESSION * REM * ----------------- * REM * UPDATED: January 10, 1983 * REM * COPYRIGHT: E.A. Valenzuela * REM * VERSION: 1.30 * REM *----------------------------------------------* REM ... INPUT VARIABLES ... REM XR ... INDEPENDENT VARIABLE REM YR ... DEPENDENT VARIABLE REM NR ... NUMBER OF REGRESSION POINTS REM ... OUTPUT VARIABLES ... REM XAVG ... AVERAGE OF X REM YAVG ... AVERAGE OF Y REM XSD ... STANDARD DEVIATION OF X REM YSD ... STANDARD DEVIATION OF Y REM VX ... VARIATION IN X REM VY ... VARIATION IN Y REM R ... CORRELATION COEFFICIENT OF X WITH Y REM R2 ... R-SQUARED REM A ... INTERCEPT REM B ... SLOPE REM SA ... STANDARD ERROR OF INTERCEPT REM SB ... STANDARD ERROR OF SLOPE rem see ... standard error of the estimate 9100 rem ... set up summation counters ... sx = 0 sy = 0 sy2 = 0 sx2 = 0 sxy = 0 rem ... accumulate sums ... for i%=1 to nr% sx = sx + xr(i%) sx2 = sx2 + xr(i%)*xr(i%) sy = sy + yr(i%) sy2 = sy2 + yr(i%)*yr(i%) sxy = sxy + xr(i%)*yr(i%) next i% 9110 rem ... calculate averages ... xavg = sx/nr% yavg = sy/nr% rem ... store useful parameters ... t1 = sxy - xavg*yavg*NR% : rem b*t1 = sum of square about regression t2 = sx2 - xavg*xavg*NR% t3 = sy2 - yavg*yavg*NR% : rem t3 = sum of squares about mean rem ...determine slope and intercept... b = t1 / t2 a = yavg - b*xavg rem ... calculate variances ... vx = t2 / (nr%-1) vy = t3 / (nr%-1) rem ...test for negative square root ... rem ... calculate standard deviation of variables ... XSD = SQR(vx) YSD = SQR(vy) rem ...standard error of estimate...(standard deviation) see = SQR(( t3 - b*t1 ) / (nr%-2)) rem ... standard error of the slope ... sb = see / SQR( sx2 - nr%*xavg*xavg) rem ... standard error of the intercept ... SA = SB * SQR( SX2 / NR% ) rem ... calculate correlation coefficient and "r-squared" r2 = b*t1 / t3 r = SQR(R2) return REM ---------------- END OF REGRESSION --------------------- .. xavg = sx/nr% yavg = sy/nr% rem ... store useful parameters ... t1 = sxy - xavg*yavg*NR% : rem b*t1 = sum of square about regression t2 = sx2 - xavg*xavg*NR% t3 = sy2 - yavg*yavg*NR% : rem t3 = sum of squares about mean rem ...determine slope and intercept... b = t1 / t2 a = yavg - b*xavg rem ... calculate variances ... vx = t2 / (nr%-1) vy = t3 / (nr%-1) rem ...test for negative square root ... rem ... calculate standard deviation of variables ... XSD = SQR(vx) YSD = SQR(vy) rem ...standard error of estimate...(standard deviation) see = SQR(( t3 - b*t1 ) / (nr%-2)) rem ... standard error of the slope ... sb = see / SQR( sx2 - nr%*xavg*xavg) rem ... standard error of the intercept ... SA = SB * SQR( Srem *--------------- Section 8.0 ------------------* rem * * rem * HISTORICAL PORTFOLIO STATISTICAL SUMMARY * rem * ---------------------------------------- * rem * COPYRIGHT: E. A. Valenzuela * rem * DATE: February 5, 1983 * rem * VERSION: 1.31 * rem *----------------------------------------------* rem --- requires subroutines --- rem scrnin.bas rem qksort%.bas ... for sorting integers 8000 rem ...... check for end of file ...... n%=50 dim namstk$(n%),nr%(n%),a(n%),b(n%),sa(n%),sb(n%),see(n%),r2(n%),r(n%), \ ygavg(n%),yavg(n%),ysd(n%),min(n%),max(n%),yield(n%),ratio(n%),ab(n%) dim x%(N%), kode%(N%) if end # 10 then 8099 print$="T" print clear$; fn.down$(3); fn.right$(10); \ "READING IN BETA FILE" open "B:STKPRICE.DAT" as 8 read #8; nstk%, newdate$, olddate$ close 8 open "B:BETA.DAT" AS 10 nitems% = nstk% + 2 : rem ... read S&P 500 and portfolio nstk% = nstk% + 1 for i% = 1 to nitems% read #10; k%,namstk$(i%),nr%(i%),a(i%),b(i%),sa(i%),sb(i%),see(i%), \ r2(i%),r(i%),ygavg(i%),yavg(i%),ysd(i%),min(i%),max(i%),yield(i%), \ ratio(i%),ab(i%) next i% CLOSE 10 goto 8050 8099 REM "reached end-of-file on unit 10: # of stocks is "; i% close 10 8050 print clear$; fn.down$(1); fn.right$(5); \ "HISTORICAL PORTFOLIO PERFORMANCE SUMMARY OPTION LIST" print fn.down$(2); fn.right$(10); "SORTING OPTIONS:"; down$ print tab(5);"0 = return to main menu" print print tab(5);"1 = on total risk/return ratio" print tab(5);"2 = on alpha/beta ratio" print tab(5);"3 = by alpha" print tab(5);"4 = by beta" print tab(5);"5 = by geometric average return" print tab(5);"6 = by standard deviation" print down$; fn.right$(10); bell$; input "enter option number for sort:"; option% if option%=0 then RETURN on option% goto 8010,8020,8025,8030,8040,8045 8010 sort$ = "total risk/return ratio" for j%=1 to nitems% X%(j%) = ratio(j%)*100. next j% goto 8017 8020 sort$ = "alpha/beta ratio" for j% = 1 to nitems% X%(j%) = ab(j%)*1000. next j% goto 8017 8025 sort$ = "alpha - return variable" for j% = 1 to nitems% X%(j%) = a(j%)*10000. next j% goto 8017 8030 sort$ = "beta value" for j%=1 to nitems% X%(j%) = b(j%)*100. next j% goto 8017 8040 sort$ = "geometric average return" for j%=1 to nitems% X%(j%) = ygavg(j%)*10000. next j% goto 8017 8045 sort$ = "standard deviation of returns" for j%=1 to nitems% X%(j%) = ysd(j%)*10000. next j% goto 8017 rem ..... sort the percentage increases ..... 8017 sortcheck$ = "yes" N% = NITEMS% FOR J%=1 TO N% KODE%(J%)=J% NEXT J% gosub 1500 rem ...... print out statistical summary by calling print subroutine ... filename$ = "B:BETA.DAT" title1$ = "HISTORICAL SUMMARY OF PORTFOLIO from: " TITLE2$ = "SORTED BY " + SORT$ + " DATE: " for9$=" ## /........../ ### ##.### ##.### #.### #.### #.### #.### #.##"\ +"# ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##" for8$=" ## /......../ ##### ##.### ##.### #.### #.### #.### #.### ##.##"\ +"# ##.### ##.### ##.### ##.### ##.### ##.### ###.## ###.##" gosub 9023 for i%=1 to nitems% j% = kode%(i%) if j% < nitems% then \ print using for9$; i%,namstk$(j%),nr%(j%),a(j%),b(j%),sa(j%),sb(j%), \ see(j%),r2(j%),r(j%),ygavg(j%),yavg(j%),ysd(j%),min(j%),max(j%), \ yield(j%),ratio(j%),ab(j%) \ else \ print using for8$; j%,namstk$(j%),nr%(j%),a(j%),b(j%),sa(j%),sb(j%), \ see(j%),r2(j%),r(j%),ygavg(j%),yavg(j%),ysd(j%),min(j%),max(j%), \ yield(j%),ratio(j%),ab(j%) if fn.mod%(i%,5) eq 5 then print NEXT I% CONSOLE goto 8050 8049 return rem ---------- END OF PORTFOLIO STATISTICS -------- MMARY OF PORTFOLIO from: " TITLE2$ = "SORTED BY " + SORT$ + " DATE: " for9$=" ## /........../ ### ##.### ##.### #.#REM ... QUICKSORT ... FOR ALPHABETICAL SORTS ... REM REM ... WRITTEN BY: EDWARD A. VALENZUELA REM JANUARY 25, 1982 REM REM -------------------------------------------------------------------- REM REM VARIABLES: REM REM SL(P) ... THE LEFT END OF THE NEXT SUBLIST REM SR(P) ... THE RIGHT END OF THE NEXT SUBLIST REM I ....... INDEX VARIABLE FOR THE LEFT SIDE OF LIST REM L ...... LEFT END OF THE CURRENT LIST REM J ....... INDEX VARIABLE FOR THE RIGHT SIDE OF LIST REM R ...... RIGHT END OF THE CURRENT LIST REM S ....... DIRECTION SWITCH (-1 AT I, +1 AT J) REM T ....... TEMPORARY EXCHANGE VARIABLE REM X( ) .... LIST OF NUMBERS TO BE SORTED REM P ....... POINTER TO THE TOP OF THE STACK OF SUBLISTS REM REM -------------------------------------------------------------------- 1550 REM DIM SL%(20),SR%(20) P% = 1 SL%(1) = 1 SR%(1) = N% WHILE P%>0 L%=SL%(P%) R%=SR%(P%) P%=P%-1 WHILE L% < R% I% = L% J% = R% S% = -1 WHILE I% < J% IF X$(KODE%(I%)) > X$(KODE%(J%)) THEN \ T% = KODE%(I%) : \ KODE%(I%) = KODE%(J%) : \ KODE%(J%) = T% : \ S% = SGN(-S%) IF S% = 1 THEN I%=I%+1 ELSE J%=J%-1 WEND IF I%+1 < R% THEN P% = P% + 1 : \ SL%(P%) = I% + 1 : \ SR%(P%) = R% R% = I% - 1 WEND WEND RETURN  ...... RIGHT END OF THE CURRENT LIST REM S ....... DIRECTION SWITCH (-1 AT I, +1 AT J) REM T ....... TEMPORARY EXCHANGE VARIABLE REM X( ) .... LIST OF NUMBERS TO BE SORTED REM P ....... POINTER TO THE TOP OF THE STACK OF SUBLISTS REM REM -------------------------------------------------------------------- 1550 REM DIM SL%(20),SR%(20) P% = 1 SL%(1) = 1 SR%(1) = N% WHILE P%>0 L%=SL%(P%) R%=SR%(P%) P%=P%-1 WHILE L% < R% I% = L% J% = R% S% = -1REM ... QUICKSORT ... REM REM ... WRITTEN BY: EDWARD A. VALENZUELA REM JANUARY 25, 1982 REM REM -------------------------------------------------------------------- REM REM VARIABLES: REM REM SL(P) ... THE LEFT END OF THE NEXT SUBLIST REM SR(P) ... THE RIGHT END OF THE NEXT SUBLIST REM I ....... INDEX VARIABLE FOR THE LEFT SIDE OF LIST REM I1 ...... LEFT END OF THE CURRENT LIST REM J ....... INDEX VARIABLE FOR THE RIGHT SIDE OF LIST REM J1 ...... RIGHT END OF THE CURRENT LIST REM S ....... DIRECTION SWITCH (-1 AT I, +1 AT J) REM T ....... TEMPORARY EXCHANGE VARIABLE REM X( ) .... LIST OF NUMBERS TO BE SORTED REM P ....... POINTER TO THE TOP OF THE STACK OF SUBLISTS REM REM -------------------------------------------------------------------- 1500 REM DIM SL%(20),SR%(20) P% = 1 SL%(1) = 1 SR%(1) = N% WHILE P%>0 I1%=SL%(P%) J1%=SR%(P%) P%=P%-1 WHILE I1% < J1% I% = I1% J% = J1% S% = -1 WHILE I% < J% IF X%(KODE%(I%)) > X%(KODE%(J%)) THEN \ T% = KODE%(I%) : \ KODE%(I%) = KODE%(J%) : \ KODE%(J%) = T% : \ S% = SGN(-S%) IF S% = 1 THEN I%=I%+1 ELSE J%=J%-1 WEND IF I%+1 < J1% THEN P% = P% + 1 : \ SL%(P%) = I% + 1 : \ SR%(P%) = J1% J1% = I% - 1 WEND WEND RETURN URRENT LIST REM S ....... DIRECTION SWITCH (-1 AT I, +1 AT J) REM T ....... TEMPORARY EXCHANGE VARIABLE REM X( ) .... LIST OF NUMBERS TO BE SORTED REM P ....... POINTER TO THE TOP OF THE STACK OF SUBLISTS REM REM -------------------------------------------------------------------- 1500 REM DIM SL%(20),SR%(20) P% = 1 SL%(1) = 1 SR%(1) = N% WHILE P%>0 I1%=SL%(P%) J1%=SR%(P%) P%=P%-1 WHILE I1% < J1% I% = I1% J% = J1% S% = -1 WHILE rem *----------------------------------------------* rem * SCREEN COMMANDS ROUTINES * rem * ------------------------ * rem * FROM: CBASIC USER GUIDE * rem * BY: Osborne, Eubanks, McNiff * rem * DATE: December 15, 1982 * rem * VERSION: 1.25 * rem *----------------------------------------------* 500 rem ......screen commands routines.............. def fn.mod%(j%,i%) a% = j% - int%( (j%-1)/i% ) * i% fn.mod% = a% RETURN fend rem ******************* define constants ******************************* home$ = chr$(30) : \ move cursor to column 1, row 1 clear$ = chr$(26) : \ clear screen, home cursor up$ = chr$(11) : \ move cursor up 1 row down$ = chr$(10) : \ move cursor down one row cr$ = chr$(13) : \ carriage return without line feed rht$ = chr$(12) : \ move cursor right one space lft$ = chr$(8) : \ move cursor left one position bell$ = chr$(7) : \ ring bell line% = 60 rem ... printer control ... newpage$ = chr$(12) small.print$ = chr$(29) rem .....the following cursor movement string characters are defined at rem .....the start of the program to be used by all modules rem ******************** initialize string variables ******************** bl$ = " " for j% = 1 to 7 bl$ = bl$ + bl$ next j% movr$ = rht$ for j% = 1 to 7 movr$ = movr$ + movr$ next j% movu$ = up$ for j% = 1 to 6 movu$ = movu$ + movu$ next j% movd$ = down$ for j% = 1 to 6 movd$ = movd$ + movd$ next j% rem ******************** define functions **************************** def fn.up$(i%) = left$(movu$,i% * len(up$)) def fn.down$(i%) = left$(movd$,i% * len(down$)) def fn.right$(i%) print up$ fn.right$ = left$(movr$,(i%-1) * len(rht$)) return fend def fn.line$(i%) fn.line$ = home$ + \ fn.down$(i%-1) return fend def fn.clear$(first%,last%) fn.clear$ = fn.right$(first%-1) + \ left$(bl$,last%-first%+1) return fend def fn.entry$(row%,col%,prompt$,linep%,colp%) rem ... prints a prompt in the comment section of the display at rem ... line linp%, column colp% rem ... moves the cursor up row% rows and over to column col% rem ... to print a question mark and receive input print fn.line$(linep%) ; fn.clear$(colp%,line%) ; \ write prompt bell$; fn.right$(colp%); prompt$ ; \ fn.up$(row%) ; \ position cursor fn.clear$(col%,line%); fn.right$(col%); input temp$ fn.entry$ = temp$ return fend rem ---------------------------- end of utility routines --------------- ht$)) return fend def fn.line$(i%) fn.line$ = home$ + \ fn.down$(i%-1) return fend def fnrem *----------------------------------------------* rem * SCREEN COMMANDS ROUTINES * rem * ------------------------ * rem * FROM: CBASIC USER GUIDE * rem * BY: Osborne, Eubanks, McNiff * rem * DATE: December 15, 1982 * rem * VERSION: 1.25 * rem *----------------------------------------------* 500 rem ......screen commands routines.............. def fn.mod%(j%,i%) a% = j% - int%( (j%-1)/i% ) * i% fn.mod% = a% RETURN fend rem ******************* define constants ******************************* home$ = chr$(30) : \ move cursor to column 1, row 1 clear$ = chr$(26) : \ clear screen, home cursor up$ = chr$(11) : \ move cursor up 1 row down$ = chr$(10) : \ move cursor down one row cr$ = chr$(13) : \ carriage return without line feed rht$ = chr$(12) : \ move cursor right one space lft$ = chr$(8) : \ move cursor left one position bell$ = chr$(7) : \ ring bell line% = 60 rem ... printer control ... newpage$ = chr$(12) small.print$ = chr$(29) rem Revised for Epson by Jim Woolley, FOG Disk Librarian, 5/83 small.print$ = chr$(15) rem .....the following cursor movement string characters are defined at rem .....the start of the program to be used by all modules rem ******************** initialize string variables ******************** bl$ = " " for j% = 1 to 7 bl$ = bl$ + bl$ next j% movr$ = rht$ for j% = 1 to 7 movr$ = movr$ + movr$ next j% movu$ = up$ for j% = 1 to 6 movu$ = movu$ + movu$ next j% movd$ = down$ for j% = 1 to 6 movd$ = movd$ + movd$ next j% rem ******************** define functions **************************** def fn.up$(i%) = left$(movu$,i% * len(up$)) def fn.down$(i%) = left$(movd$,i% * len(down$)) def fn.right$(i%) print up$ fn.right$ = left$(movr$,(i%-1) * len(rht$)) return fend def fn.line$(i%) fn.line$ = home$ + \ fn.down$(i%-1) return fend def fn.clear$(first%,last%) fn.clear$ = fn.right$(first%-1) + \ left$(bl$,last%-first%+1) return fend def fn.entry$(row%,col%,prompt$,linep%,colp%) rem ... prints a prompt in the comment section of the display at rem ... line linp%, column colp% rem ... moves the cursor up row% rows and over to column col% rem ... to print a question mark and receive input print fn.line$(linep%) ; fn.clear$(colp%,line%) ; \ write prompt bell$; fn.right$(colp%); prompt$ ; \ fn.up$(row%) ; \ position cursor fn.clear$(col%,line%); fn.right$(col%); input temp$ fn.entry$ = temp$ return fend rem ---------------------------- end of utility routines --------------- len(down$)) def fn.right$(i%) print up$ fn.right$ = left$(movr$,(i%-1) * len(rht$)) return fend def fn.lirem *----------------------------------------------* rem * SCREEN COMMANDS ROUTINES * rem * ------------------------ * rem * FROM: CBASIC USER GUIDE * rem * BY: Osborne, Eubanks, McNiff * rem * DATE: December 15, 1982 * rem * VERSION: 1.25 * rem *----------------------------------------------* 500 rem ......screen commands routines.............. def fn.mod%(j%,i%) a% = j% - int%( (j%-1)/i% ) * i% fn.mod% = a% RETURN fend rem ******************* define constants ******************************* home$ = chr$(30) : \ move cursor to column 1, row 1 clear$ = chr$(26) : \ clear screen, home cursor up$ = chr$(11) : \ move cursor up 1 row down$ = chr$(10) : \ move cursor down one row cr$ = chr$(13) : \ carriage return without line feed rht$ = chr$(12) : \ move cursor right one space lft$ = chr$(8) : \ move cursor left one position bell$ = chr$(7) : \ ring bell line% = 60 rem ... printer control ... newpage$ = chr$(12) small.print$ = chr$(29) rem Revised for NEC 8023 by Jim Woolley, FOG Disk Librarian, 5/83 rem Applicable to C.Itoh 8510 & TEC, also small.print$ = chr$(27)+"Q" rem .....the following cursor movement string characters are defined at rem .....the start of the program to be used by all modules rem ******************** initialize string variables ******************** bl$ = " " for j% = 1 to 7 bl$ = bl$ + bl$ next j% movr$ = rht$ for j% = 1 to 7 movr$ = movr$ + movr$ next j% movu$ = up$ for j% = 1 to 6 movu$ = movu$ + movu$ next j% movd$ = down$ for j% = 1 to 6 movd$ = movd$ + movd$ next j% rem ******************** define functions **************************** def fn.up$(i%) = left$(movu$,i% * len(up$)) def fn.down$(i%) = left$(movd$,i% * len(down$)) def fn.right$(i%) print up$ fn.right$ = left$(movr$,(i%-1) * len(rht$)) return fend def fn.line$(i%) fn.line$ = home$ + \ fn.down$(i%-1) return fend def fn.clear$(first%,last%) fn.clear$ = fn.right$(first%-1) + \ left$(bl$,last%-first%+1) return fend def fn.entry$(row%,col%,prompt$,linep%,colp%) rem ... prints a prompt in the comment section of the display at rem ... line linp%, column colp% rem ... moves the cursor up row% rows and over to column col% rem ... to print a question mark and receive input print fn.line$(linep%) ; fn.clear$(colp%,line%) ; \ write prompt bell$; fn.right$(colp%); prompt$ ; \ fn.up$(row%) ; \ position cursor fn.clear$(col%,line%); fn.right$(col%); input temp$ fn.entry$ = temp$ return fend rem ---------------------------- end of utility routines --------------- rem *______________ Section 5.5 ___________________* rem * * rem * PRINT STOCK STATISTICS PROGRAM * rem * ------------------------------ * rem * UPDATED: January 10, 1983 * rem * COPYRIGHT: E. A. Valenzuela * rem * VERSION: 1.30 * rem *----------------------------------------------* rem *--- requires subroutines --- rem scrnin.bas ... for function 6600 REM 6610 rem set up printer for small print 132 characters per line lprinter width 132 print small.print$ print newpage$ print print tab(6);title$ PRINT TAB(8);TITLE2$ print print tab(6); "DATE: "; newdate$ print RETURN 6620 rem ...performance vs. original purchase ... print " total total" print tab(6);"stk date no. company stock purch current purchase" \ ;" current $ % dividend annual % of" print tab(6);"no. purch d shrs symbol xchng equiv price cost " \ +" value increase inc yield return assets" print for6$=" TOTALS : #####.##" \ +" #####.## ######.## ###.#" for5$=" ## /....../ ### /..../ /............/ /../ ##.### ##.### ####.##" \ +" ####.## #####.## ###.# ##.# ###.# ##.#" sum1=0 sum2=0 sum3=0 for i% = 1 to nstk% sum2=sum2 + NEWvalue(i%) next i% for i% = 1 to nstk% j% = i% if sortcheck$="yes" then j% = kode%(i%) pcntport = newvalue(j%)/sum2 * 100 print using for5$;i%,purdate$(j%),nshrs%(j%),symbol$(j%),namstk$(j%), \ xchng$(j%),equiv(j%),NEWprice(j%),totpurprice(j%),NEWvalue(j%), \ INCVALUE(j%),pcntinc(j%),yield(j%),ANYIELD(J%),pcntport if fn.mod%(i%,5) eq 5 then print sum1=sum1+totpurprice(i%) sum3=sum3+INCVALUE(i%) next i% sum4=sum3/sum1*100. print print using for6$; sum1,sum2,sum3,sum4 CONSOLE RETURN rem *---------- end of sub stock file print -------*  print for6$=" TOTALS : #####.##" \ +" #####.## ######.## ###.#" for5$=" ## /....../ ### /..../ /............/ /../ ##.### ##.### ####.##" \ +" ####.## #####.## ###.# ##.# ###.# ##.#" sum1=0 sum2=0 sum3=0 for i% = 1 to nstk% sum2=sum2 + NEWvalue(i%) next i% for i% = 1 to nstk% j% = i% if sortcheck$="yes" then j% = kode%(i%) pcntport = newvalue(j%)/sum2 * 100 print using for5$;i%,purdate$(j%),nshrs%(j%),symbol$(j%),namstk$(j%), \ xchng$(j%),equiv(j%),NEWprice(j%),totpurprice(j%),NEWvalue(j%), \ INCVALUE(j%),pcntinc(j%),yield(j%),ANYIELD(J%),pcntport if fn.mod%(i%,5) eq 5 then print sum1=sum1+totpurprice(i%) sum3=sum3+INCVALUE(i%) next i% sum4=sum3/sum1*100. print print using for6$; sum1,sum2,sum3,sum4 CONSOLE RETURN rem *--rem *----------------------------------------------* rem * STOCK GRAPH PROGRAM * rem * ------------------- * rem * * rem * COPYRIGHT: E.A. Valenzuela * rem * DATE: February 25, 1983 * rem * VERSION: 1.35 * rem *----------------------------------------------* rem ----- requires following subroutines ----- rem stkplot.bas rem linreg.bas rem stkbeta.bas rem scrnin.bas ... for screen handling rem portprfm.bas rem qksort%.bas COMMON option%,entry%, nstk%,morestock$ rem ... dimension arrays ... dim x0(99), x(99), y(99), xr(99), yr(99) dim key%(99), ynew%(99) rem ... define functions ... %include SCRNIN rem ... proceed to stkbeta ... INITIALIZE entry% = 3 900 rem ... print main menu ... if option% = 6 then GOSUB 9001 if option% = 9 then gosub 8000 rem ... return to main program ... drive$ = "A:" prog.name$ = "STKBASE" CHAIN DRIVE$ + PROG.NAME$ goto 99 rem --- other programs --- %include STKBETA %include STKPLOT %include LINREG %include PORTPRFM %include QKSORT% 99 end------- * rem * * rem * COPYRIGHT: E.A. Valenzuela * rem * DATE: February 25, 1983 * rem * VERSION: 1.35 * rem *----------------------------------------------* rem ----- requires following subroutines ----- rem stkplot.bas rem linreg.bas rem stkbeta.bas rem scrnin.bas ... for screen handling rem portprfm.bas rem qksort%.bas COMMON option%,entry%, nstk%,morestock$ rem ... dimension arrays ... dim x0(99), x(99), y(99), xr(99), yr(99) dim key%(99), ynew%(99) rem ... define functions ... %include SCRNIN rem ... proceed to stkbeta ... INITIALIZE entry% = 3 900 rem ... print main menu ... if option% = 6 then GOSUB 9001 if option% = 9 then gosub 8000 rem ... return to main program ... drive$ = "A:" prog.name$ = "STKBASE" CHAIN DRIVE$ + PROG.NAME$ goto 99 rem --- other programs --- %inclrem *_______________ section 5.1 __________________* rem * HISTORICAL STOCK PRICE FILE * rem * --------------------------- * rem * UPDATED: February 5, 1983 * rem * BY: Edward A. Valenzuela * rem * VERSION: 1.31 * rem *______________________________________________* rem *--- requires subroutines --- rem juldate%.bas rem stkprice.bas ... for jump vectors rem scrnin.bas 5500 rem if end #8 then 5529 if end #9 then 5539 OPEN "B:STKPRICE.DAT" AS 8 OPEN "B:STKFIL01.DAT" recl 80 AS 9 GOSUB 320 : rem .. read price file header dummy$ = fn.juldate$(newdate$) dummy = val(dummy$) nitem%=nstk% + 1 print "current date is "; newdate$ ; " = "; dummy FOR I%=1 TO NSTK% GOSUB 325 : rem ... read all prices GOSUB 310 : rem ... read all names NEXT I% GOSUB 325 : rem .. S&P 500 price goto 5517 5529 print "file B:STKPRICE.DAT not found" goto 5517 5539 print "file B:STKFIL01.DAT not found" ! 5517 CLOSE 8,9 5508 if end #4 then 5519 print clear$; fn.down$(2); \ fn.right$(10); "PRICE HISTORY FILE" print down$; fn.right$(15); "option list"; down$ print fn.right$(4); "0 = RETURN to main menu" print fn.right$(4); "1 = STORE prices in DAILY FILE" print fn.right$(4); "2 = STORE prices in WEEKLY FILE" print fn.right$(4); "3 = STORE prices in MONTHLY FILE" print fn.right$(4); "4 = STORE prices in QUARTERLY FILE" print fn.right$(4); "5 = STORE prices in ANNUAL FILE" print down$; fn.line$(17); fn.right$(10); bell$ ; input "SELECT option number: "; option% if option% <= 0 or option% > 5 then goto 900 ON option% goto 5501,5502,5503,5504,5505 5501 filename$ = "B:DAYHST.DAT" goto 5507 5502 filename$ = "B:WEEKHST.DAT" goto 5507 5503 filename$ = "B:MONTHST.DAT" goto 5507 5504 filename$ = "B:QUARTHST.DAT" goto 5507 5505 filename$ = "B:YEARHST.DAT" goto 5507 5507 OPEN FILENAME$ RECL 8 AS 4 GOTO 5511 5519 REM ... no file exists, create one ... CREATE FILENAME$ RECL 8 AS 4 5511 if end #4 then 5521 rem ... find size of data file ... area% = size( filename$ ) print "size of "; filename$; " is "; area%; " Kbytes" if area% < 1024 then goto 5523 rem ... FN.LAST.BLK% FINDS THE NUMBER OF THE FIRST RECORD OF THE LAST rem ... BLOCK OCCUPIED BY A RELATIVE FILE ... DEF FN.LAST.BLK%(FILE.NAME$,REC.SIZE%) FILE.SIZE% = SIZE(FILE.NAME$) FN.LAST.BLK% = ((FILE.SIZE% - 1) * 1024)/ REC.SIZE% + 1 RETURN FEND rem ... find END-OF-FILE by reading all records in last block ... read #4, fn.last.blk%(FILENAME$,8); num1% 5523 WHILE -1 read #4 ; dum1% WEND 5521 rem ... end of file on stock history file found ... print "EOF on unit #4 : "; filename$ rem ... print date, number of items ... print #4 ; dummy print #4 ; nitem% rem ... print the prices to file ... print #4 ; NEWPRICE(nitem%) : rem ... S&P 500 FOR I%=1 TO NSTK% print #4 ; NEWprice(I%) NEXT I% CLOSE 4 REM -------------------- END OF HISTORY FILE---------------- REM SUBROUTINE goto 5508 5509 RETURN .. FN.LAST.BLK% FINDS THE NUMBER OF THE FIRST RECORD OF THE LAST rem ... BLOCK OCCUPIED BY A RELATIVE FILE ... DEF FN.LAST.BLK%(FILE.NAME$,REC.SIZE%) FILE.SIZE% = SIZE(FILE.NAME$) FN.LAST.BLK% = ((FILE.SIZE% - 1) * 1024)/ REC.SIZE% + 1 RETURN FEND rem ... find END-OF-FILE by reading all records in last block ... read #4, fn.last.blk%(FILENAME$,8); num1% 5523 WHILE -1 read #4 ; dum1% WEND 5521 rem ... end of file on stock history file found ... print "EOF on unit #4 : "; filename$ rem ... print date, number of items ... print #4 ; dummy print #4 ; nitem% rem ... print the prices to file ... print #4 ; NEWPRICE(nitem%) : rem ... S&P 500 FOR I%=1 TO NSTK% print #4 ; NEWprice(I%) NEXT I% REM *------------ SUBROUTINE STKPLOT --------------* REM * ------------------ * REM * UPDATED: February 5, 1983 * REM * BY: Edward A. Valenzuela * REM * VERSION: 1.31 * REM *----------------------------------------------* rem ..... VARIABLE LIST ...... rem ... min, max rem ... y(nstk%) ... prices rem ... nr% ... number of returns (np%-1) rem ... np% ... number of prices in price file rem ... points% ... number of prices used in plot 298 rem ... find max and min ... np% = nr% + 1 new%=1 if np% <= 52 then points%=np% else points%=52 if np% <= 52 then goto 303 new% = np%-52 303 l%=0 for k%=new% to np% l%=l%+1 yr(l%) = y(k%) next k% min=yr(1) max=yr(1) for k%=2 to points% if yr(k%) > max then max=yr(k%) if yr(k%) < min then min=yr(k%) next k% range = max - min if auto.scale$="A" then goto 314 if max > 10.5 then goto 309 max = 10.5 top0$ = "10" top1$ = " 7" mid0$ = " 5" mid1$ = " 2" GOTO 321 309 if max > 21 then goto 311 max = 21 top0$ = "20" top1$ = "15" mid0$ = "10" mid1$ = " 5" GOTO 321 311 if max > 42 then goto 312 max = 42 top0$ = "40" top1$ = "30" mid0$ = "20" mid1$ = "10" GOTO 321 312 if max > 84 then goto 313 max = 84 top0$ = "80" top1$ = "60" mid0$ = "40" mid1$ = "20" GOTO 321 313 if max > 168 then goto 314 max = 168 top0$ = "160" top1$ = "120" mid0$ = "80" mid1$ = "40" GOTO 321 rem ... automatic scaling of the axes ... 314 scale.factor = (max - min )/21.0 sf = 1.0 / scale.factor offset = min top0$ = left$( str$( max ),4 ) top1$ = left$( str$( min + range*0.75 ),4 ) mid0$ = left$( str$( min + range*0.5 ),4 ) mid1$ = left$( str$( min + range*0.25 ),4 ) zero$ = left$( str$( min ),4 ) goto 322 321 rem ... transform into 0-21 scale.factor = (max)/21.0 sf = 1.0 / scale.factor offset = 0 zero$ = " 0" 322 for k%=1 to points% ynew = (yr(k%)-offse"t)*sf ynew%(k%) = int%( YNEW ) next k% rem ... do bar chart ... rem ... clear screen, position cursor at upper left ... console : rem ... print y-axis scale ... dash$ = "--------------------------------------------------" print clear$; tab(10); namstk$ print fn.line$(3) ; fn.right$(6); dash$ print fn.line$(8) ; fn.right$(6); dash$ print fn.line$(13); fn.right$(6); dash$ print fn.line$(18); fn.right$(6); dash$ print fn.line$(3) ; top0$ print fn.line$(8) ; top1$ print fn.line$(13); mid0$ print fn.line$(18); mid1$ print fn.line$(23); zero$; home$ scr=61444 rem ... form y-axis line ... for k%=1 to 22 j%=22-k% if ( fn.mod%(j%,5) eq 5 ) then ch%=12 else ch%=11 scr=scr+128 poke scr,ch% next k% rem ... form x-axis line for k%=1 to 52 if ( fn.mod%(k%,5) eq 5 ) then ch%=12 else ch%=27 scr=scr+1 poke scr,ch% next k% print fn.line$(23); tab(10); "5"; " 10"; \ " 15"; " 20"; " 25"; " 30"; " 35"; \  " 40"; " 45"; " 50"; home$ rem ... position cursor at bottom left ... scr=64133 ch%=127 for l%=1 to points% k% = ynew%(l%) for j%=1 to k% if k% = 0 then goto 329 poke scr,ch% 329 scr=scr-128 if scr < 61440 then goto 299 next j% scr=64133+l% if scr > 65535 then goto 299 next l% RETURN 299 print "error in graphics";scr;ch% RETURN fn.line$(13); mid0$ print fn.line$(18); mid1$ print fn.line$(23); zero$; home$ scr=61444 rem ... form y-axis line ... for k%=1 to 22 j%=22-k% if ( fn.mod%(j%,5) eq 5 ) then ch%=12 else ch%=11 scr=scr+128 poke scr,ch% next k% rem ... form x-axis line for k%=1 to 52 if ( fn.mod%(k%,5) eq 5 ) then ch%=12 else ch%=27 scr=scr+1 poke scr,ch% next k% print fn.line$(23); tab(10); "5"; " 10"; \ " 15"; " 20"; " 25"; " 30"; " 35"; \ rem ************************************************ rem * STOCK PRICE DATABASE PROGRAM * rem ************************************************ rem * MAIN PROGRAM 2 - STKPRICE.BAS * rem * ----------------------------- * rem * COPYRIGHT: Edward A. Valenzuela * rem * DATE: February 5, 1983 * rem * VERSION: 1.31 * rem ************************************************ COMMON OPTION%,entry%, nstk%,morestock$ rem ---------- functions used in program ------------------------------- %include scrnin %include juldate% n%=50 dim nshrs%(n%),namstk$(n%),xchng$(n%),equiv(n%) dim purdate$(n%),totpurprice(n%),commission(n%) dim incvalue(n%),pcntinc(n%),anyield(n%),key%(n%) dim X$(N%),day%(n%),symbol$(n%) DIM NEWPRICE(N%),OLDPRICE(N%),NEWVALUE(N%) dim dividend(n%),YIELD(N%) rem ... stock beta calculation arrays ... m%=50 dim x(m%),y(m%),x0(m%),xr(m%),yr(m%),x%(m%),kode%(m%) entry% = 2 900 REM ...PRINT MAIN MENU... if option% = 4 THEN GOTO 940 if option% = 5 then goto 950 GOTO 990 rem -----end of screen option menu----- 940 rem ...... performance summary ...... rem ...... versus original purchase ...... gosub 7000 goto 900 950 rem ...... update weekly stock prices ...... gosub 5000 goto 900 990 rem ..... return to original menu ..... drive$ = "A:" prog.name$ = "STKBASE" CHAIN DRIVE$ + PROG.NAME$ goto 999 rem ************************************************ rem * SUBROUTINES * rem ************************************************ %include stkupdat %include stkprfm %include stkfprnt %include stkhist %include qksort% %include qksort$ rem *---------------- END STKPRICE ----------------* rem ... jump vectors for reading and writing files rem ----------------------------------------------- 310 rem ... unit number 9 READ #9; nshrs%(i%), namstk$(i%), symbol$(i%), xchng$(i%), purdate$(i%), \ commission(i%), totpurprice(i%), key%(i%), dividend(i%) RETURN 315 rem ... read nstk% records rem ... use i% for array element FOR i% = 1 to nstk% GOSUB 310 NEXT i% RETURN 320 rem ... unit number 8 READ #8; nstk%, newdate$, olddate$ RETURN 325 rem ... use i% for array element READ #8; newprice(i%),oldprice(i%) RETURN 330 rem ... read nstk% records FOR i% = 1 to nstk% GOSUB 325 NEXT i% RETURN 335 rem ... unit number 9 PRINT #9; nshrs%(i%), namstk$(i%), symbol$(i%), xchng$(i%), purdate$(i%), \ commission(i%), totpurprice(i%), key%(i%), dividend(i%) RETURN 340 rem ... print nstk% records rem ... use i% for array element FOR i% = 1 to nstk% GOSUB 335 NEXT i% RETURN 345 rem ... unit number 8 PRINT #8; nstk%, newdate$, olddate$ RETURN 350 rem ... use i% for array element PRINT #8; newprice(i%), oldprice(i%) RETURN 355 rem ... print nstk% records FOR i% = 1 to nstk% GOSUB 350 NEXT# i% RETURN 999 end rem ************** MAIN PROGRAM END **************** 0 NEXT i% RETURN 320 rem ... unit number 8 READ #8; nstk%, newdate$, olddate$ RETURN 325 rem ... use i% for array element READ #8; newprice(i%),oldprice(i%) RETURN 330 rem ... read nstk% records FOR i% = 1 to nstk% GOSUB 325 NEXT i% RETURN 335 rem ... unit number 9 PRINT #9; nshrs%(i%), namstk$(i%), symbol$(i%), xchng$(i%), purdate$(i%), \ commission(i%), totpurprice(i%), key%(i%), dividend(i%) RETURN 340 rem ... print nstk% records rem ... use i% for array element FOR i% = 1 to nstk% GOSUB 335 NEXT i% RETURN 345 rem ... unit number 8 PRINT #8; nstk%, newdate$, olddate$ RETURN 350 rem ... use i% for array element PRINT #8; newprice(i%), oldprice(i%) RETURN 355 rem ... print nstk% records FOR i% = 1 to nstk% GOSUB 350 NEXTrem *_________________ section 5.0 ________________* rem * STOCK PRICE UPDATE ROUTINE * rem * -------------------------- * rem * UPDATED: January 10, 1983 * rem * BY: Edward A. Valenzuela * rem * VERSION: TRUNCATED FOR STOCK BASE PROGRAM * rem * -------------------------------- * rem * REVISION: 1.30 * rem *----------------------------------------------* rem ----- requires subroutines ----- rem scrnin.bas ... for screen handling 5200 rem ... update the current price of each stock ... print clear$ print "enter date of current stock prices: mo/dy/yr" input newdate$ nbegin%=1 sum1 =0 sum2 =0 sum3 =0 print clear$ GOSUB 5250 5210 for i%=nbegin% to nstk% print fn.line$(14) for j%=1 to 4 print fn.clear$(2,line%) next j% print fn.line$(16); \ "INSTRUCTIONS: ENTER stock price for "; namstk$(i%); BELL$ input NEWprice(i%) GOSUB 5250 : rem ...print heading GOSUB 5255 : rem ...print record next i% FOR I%=1 to nstk% oldval = nshrs%(i%)*OLDprice(i%) sum2 = sum2 + oldval newval = nshrs%(i%)*NEWprice(i%) sum3 = sum3 + newval NEWvalue(i%) = newval incvalue(i%) = newval - oldval sum1 = sum1 + incvalue(i%) rem ... check for no oldvalue ... if oldval = 0 then pcntinc(i%) = 0 else \ pcntinc(i%) = ( incvalue(i%)/oldval * 100. ) NEXT I% if sum2 = 0 then sum9 = 0 else sum9 = sum1/sum2 * 100. if end #8 then 5213 read #8; OLDprice(i%),dummyprice 5213 namstk$(i%)="S&P 500" print fn.line$(15); fn.clear$(2,line%) : \ print fn.clear$(2,line%) : \ print fn.line$(16); \ "INSTRUCTIONS: ENTER stock price for "; namstk$(i%); BELL$ input NEWprice(i%) incvalue(i%) = NEWprice(i%) - OLDprice(i%) if OLDprice(i%) = 0 then pcntinc(i%) = 0 else \ pcntinc(i%)=( incvalue(i%)/OLDprice(i%) * 100. ) rem ... ASK IF ANY MISTAKES ... PRINT print "You now have a chance to correct input errors" 5308 input "any price changes ? (y/n)?"; yes$ if yes$ = "n" or yes$ = "N" then goto 5310 input "enter number of stock for price change"; num% previous.value = nshrs%(num%)*newprice(num%) print "price for "; namstk$(num%); " is "; newprice(num%) input "enter correct price "; newprice(num%) oldval = nshrs%(num%)*oldprice(num%) newval = nshrs%(num%)*NEWprice(num%) sum3 = sum3 + newval - previous.value NEWvalue(num%) = newval incvalue(num%) = newval - oldval sum1 = sum1 + incvalue(num%) - (previous.value-oldval) rem ... check for no oldvalue ... if oldval = 0 then pcntinc(num%) = 0 else \ pcntinc(num%) = ( incvalue(num%)/oldval * 100. ) if sum2 = 0 then sum9 = 0 else sum9 = sum1/sum2 * 100. GOTO 5308 5310 rem ----- sort the percentage increases ----- 5250 rem ... home cursor, print header ... print home$ for j%=1 to 4 print fn.clear$(2,line%) next j% print home$ print tab(4); " ***** STOCK PRICE UPDATE *****" print print "number STOCK NAME OLD PRICE NEW PRICE change" print "---------------------------------------- ------" print RETURN 5255 rem ... display next record ... if i% < 6 then print fn.line$( 4 + fn.mod%(i%,5) ) else \ print fn.line$(24) : print fn.line$(9) pq = newprice(i%) - oldprice(i%) print using \ " ### / stock name / ##.### ##.### ###.###" ; \ i%,namstk$(i%),oldprice(i%),newprice(i%),pq RETURN 5410 rem ----- SUBROUTINE WRITE TO FILE ----- print # 1 ; nstk%,newdate$,olddate$ for i%=1 to nstk% print #1; NEWprice(i%),OLDprice(i%) next i% print #1; NEWprice(i%),OLDprice(i%) : rem S&P 500 rem ...... close all open files ...... CLOSE 1 5480 RETURN 5999 RETURN rem *------------ end of weekly update ------------*em ... home cursor, print header ... print home$ for j%=1 to 4 print fn.clear$(2,line%) next j% print home$ pr$83.035 11 146.14 19.5 37 35.125 39.5 20.375 26 15.75 33 10 29.625 83.038 11 146.93 20.25 36.75 35.25 40.25 21 26.5 15.5 34.125 11 29.875 83.04 11 145 20.125 35.75 33.625 40.375 20.75 28 15.5 32.625 11 28.75 83.041 11 147.5 20.875 36.5 35 41 21.5 29.5 15.5 33 11.125 30.125 83.042 11 147.63 20.5 36.5 34.875 41.375 21.5 29.75 16 34 11.25 30.125 83.045 11 148.92 20.875 37.5 36.375 45.375 21.375 29.75 17 34 11.25 29.625 83.046 11 148.3 20.5 38 35.75 44.875 20.875 29.25 16.5 33.75 11.375 29.25 83.047 11 147.43 20.125 38 36 44.25 20.125 28.75 17 33.875 11.25 29.25 83.48 11 147.44 20.25 37.5 36 43.875 19.625 28.5 17 33.375 11 29.5 83.49 11 148 20.875 37.875 35.875 44.25 19.75 29.75 18.25 33.75 10.875 29.625 83.53 11 145.48 20.625 37.75 35.75 45.25 19 29.5 17.75 32.375 11.5 29.25 83.54 11 146.79 20.5 37.75 36 47.5 19 29.5 17.25 30.375 11.375 30.5 83.55 11 149.6 20.25 39.25 36 47.5 20.375 30.25 17.25 31.375 11.5 31.25 83.56 11 149.74 20.5 40.375 36 47.375 20.125 30 16.5 32.25 11.75 31.25 83.59 11 148.06 20.25 40 35.75 48.125 19.125 30 17.25 31 11.625 31 83.61 11 150.88 20.25 40.25 36.5 49 19 29.75 17.75 31 11.375 31.75 83.62 11 152.3 19.875 40.125 37.25 48.5 20.125 30 18.25 30.375 11.5 31.625 83.63 11 153.48 19.5 41 38.75 47.375 20 32.75 18.25 29.75 11.5 31.875 83.64 11 153.67 19.25 41 40 45.625 19.125 32.75 18 30.125 11.5 31.75 82,"aeroflex labs","ARX","AMEX","5/19/81",35,1454.73,1,0 100,"andrew corp","ANDW","OTC","12/09/81",0,2075,2,0 40,"automatic data proc","AUD","NYSE","3/12/80",30,710,3,0 53,"aydin corp","AYD","NYSE","7/28/80",35,1119.46,4,0 25,"Baker International","BKD","NYSE","12/22/82",0,562.5,5,0 100,"cipher data products","CIPD","OTC","1/20/83",65.11,2715.11,6,0 248,"computer data","CPTD","OTC","1/20/81",35,1327.43,7,0 50,"cooper industries","CBE","NYSE","5/18/82",35,1585.86,8,0 85,"dayco","DAY","NYSE","7/14/80",42,985,9,0 16,"dow chemical","DOW","NYSE","6/30/81",30,300,10,1.8 10,"3/4/83","2/4/83" 19.25,19.5 41,41 40,38.75 45.625,47.375 19.125,20 32.75,32.75 18,18.25 30.125,29.75 11.5,11.5 31.75,31.875 153.67,153.48 JULDATE%BASz{LINREG BAS|}~PORTPRFMBASQKSORT$ BAS QKSORT% BAS SCRNIN BASSCRNIN2 BASSCRNIN3 BASSTKFPRNTBASSTKGRAPHBAS STKHIST BASSTKPLOT BASSTKPRICEBASSTKUPDTEBASDAYHST DATSTKFIL01DATSTKPRICE$$$ (Thi tex wa transcribe b Ji Swit o 1 Sept 8 fro a enclosur t STKBASE writte b E Valenzuela) Dear Investor: Enclose yo wil fin tw single-side single-densit Osborn forma disks Thes contai th STKBAS progra a describe i th FO newslette an th Portabl Companion BEFOR YO D ANYTHIN ELSE MAK TW O MOR BACKUP COPIES OF THE TWO DISKS. Now proceed. Ther ar CBASI progra files wit suffi BA scattere o th disks Ther ar CBASI run-tim intermediat files wit suffi IN o on o th disks Th dis wit th IN file o i i wha cal th "program disk dis #1" Ther ar sampl dat files wit suffi DA o th othe o th tw disks whic cal th "dat file disk dis #2" Thu yo shoul b abl t se demonstratio b placin th program dis wit th IN file o on driv an th dat file dis o th other an   drive respectively afte th program hav bee load%e b CBASIC Ther i als documentatio file wit suffi DO o th disk BEFOR DOINǠ ANYTHIN ELSE PRIN OU THI FIL AN REA IT It' calle STOKBASE.DO an yo ca us eithe Wordsta o PI t lis th file I yo tr runnin th dem o th backups not tha th option hav bee renumbered Bu th choice ar stil correct Ther isn' enoug dis storag o th origina progra disk t creat ne files s don' tr th bet calculatio o updatin pric inf withou copyin th fou sampl dat file ove t anothe dis wit roo fo th backu file an ne file (ther ar DA file an BA file) Thi onl applie t th sampl runs. Mak director listin o bot disk now t insur tha yo hav tw distinc disk wit al thes file o them Whe yo begi t creat you ow portfoli files star small Star wit tw stock o bran ne formatte disk I yo successfull complet that the g bac an star ove o th rea portfolio Ente fe stock a tim an kee makin backup s yo won' los everythin b creatin ne fil ove a ol on tha ;yo reall wante t save Goo luc wit th program It' no a user-friendl a i coul be Everybod seem t encounte som difficultie runnin it bu though th benefit Osborn user coul obtai b usin i wa wort th effor involved hadn' planne o providin thi cop service mean fo peopl t joi FO t ge it bu th editor sweet-talke m int providin thi service. Ed Valenzuela  DA file an BA file) Thi onl applie t th sampl runs. Mak director listin o bot disk now t insur tha yo hav tw distinc disk wit al thes file o them Whe yo begi t creat you ow portfoli files star small Star wit tw stock o bran ne formatte disk I yo successfull complet that the g bac an  This is the release date of the disk. STOKBASETXT  STKBASE INT ;STKBASE2INT !<STKBASE3INT 1<STKGRAP2INT ASTKGRAP3INT ISTKGRAPHINT QSTKPRIC2INT Y,STKPRIC3INT d,STKPRICEINT o,JULDATE%BAS zLINREG BAS | PORTPRFMBAS QKSORT$ BAS STKPRIC3.INT 8D CC 11264 88 STKPRICE.INT 72 C4 11264 88 JULDATE%.BAS E9 D4 1920 15 LINREG .BAS 2B 31 2304 18 PORTPRFM.BAS D0 FE 3968 31 QKSORT$ .BAS 3E E7 1536 12 QKSORT% .BAS DE D7 1536 12 SCRNIN .BAS A8 6A 2944 23 SCRNIN2 .BAS 27 FA 2944 23 SCRNIN3 .BAS AD BC 3072 24 STKFPRNT.BAS CE 8C 2176 17 STKGRAPH.BAS 93 CA 1152 9 STKHIST  Fog Library Disk FOG-CPM.081 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Disk 1 of 2. STOCKBASE to track stock performance. Filename Description -06-00 .86 This is the release date of the disk. -CPM081 .DOC This is the description of the disk contents. STOKBASE.DOC 9C30 12K [Stockbase 1 of 37] As described in the FOGHORN (and Portable Companion), this CBasic program (you need CRUN2 and CBAS2) can be used to track the performance of a stock portfolio. STOKBASE.TXT 3311 3K [Stockbase 2 of 37] STKBASE .INT E970 15K [Stockbase 3 of 37] STKBASE2.INT D68D 16K [Stockbase 4 of 37] STKBASE3.INT 635A 16K [Stockbase 5 of 37] STKGRAP2.INT E3D1 8K [Stockbase 6 of 37] STKGRAP3.INT FE34 8K [Stockbase 7 of 37] STKGRAPH.INT 0508 8K [Stockbase 8 of 37] STKPRIC2.INT 33FF 11K [Stockbase 9 of 37] STKPRIC3.INT 8DCC 11K [Stockbase 10 of 37] STKPRICE.INT 72C4 11K [Stockbase 11 of 37] JULDATE%.BAS E9D4 2K [Stockbase 12 of 37] LINREG .BAS 2B31 3K [Stockbase 13 of 37] P&ORTPRFM.BAS D0FE 4K [Stockbase 14 of 37] QKSORT$ .BAS 3EE7 2K [Stockbase 15 of 37] QKSORT% .BAS DED7 2K [Stockbase 16 of 37] SCRNIN .BAS A86A 3K [Stockbase 17 of 37] SCRNIN2 .BAS 27FA 3K [Stockbase 18 of 37] SCRNIN3 .BAS ADBC 3K [Stockbase 19 of 37] STKFPRNT.BAS CE8C 3K [Stockbase 20 of 37] STKGRAPH.BAS 93CA 2K [Stockbase 21 of 37] STKHIST .BAS 4C83 4K [Stockbase 22 of 37] STKPLOT .BAS B237 4K [Stockbase 23 of 37] STKPRICE.BAS 563C 4K [Stockbase 24 of 37] STKUPDTE.BAS 7928 4K [Stockbase 25 of 37] DAYHST .DAT EFE2 2K [Stockbase 26 of 37] STKFIL01.DAT D0FA 1K [Stockbase 27 of 37] STKPRICE.DAT 187F 1K [Stockbase 28 of 37] CSTKBASE.LTR 943B 3K [Stockbase 29 of 37] S 93CA 2K [Stockbase 21 of 37] STKHIST .BAS 4C83 4K [Stockbase 22'