home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-385-Vol-1of3.iso
/
g
/
getquo30.zip
/
PLOT.LST
< prev
next >
Wrap
File List
|
1992-12-22
|
5KB
|
159 lines
***** UTAH Fortran 1.0 (Mod 4) ** Compiling File: C:PLOT.FOR *****
0001 OPTIONS X
C PROGRAM PLOT.FOR
C
C This program reads a stock data file and produces a candlestick chart
C with High, Low, Close, and Volume.
C
C INPUT.DAT Data line example:
C | 9338 78.375 77.375 77.875 -0.500 5/14/92*|
C
0002 DIMENSION LINE(9),BUF(79),CLINE(14),FILE(3)
0003 REAL HIGH,LOW,CLSE,CHG,DATE,CHK
0004 INTEGER VOL,MO,DAY,TVOL,IYR
C
0005 IDY = 0
0006 IMO = 0
0007 THIGH = 0.0
0008 TLOW = 10000.0
0009 TVOL = 0
C
C Open the input file
C
0010 CALL OPEN (2,'INPUT.DAT')
C
C Initialize Charting Limits
C
0011 READ (2,1000,END=6) VOL,HIGH,LOW,CLSE,CHG,DATE,IYR
0012 1000 FORMAT (I5,3X,F8.3,2X,F8.3,1X,F8.3,1X,F7.3,2X,A5,1X,I2)
0013 DECODE (DATE,5,1001) MO,CHK,DAY
0014 1001 FORMAT (I2,A1,I2)
0015 5 READ (2,1000,END=6) VOL,HIGH,LOW,CLSE,CHG,DATE,IYR
0016 IF (HIGH .GT. THIGH) THIGH = HIGH
0017 IF (LOW .LT. TLOW) TLOW = LOW
0018 IF (VOL .GT. TVOL) TVOL = VOL
0019 GOTO 5
C
0020 6 REWIND 2
0021 FACT = (THIGH-TLOW)/55.0
0022 FVOL = FLOAT(TVOL)/18.0
C
C Initialize Month and Day counters
C
0023 IDY = DAY
0024 IMO = MO-1
0025 CALL OPEN (3,'OUTPUT.CRT')
C
C Main Loop Setup
C
0026 15 IDYS = 30
0027 IF ((IMO.EQ.1).OR.(IMO.EQ.3).OR.(IMO.EQ.5).OR.(IMO.EQ.7).OR.
*(IMO.EQ.8).OR.(IMO.EQ.10).OR.(IMO.EQ.12)) IDYS = 31
0028 IF (IMO.EQ.2) IDYS = 28
C
C Main Loop
C
0029 DO 10 I=IDY,IDYS
0030 14 READ (2,1000,END=30) VOL,HIGH,LOW,CLSE,CHG,DATE
0031 DECODE (DATE,5,1001) MO,CHK,DAY
0032 IF (CHK.NE.'/ ') GOTO 14
0033 16 IF (MO.NE.IMO) THEN
0034 CALL CMNTH(IMO,MO,DAY)
0035 GOTO 16
0036 ENDIF
0037 17 IF (DAY .GT. I) THEN
0038 DO 18 K=1,79
0039 18 BUF(K) = ' '
0040 ENCODE (CLINE,79,1002) BUF
0041 1002 FORMAT (79A1)
C
C Print the line
C
0042 WRITE (3,1003) CLINE
0043 1003 FORMAT (13A6,A1)
0044 WRITE (1,1003) CLINE
0045 I=I+1
0046 GOTO 17
0047 ENDIF
0048 IDY = DAY+1
0049 IMO = MO
C
C Compute Chart Volume Positions
C
0050 ITEST = 0
0051 IF (FVOL.GT.0) ITEST = VOL/FVOL
0052 DO 11 N=1,20
0053 BUF(N) = ' '
0054 11 IF (N .LE. ITEST) BUF(N) = '- '
C
C Compute Chart Price Positions
C
0055 ILOW = IFIX((LOW-TLOW)/FACT)
0056 IHIGH = IFIX((HIGH-TLOW)/FACT)
0057 ICLOS = IFIX((CLSE-TLOW)/FACT)
0058 DO 12 N=1,59
0059 BUF(N+20) = ' '
0060 12 IF ((N .GT. ILOW) .AND. (N .LT. IHIGH)) BUF(N+20) = '- '
0061 BUF(ILOW+20) = '| '
0062 BUF(IHIGH+20) = '| '
0063 BUF(ICLOS+20) = '+ '
0064 ENCODE (CLINE,79,1002) BUF
C
C Print the line
C
0065 WRITE (3,1003) CLINE
0066 10 WRITE (1,1003) CLINE
0067 GOTO 15
C
C Normal Exit
C
0068 30 CONTINUE
0069 CALL CLOSE (2)
0070 CALL CLOSE (3)
0071 STOP 'Normal exit'
0072 END
** Generated Code = 2051 (Decimal), 0803 (Hex) Bytes
0001 SUBROUTINE CMNTH(IMO,MO,DAY)
C
0002 INTEGER IMO,MO,DAY
C
C Check for last month
C
0003 10 IMO = IMO+1
0004 IF (IMO.EQ.13) IMO = 1
0005 IF (IMO.EQ.MO) THEN
0006 RMO = 'DEC'
0007 IF (IMO.EQ.1) RMO = 'JAN'
0008 IF (IMO.EQ.2) RMO = 'FEB'
0009 IF (IMO.EQ.3) RMO = 'MAR'
0010 IF (IMO.EQ.4) RMO = 'APR'
0011 IF (IMO.EQ.5) RMO = 'MAY'
0012 IF (IMO.EQ.6) RMO = 'JUN'
0013 IF (IMO.EQ.7) RMO = 'JLY'
0014 IF (IMO.EQ.8) RMO = 'AUG'
0015 IF (IMO.EQ.9) RMO = 'SEP'
0016 IF (IMO.EQ.10) RMO = 'OCT'
0017 IF (IMO.EQ.11) RMO = 'NOV'
0018 WRITE (1,1001) RMO
0019 1001 FORMAT ('************************************* ',A3,
*' *************************************')
0020 WRITE (3,1001) RMO
0021 RETURN
0022 ENDIF
0023 IDYS = 30
0024 IF ((IMO.EQ.1).OR.(IMO.EQ.3).OR.(IMO.EQ.5).OR.(IMO.EQ.7).OR.
*(IMO.EQ.8).OR.(IMO.EQ.10).OR.(IMO.EQ.12)) IDYS = 31
0025 IF (IMO.EQ.2) IDYS = 28
0026 DO 20 M=1,IDYS
0027 WRITE (1,1000) IMO,M
0028 20 WRITE (3,1000) IMO,M
0029 1000 FORMAT (' no data for ',I2,'/',I2)
0030 GOTO 10
0031 END
** Generated Code = 952 (Decimal), 03B8 (Hex) Bytes
No Compile errors