home *** CD-ROM | disk | FTP | other *** search
- ***************************************************************************
- * This program converts Prodigy DOW Jones output into a dBASE Program *
- * Version 1.0 1/25/90 *
- ***************************************************************************
- CLOSE ALL
- SET SAFETY OFF
- SET TALK OFF
- USE stock1
- ZAP
- APPEND FROM stock SDF
- PUBLIC oldscreen
- oldscreen = WROWS()
- IF 'VGA' $ SYS(2006)
- set display to vga50
- ENDIF
- *
- **** Retrieve stock symbols for portfolio file, PORT.DBF.
- SELECT 2
- USE Port ORDER Symbol
- COUNT TO NSymbols
- DECLARE SymTable[NSymbols,2]
- COPY TO ARRAY SymTable FIELDS Symbol,Descrip ALL
- SELECT 1
- *
- **** Now, reformat stock quotes
- *
- SCAN
- I = 1
- found = .F.
- FOR L = 1 TO NSymbols
- Company = rtrim(SymTable[L,1])
- IF Name = Company
- do FindValues && Reformat stock quote values
- && For example: 3 1/4 -> 3.25
- REPLACE Date WITH DATE()
- found = .t.
- ENDIF
- ENDFOR
- IF NOT found
- DELETE
- ENDIF
- ENDSCAN
- PACK
- *
- **********************************************************
- * Now append prepared records from STOCK1 to archive file
-
- USE STOCKS && Archive stock quote file
- APPEND FROM stock1 && Todays Quotes
- DO GETVALUES && Update current portfolio values
-
- DO PLOT && Plot stocks
- IF OLDSCREEN = 25 AND "VGA" $ SYS(2006)
- SET DISPLAY TO VGA25
- ENDIF
-
- RETURN
- *
- *****************************************************************
- * Name: Extract values from stock quotes and convert them
- * to a numeric form
- *
- PROCEDURE FindValues
- IF Volume < 10
- *
- ****** Format encountered for mutual funds from previous days quotes
- *
- ast = at("*",cchange)
- IF ast>0
- REPLACE cchange WITH STUFF(cchange,ast,1," ")
- ENDIF
- REPLACE last WITH val(cchange) ;
- high WITH val(copen) ;
- change WITH val(chigh)
- ELSE
- *
- **** Standard stock quote format
- *
- REPLACE last WITH Convert(clast), ;
- change WITH Convert(cchange), ;
- high WITH Convert(chigh), ;
- low WITH Convert(clow)
- ENDIF
-
-
- RETURN
- *
- ***************************************************************
- * Name: Convert - Converts a stock price in fraction form *
- * like "87 3/4" to a decimal stock price *
- * Version: 1.0 1/25/90 *
- ***************************************************************
- *
- FUNCTION Convert
- PARAMETER stockvalue
- ast = AT("*",stockvalue) && Remove any asterisks
- IF ast>0
- stockvalue = stuff(stockvalue,ast,1," ")
- ENDIF
- slash = AT('/',stockvalue)
- IF slash > 0
- value = val(substr(stockvalue,slash-1))/ ;
- val(substr(stockvalue,slash+1));
- + val(substr(stockvalue,1,slash-2))
- ELSE
- value = val(stockvalue)
- ENDIF
- IF value >=0 AND at('-',stockvalue)#0 && Negative value?
- value=-value
- ENDIF
- RETURN value
- *
- **********************************************************
- *
- PROCEDURE GETVALUES
- SET RELATION TO Name INTO 2
- SCAN for FOUND(2) .and. Date=date()
- xvalue = b->volume*IIF(last=0,change,last)
- REPLACE svalue WITH xvalue, ;
- b->amount with xvalue ;
- b->date with dtoc(date())
- ENDSCAN
- RETURN
-