home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a079 / 1.img / FPDG.LZH / VOL2NUM0 / STOCK / STOCK.PRG < prev    next >
Encoding:
Text File  |  1993-01-20  |  3.2 KB  |  125 lines

  1. ***************************************************************************
  2. * This program converts Prodigy DOW Jones output into a dBASE Program     *
  3. * Version 1.0 1/25/90                                                     *
  4. ***************************************************************************
  5. CLOSE ALL
  6. SET SAFETY OFF
  7. SET TALK OFF
  8. USE stock1
  9. ZAP
  10. APPEND FROM stock SDF
  11. PUBLIC oldscreen
  12. oldscreen = WROWS()
  13. IF 'VGA' $ SYS(2006)
  14. set display to vga50
  15. ENDIF
  16. *
  17. **** Retrieve stock symbols for portfolio file, PORT.DBF.
  18. SELECT 2
  19. USE Port ORDER Symbol
  20. COUNT TO NSymbols
  21. DECLARE SymTable[NSymbols,2]
  22. COPY TO ARRAY SymTable FIELDS Symbol,Descrip ALL
  23. SELECT 1
  24. *
  25. **** Now, reformat stock quotes 
  26. *
  27. SCAN
  28.     I = 1
  29.     found = .F.
  30.     FOR L = 1 TO NSymbols
  31.         Company = rtrim(SymTable[L,1])
  32.         IF Name = Company
  33.                 do FindValues && Reformat stock quote values
  34.                   && For example: 3 1/4 -> 3.25
  35.             REPLACE Date WITH DATE()
  36.             found = .t.
  37.         ENDIF
  38.     ENDFOR
  39.     IF NOT found
  40.         DELETE
  41.     ENDIF
  42. ENDSCAN
  43. PACK
  44. *
  45. **********************************************************
  46. * Now append prepared records from STOCK1 to archive file
  47.  
  48. USE STOCKS                   && Archive stock quote file
  49. APPEND FROM stock1           && Todays Quotes
  50. DO GETVALUES                 && Update current portfolio values
  51.  
  52. DO PLOT                      && Plot stocks                    
  53. IF OLDSCREEN = 25 AND "VGA" $ SYS(2006)
  54.   SET DISPLAY TO VGA25
  55. ENDIF
  56.  
  57. RETURN
  58. *
  59. *****************************************************************
  60. *    Name: Extract values from stock quotes and convert them
  61. *       to a numeric form
  62. PROCEDURE FindValues
  63. IF Volume < 10
  64. *
  65. ****** Format encountered for mutual funds from previous days quotes
  66. *
  67.     ast = at("*",cchange)
  68.     IF ast>0
  69.         REPLACE cchange WITH STUFF(cchange,ast,1," ")
  70.     ENDIF
  71.     REPLACE last   WITH  val(cchange) ;  
  72.             high   WITH  val(copen)   ;    
  73.             change WITH  val(chigh)    
  74. ELSE
  75. *
  76. **** Standard stock quote format
  77. *
  78.     REPLACE last   WITH Convert(clast), ;
  79.             change WITH Convert(cchange), ;
  80.             high   WITH Convert(chigh), ;
  81.             low    WITH Convert(clow)
  82. ENDIF
  83.  
  84.  
  85. RETURN
  86. *
  87. ***************************************************************
  88. * Name: Convert - Converts a stock price in fraction form     *
  89. *                 like "87 3/4" to a decimal stock price      *
  90. * Version:  1.0 1/25/90                                       *
  91. ***************************************************************
  92. *
  93. FUNCTION Convert
  94. PARAMETER stockvalue
  95. ast = AT("*",stockvalue)  && Remove any asterisks
  96. IF ast>0
  97.     stockvalue = stuff(stockvalue,ast,1," ")
  98. ENDIF
  99. slash = AT('/',stockvalue)
  100. IF slash > 0
  101.     value = val(substr(stockvalue,slash-1))/ ;
  102.          val(substr(stockvalue,slash+1));
  103.              + val(substr(stockvalue,1,slash-2))
  104. ELSE
  105.     value =  val(stockvalue)
  106. ENDIF
  107. IF value >=0 AND at('-',stockvalue)#0  && Negative value?
  108.     value=-value
  109. ENDIF
  110. RETURN value
  111. *
  112. **********************************************************
  113. *
  114. PROCEDURE GETVALUES
  115. SET RELATION TO Name INTO 2
  116. SCAN for FOUND(2) .and. Date=date()
  117.      xvalue = b->volume*IIF(last=0,change,last)
  118.      REPLACE svalue WITH xvalue, ;
  119.              b->amount with xvalue ;
  120.              b->date with dtoc(date())  
  121. ENDSCAN
  122. RETURN
  123.  
  124.