home *** CD-ROM | disk | FTP | other *** search
- ******************************************************************
- * NAME: PLOT
- * PURPOSE: Plots stocks loaded from Prodigy stock quote service
- *
- * This version 11/01/91 averages values to display on a single screen
- *
- ******************************************************************
- *CLEAR ALL
- MyPath = ""
- *MyPath = "\FOXPRO\STOCKS"
- SET STATUS OFF
- SET SCOREBOARD OFF
- SET TALK OFF
- SET COLOR TO w+/b
- DEFINE WINDOW HEADER FROM 4,40 TO 11,90 SYSTEM COLOR SCHEME 8 TITLE "Stock"
- CLEAR
- PDisplay = TYPE("quick")='L'
- USE MyPath+"Stocks" ORDER name
- USE MyPath+"PORT" ORDER symbol IN 2
- *
- ***** Fetch the symbols
- *
- SELECT 2
- COUNT TO NSymbols
- DECLARE SymTable[NSymbols,2]
- COPY TO ARRAY SymTable FIELDS Symbol,Descrip ALL
- SELECT 1
-
- PrtFlag = SET("PRINT")="ON"
- PCHAR =IIF(PrtFlag,CHR(242), chr(220))
- L=1
- *
- ***** Plot all of the stocks and mutual funds ***
- *
-
- *FOR L = 1 TO NSymbols
- * DO Plotter WITH TRIM(SymTable[L,1])
- * IF Prtflag
- * ?
- * ELSE
- * Answer = Prompter()
- * CLEAR
- * IF Answer = 2
- * EXIT
- * ELSE
- * IF Answer = 3
- * L = L - 1
- * ENDIF
- * ENDIF
- * ENDIF
- *ENDFOR
- DEACTIVATE WINDOW HEADER
- IF PrtFlag
- SET PRINTER OFF
- EJECT
- ? "Printer was turned off"
- ELSE
- DO CHOOSE && Plot selected stocks
- ENDIF
- RETURN
- *
- ********************************************************
- * WAITER - Does a Wait and returns results in upper case
- *
- FUNCTION WAITER
- PARAMETER Message
- WAIT WINDOW Message TO Ans
- RETURN UPPER(Ans)
- *
- *****************************************************
- * Procedure that does the plot for a stock
- *
- PROCEDURE Plotter
- PARAMETER Symb
- ACTIVATE SCREEN
- CLEAR
- @ 0,0
- SELECT 2
- SEEK TRIM(Symb)
- desc=IIF(FOUND(),descrip,"")
- SELECT 1
- SEEK symb
- CALCULATE min(iif(volume < 10, last, low)) ,max(iif(volume < 10, last, high)), ;
- cnt(), min(volume) ,max(volume);
- TO min1,max1,cnt1,vmin1,vmax1 WHILE name=symb
- Increment = IIF(max1=min1, 0, 40/(max1-min1))
- VIncrement = IIF(vmax1=vmin1, 0, 20/(vmax1-vmin1))
- NAVERAGE = int(cnt1/35)
-
- DO ShowHead
-
- STORE 0 TO i,v,vol
- hilo=' '
- SEEK symb
- SET FILTER TO NAME = Symb
- SCAN && WHILE NAME=Symb
- IF PDisplay AND naverage > 1 && Display page at a time
- i=i+1
- IF i <= NAVERAGE
- v1 = IIF(last=0, change, last)
- V = V + v1
- vol = max(vol,volume)
- hilo = IIF(v1=max1,"Hi",IIF(v1=min1,"Lo",hilo))
- amount = svalue
- ELSE
- DO PlotALine WITH v/NAverage,vol,amount,0,0
- hilo = ' '
- v=0
- vol=0
- i=0
- ENDIF
- ELSE
- v1= IIF( last=0, change, last )
- hilo = IIF( v1=max1, "Hi", IIF(v1=min1, "Lo", " "))
- amount = svalue
- DO PlotALine WITH v1,volume,amount,high,low
- hilo=' '
- ENDIF
- if inkey()#0 AND upper(chr(inkey(0))) = "S"
- EXIT
- ENDIF
- ENDSCAN
- IF i>0
- DO PlotALine WITH v/i,vol/i,amount,0,0
- ENDIF
- RETURN
- *
- **************************************************************
- * ShowHead - Displays stock symbol and minimum and maximum
- * stock price and volume
- *
- PROCEDURE ShowHead
- ACTIVATE WINDOW Header
- clear
- @ 1,1 SAY "Symbol: "+Symb
- @ 2,1 SAY "Name: " + desc
- @ 3,1 SAY "Stock Range:"
- @ 3,17 SAY min1 picture "###.###"
- @ 3,26 SAY "to"
- @ 3,29 SAY max1 picture "###.###"
- IF vmax1 > 10
- @ 4,1 SAY "Volume Range:"
- @ 4,15 SAY vmin1 Picture "########"
- @ 4,26 SAY "to"
- @ 4,29 SAY vmax1 PICTURE "########"
- ENDIF
- ACTIVATE SCREEN
- RETURN
-
- **************************************************************
- * PlotALine - Plots a line
- *
- PROCEDURE PlotALine
- PARAMETER v, vol,amt1,hi,lo
- J =INT((V-min1)*Increment)+1
- k =78-INT((vol-vmin1)*vIncrement)
-
- IF hilo='Hi'
- SET COLOR TO w+/r
- ENDIF
- IF hilo='Lo'
- SET COLOR TO w+/bg
- ENDIF
-
- ? hilo,STR(V,9,3),str(amt1,9,3),DATE
- zcol=col()
- @ row(),zcol SAY repli(PCHAR,J)
-
- IF hilo#' '
- SET COLOR TO w+/b
- ENDIF
-
- IF k<79 AND vmax1>10
- * @ ROW(),k+20 SAY REPLICATE(PCHAR,79-k) COLOR w/rg
- ENDIF
- IF hi#lo .and. vmax1>10
- ilow = INT((lo-min1)*Increment)+zcol
- ihigh = INT((hi-min1)*Increment)+zcol
- @ ROW(),ilow SAY REPLICATE(CHR(223), ihigh+1-ilow) COLOR rg+/rb
- ENDIF
- RETURN
- *
- ***********************************************************
- * Choose - Displays popup menu of stock quotes
- * User selects a popup bar and ACTION is called
- *
- PROCEDURE Choose
- DEFINE POPUP Stock FROM 5,2 MESSAGE "Select a stock" COLOR SCHEME 9
- FOR ISYM = 1 TO NSymbols
- DEFINE BAR ISYM OF Stock ;
- PROMPT SYMTABLE[ISYM,1]+" - "+ SYMTABLE[ISYM,2]
- ENDFOR
- DEFINE BAR NSymbols+1 OF Stock Prompt "Z - Toggle PLOT display mode"
- DEFINE BAR NSymbols+2 OF Stock Prompt "Quit"
-
- ON SELECTION POPUP Stock DO Action
- ACTIVATE POPUP Stock
- RELEASE POPUP Stock
- RETURN
- *******************************************************************
- * Action - Action procedure for popup Stock
- *
- PROCEDURE Action
- HIDE POPUP Stock
- prmpt = PROMPT()
- DO CASE
- CASE 'Z -'$prmpt
- PDisplay = NOT PDisplay
- CASE prmpt = 'Quit'
- RELEASE WINDOW Header
- CLOSE ALL
- DEACTIVATE POPUP
-
- OTHERWISE
- DO Plotter WITH TRIM(SUBSTR(prmpt,1,5))
- WAIT WINDOW
- CLEAR
- ENDCASE
- RETURN
- *******************************************************************
- * Prompter
- *
- FUNCTION Prompter
- DEFINE WINDOW Prompter FROM 2,10 TO 5,70 SYSTEM COLOR SCHEME 9 TITLE "Pause"
- ACTIVATE WINDOW Prompter
- @ 0,1 SAY "Pick an item..."
- choice = 1
- @ 1,2 GET Choice FUNCTION "*TH \<Continue;\<Menu;\<Repeat" SIZE 1,8
- READ
- RELEASE WINDOW Prompter
- RETURN Choice
-
-
-