Posted: Thu May 05, 2005 8:45 am
by dbish
I have plenty of memory (768 Mb installed - won't compile with even minimal other apps open).
Here is complete code:
------------------------------------------------------------------------------------------------------------------------------------------------------------
OPTION BASE 1
DECLARE SUB TICKERDO (FIRSTTICKERROW AS INTEGER, LASTTICKERROW AS INTEGER)
DEFINT A-Z
DIM OPTIONLINE AS STRING
DIM SHARED WorkingRawArray(1 TO 250000, 1 TO 19) AS STRING
DIM SHARED WorkingFinalArray_OI(1 TO 25000, 1 TO 16) AS STRING
DIM SHARED WorkingFinalArray_VL(1 TO 25000, 1 TO 16) AS STRING
DIM SHARED WorkingLineArray(25000) as STRING
DIM SHARED KILLArray(1000) AS STRING
DIM SHARED FINALROWNUMBER_KILL AS INTEGER
DIM SHARED CalcArray_VL(250000) AS DOUBLE
DIM SHARED CalcArray_OI(250000) AS DOUBLE
DIM TKR_PREV(5000) as STRING
DIM TKR_NEW(5000,3) as STRING
DIM k AS INTEGER
DIM FINALROWNUMBER AS INTEGER
DIM FINALROWNUMBER_NEW AS INTEGER
DIM FINALROWNUMBER_PREV AS INTEGER
DIM TKR_NEW_START as INTEGER
DIM TKR_PREV_START as INTEGER
DIM CHAR1 AS STRING
DIM FILENAMECURRENT AS STRING
DIM SHARED FIRSTTICKERROW AS INTEGER
DIM SHARED LASTTICKERROW AS INTEGER
DIM CL AS STRING
DIM var_DATE as STRING
DIM var_DAY as STRING
DIM var_MONTH as STRING
DIM var_YEAR as STRING
DIM SHared DATESTRING as STRING
SHELL "dir E:\Optdata\OI\*.csv /b > c:\temp2\TKR_PREV.csv"
i = 0
OPEN "C:\Temp2\TKR_PREV.csv" FOR INPUT AS #5
DO WHILE NOT EOF(5)
i = i + 1
LINE INPUT #5, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #5
FINALROWNUMBER_PREV% = i
OPEN "C:\Temp2\TKR_PREV.csv" FOR INPUT AS #5
FOR i = 1 TO FINALROWNUMBER_PREV%
INPUT #5, TKR_PREV$(i)
NEXT i
CLOSE #5
For i = 1 to FINALROWNUMBER_PREV%
TKR_PREV$(i)=LEFT$(TKR_PREV(i),LEN(TKR_PREV(i))-7)
Next i
KILL "c:\temp2\TKR_PREV.csv"
OPEN "c:\temp2\TKR_PREV.csv" FOR APPEND as #5
For i = 1 to FINALROWNUMBER_PREV%
PRINT #5, TKR_PREV$(i)
Next i
CLOSE #5
OPEN "C:\temp2\TKR.CSV" FOR APPEND AS #10
CLOSE #10
KILL "C:\temp2\TKR.CSV"
OPEN "C:\temp2\TKR.CSV" FOR APPEND AS #10
CLS
var_DATE$=DATE$
var_DAY$=MID$(var_DATE$,4,2)
var_MONTH$=LEFT$(var_DATE$,2)
var_YEAR$=RIGHT$(var_DATE$,4)
DATESTRING$=var_YEAR$+var_MONTH$+var_DAY$
'FILENAMECURRENT$ = "E:\OptData\Daily\"+DATESTRING$+".csv"
FILENAMECURRENT$ = "E:\OptData\Daily\20060315.csv"
DATESTRING$=MID$(FILENAMECURRENT$,18,8)
i = 0
OPEN "C:\Temp2\KILL_TICKER.txt" FOR INPUT AS #5
DO WHILE NOT EOF(5)
i = i + 1
LINE INPUT #5, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #5
FINALROWNUMBER_KILL% = i
OPEN "C:\Temp2\KILL_TICKER.txt" FOR INPUT AS #5
FOR i = 1 TO FINALROWNUMBER_KILL%
INPUT #5, KILLArray$(i)
NEXT i
CLOSE #5
i = 0
OPEN FILENAMECURRENT$ FOR INPUT AS #1
DO WHILE NOT EOF(1)
i = i + 1
LINE INPUT #1, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #1
FINALROWNUMBER% = i
OPEN FILENAMECURRENT$ FOR INPUT AS #1
FOR i = 1 TO FINALROWNUMBER%
FOR j = 1 TO 19
INPUT #1, WorkingRawArray$(i, j)
NEXT
NEXT
CLOSE #1
FIRSTTICKERROW% = 1
FOR i = 1 TO FINALROWNUMBER%
IF i = FINALROWNUMBER% THEN
LASTTICKERROW% = i
CALL TICKERDO(FIRSTTICKERROW%, LASTTICKERROW%)
EXIT FOR
END IF
IF WorkingRawArray$(i, 1) <> WorkingRawArray$(i + 1, 1) THEN
LASTTICKERROW% = i
CALL TICKERDO(FIRSTTICKERROW%, LASTTICKERROW%)
FIRSTTICKERROW% = LASTTICKERROW% + 1
END IF
NEXT i
CLOSE #10
OPEN "E:\OptData\SUMMARY_"+DATESTRING$+".csv" FOR APPEND AS #3
' TKR_PREV should still be open form beginning of run
'OPEN "c:\temp2\TKR_PREV.csv" FOR INPUT AS #2
'DO WHILE NOT EOF(1)
' i = i + 1
' LINE INPUT #1, OPTIONLINE$
' CHAR1$ = LEFT$(OPTIONLINE$, 1)
' IF CHAR1$ = "" THEN EXIT DO
'LOOP
'CLOSE #2
'FINALROWNUMBER_PREV% = i
'OPEN "c:\temp2\TKR_PREV.csv" FOR INPUT AS #2
'FOR i = 1 TO FINALROWNUMBER_PREV%
' INPUT #2, TKR_PREV(i)
' NEXT
'NEXT
'CLOSE #2
OPEN "c:\temp2\TKR.csv" FOR INPUT AS #2
DO WHILE NOT EOF(1)
i = i + 1
LINE INPUT #1, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #2
FINALROWNUMBER_NEW% = i
OPEN "c:\temp2\TKR.csv" FOR INPUT AS #2
FOR i = 1 TO FINALROWNUMBER_NEW%
FOR j = 1 TO 3
INPUT #2, TKR_NEW(i, j)
NEXT
NEXT
CLOSE #2
If FINALROWNUMBER_PREV% >= FINALROWNUMBER_NEW% then
TICKER_NEW_START%=0
Else
TICKER_NEW_START%=1
END IF
IF TICKER_NEW_START=0 THEN
FOR i=1 to FINALROWNUMBER_PREV%
For j= 1 to FINALROWNUMBER_NEW%
If TKR_PREV$(i)=TKR_NEW(j,1) then
If ((val(TKR_NEW$(i, 2))/val(TKR_PREV$(j,2))-1))<-.15 then
PRINT #3,"SPLIT?,"+TKR_NEW(i, 1)+","+TKR_NEW$(i, 2)+","+TKR_PREV$(j,2)
GOTO NEXTI_P1
END IF
END IF
NEXT j
PRINT #3,"MISSING?"+TKR_PREV$(i)+",--,--"
NEXTI_P1:
NEXT i
FOR i=1 to FINALROWNUMBER_NEW%
For j= 1 to FINALROWNUMBER_PREV%
If TKR_NEW(i, 1)=TKR_PREV(j,1) then
GOTO NEXTI_P2
END IF
NEXT j
PRINT #3,"NEW?,"+TKR_NEW(i, 1)+",--,--"
NEXTI_P2:
NEXT i
ELSE
FOR i=1 to FINALROWNUMBER_NEW%
For j= 1 to FINALROWNUMBER_PREV%
If TKR_NEW(i, 1)=TKR_PREV(j,1) then
If ((val(TKR_NEW$(i, 2))/val(TKR_PREV$(j,2))-1))<-.15 then
PRINT #3,"SPLIT?,"+TKR_NEW(i, 1)+","+TKR_NEW$(i, 2)+","+TKR_PREV$(j,2)
GOTO NEXTI_N1
END IF
END IF
NEXT j
PRINT #3,"NEW?"+TKR_NEW(i, 1)+",--,--"
NEXTI_N1:
NEXT i
FOR i=1 to FINALROWNUMBER_PREV%
For j= 1 to FINALROWNUMBER_NEW%
If TKR_PREV$(i)=TKR_NEW(j,1) then
GOTO NEXTI_N2
END IF
NEXT j
PRINT #3,"MISSING?,"+TKR_PREV$(i)+",--,--"
NEXTI_N2:
NEXT i
END IF
END
SUB TICKERDO (FIRSTTICKERROW%, LASTTICKERROW%)
DIM FILENAMESAVE_OI AS STRING
DIM FILENAMESAVE_VL AS STRING
DIM CHAR1 AS STRING
DIM CHAR2 AS STRING
DIM CHAR3 AS STRING
DIM CHAR4 AS STRING
DIM CHAR5 AS STRING
DIM CHARLEN AS INTEGER
DIM BID AS SINGLE
DIM ASK AS SINGLE
DIM CSPRICENUM AS SINGLE
DIM TICKER AS STRING
DIM CSPRICE AS STRING
DIM DATERAW as STRING
DIM DATALEN as Integer
DIM DATADATE_N as DOUBLE
DIM DATADATE_S AS STRING
DIM SLASHCOUNT as INTEGER
DIM SLASHARRAY(2) as INTEGER
DIM MONTH_S as STRING
DIM DAY_S as STRING
DIM YEAR_S as STRING
DIM DAY_N as INTEGER
DIM MONTH_N as INTEGER
DIM YEAR_N as INTEGER
DIM OI AS SINGLE
DIM VOL AS SINGLE
DIM CUMCALL_OI_N AS DOUBLE
DIM CUMCALL_OI_S AS STRING
DIM CUMPUT_OI_N AS DOUBLE
DIM CUMPUT_OI_S AS STRING
DIM CUMCALL_VL_N AS DOUBLE
DIM CUMCALL_VL_S AS STRING
DIM CUMPUT_VL_N AS DOUBLE
DIM CUMPUT_VL_S AS STRING
DIM PUTCALL_OI_N as Single
DIM PUTCALL_OI_S as STRING
DIM PUTCALL_VL_N as Single
DIM PUTCALL_VL_S as STRING
DIM MKTCAP_N as SINGLE
DIM MKTCAP_S as STRING
DIM MKTCAP_FacA_N as Single
DIM MKTCAP_FacA_S as String
DIM MKTCAP_FacB_N as Single
DIM MKTCAP_FacB_S as String
DIM MKTCAP_FacC_N as Single
DIM MKTCAP_FacC_S as String
DIM PC_SD_OI_N as SINGLE
DIM PC_SD_OI_S as STRING
DIM PC_SD_OI_FacA_N as Single
DIM PC_SD_OI_FacA_S as String
DIM PC_SD_OI_FacB_N as Single
DIM PC_SD_OI_FacB_S as String
DIM PC_SD_OI_FacC_N as Single
DIM PC_SD_OI_FacC_S as String
DIM PC_SD_VL_N as SINGLE
DIM PC_SD_VL_S as STRING
DIM PC_SD_VL_FacA_N as Single
DIM PC_SD_VL_FacA_S as String
DIM PC_SD_VL_FacB_N as Single
DIM PC_SD_VL_FacB_S as String
DIM PC_SD_VL_FacC_N as Single
DIM PC_SD_VL_FacC_S as String
DIM FACTOR_A as Single
DIM FACTOR_B as Single
DIM FACTOR_C as Single
DIM A as integer
DIM B as integer
DIM C as integer
DIM A_S as STRING
DIM B_S as STRING
DIM C_S as STRING
A%=4
B%=7
C%=10
A_S$=STR$(A%)
B_S$=STR$(B%)
C_S$=STR$(C%)
FACTOR_A!=(2/(A%+1))
FACTOR_B!=(2/(B%+1))
FACTOR_C!=(2/(C%+1))
CUMPUT_OI_N# = 0
CUMCALL_OI_N# = 0
CUMPUT_VL_N# = 0
CUMCALL_VL_N# = 0
FOR i = FIRSTTICKERROW% TO LASTTICKERROW%
BID! = VAL(WorkingRawArray$(i, 11))
ASK! = VAL(WorkingRawArray$(i, 12))
OI! = VAL(WorkingRawArray$(i, 14))
CalcArray_OI#(i) = (OI! * (BID! + ASK!)) / 2
VOL! = VAL(WorkingRawArray$(i, 13))
CalcArray_VL#(i) = (VOL! * (BID! + ASK!)) / 2
IF WorkingRawArray$(i, 6) = "call" THEN
CUMCALL_OI_N# = CUMCALL_OI_N# + CalcArray_OI#(i)
CUMCALL_VL_N# = CUMCALL_VL_N# + CalcArray_VL#(i)
ELSE
CUMPUT_OI_N# = CUMPUT_OI_N# + CalcArray_OI#(i)
CUMPUT_VL_N# = CUMPUT_VL_N# + CalcArray_VL#(i)
END IF
NEXT i
TICKER$ = WorkingRawArray$(LASTTICKERROW%, 1)
CHARLEN% = LEN(TICKER$)
IF CHARLEN% > 4 THEN
CHAR5$ = MID$(TICKER$, 5, 1)
IF CHAR5$ = "/" THEN CHAR5$ = "-"
END IF
IF CHARLEN% > 3 THEN
CHAR4$ = MID$(TICKER$, 4, 1)
IF CHAR4$ = "/" THEN CHAR4$ = "-"
END IF
IF CHARLEN% > 2 THEN
CHAR3$ = MID$(TICKER$, 3, 1)
IF CHAR3$ = "/" THEN CHAR3$ = "-"
END IF
IF CHARLEN% > 1 THEN
CHAR2$ = MID$(TICKER$, 2, 1)
IF CHAR2$ = "/" THEN CHAR2$ = "-"
END IF
CHAR1$ = MID$(TICKER$, 1, 1)
TICKER$ = CHAR1$ + CHAR2$ + CHAR3$ + CHAR4$ + CHAR5$
PRINT TICKER$
FOR i=1 to FINALROWNUMBER_KILL%
If TICKER$=KILLArray(i) then EXIT SUB
NEXT i
DATARAW$ = MID$(WorkingRawArray$(LASTTICKERROW%, 8), 1, LEN(WorkingRawArray$(LASTTICKERROW%, 8)) - 11)
DATELEN% = LEN(DATARAW$)
SLASHCOUNT = 0
FOR j = 1 TO DATELEN% - 3
IF MID$(DATARAW$, j, 1) = "/" THEN
SLASHCOUNT% = SLASHCOUNT% + 1
SLASHARRAY%(SLASHCOUNT%) = j
END IF
NEXT j
MONTH_S$ = MID$(DATARAW$, 1, SLASHARRAY%(1) - 1)
DAY_S$ = MID$(DATARAW$, SLASHARRAY%(1) + 1, SLASHARRAY%(2) - SLASHARRAY%(1) - 1)
YEAR_S$ = MID$(DATARAW$, SLASHARRAY%(2) + 1, 4)
DAY_N% = VAL(DAY_S$)
MONTH_N% = VAL(MONTH_S$)
YEAR_N% = VAL(YEAR_S$)
DATADATE_N# = (YEAR_N%*10000) + (MONTH_N%*100) + DAY_N%
DATADATE_S$ = STR$(DATADATE_N#)
CSPRICE$ = WorkingRawArray$(LASTTICKERROW%, 2)
CSPRICENUM!=VAL(CSPRICE$)
CUMCALL_OI_S$ = STR$(CUMCALL_OI_N#)
CUMPUT_OI_S$ = STR$(CUMPUT_OI_N#)
PUTCALL_OI_N!=CUMPUT_OI_N#/CUMCALL_OI_N#
PUTCALL_OI_S$=STR$(PUTCALL_OI_N!)
CUMCALL_VL_S$ = STR$(CUMCALL_VL_N#)
CUMPUT_VL_S$ = STR$(CUMPUT_VL_N#)
PUTCALL_VL_N!=CUMPUT_VL_N#/CUMCALL_VL_N#
PUTCALL_VL_S$=STR$(PUTCALL_VL_N!)
FILENAMESAVE_OI$ = "E:\OptData\OI\"+TICKER$+"_oi.csv"
OPEN FILENAMESAVE_OI$ FOR APPEND AS #1
N = LOF(1)
CLOSE #1
IF N = 0 THEN
OPEN FILENAMESAVE_OI$ FOR APPEND AS #1
PRINT #3, "DATA,INDEX,CS,MKTCAP,MKTCAPMA,CUMCALLOI,CUMPUTOI,PutCall OI,PC SD OI,PC MA OI,MC MA2,MC MA3,INDIC MA2,INDIC MA3,DUMMY1,DUMMY2"
PRINT #3, "DATE,DATE,PRICE,999,"+ C_S$ +",CUMCALLOI,CUMPUTOI,1,2,"+C_S$+","+A_S$+","+B_S$+","+A_S$+","+B_S$+",DUMMY1,DUMMY2"
CLOSE #1
END IF
i=1
OPEN FILENAMESAVE_OI$ FOR INPUT AS #1
DO WHILE NOT EOF(1)
LINE INPUT #1, WorkingLineArray$(i)
IF RTRIM$(WorkingLineArray$(i)) = "" THEN EXIT DO
i=i+1
LOOP
CLOSE #1
FINALROWNUMBER% = i-1
OPEN FILENAMESAVE_OI$ FOR INPUT AS #1
FOR i = 1 TO FINALROWNUMBER%
FOR j = 1 TO 16
INPUT #1, WorkingFinalArray_OI$(i, j)
NEXT
NEXT
CLOSE #1
OPEN FILENAMESAVE_OI$ FOR APPEND AS #1
MKTCAP_N!=CSPRICENUM!*val(WorkingFinalArray_OI$(2,4))
MKTCAP_S$=STR$(MKTCAP_N!)
MKTCAP_FacA_N! = (MKTCAP_N!*FACTOR_A!)+(val(WorkingFinalArray_OI$(FINALROWNUMBER%,11))*(1-FACTOR_A!))
MKTCAP_FacA_S$ = STR$(MKTCAP_FacA_N!)
MKTCAP_FacB_N! = (MKTCAP_N!*FACTOR_B!)+(val(WorkingFinalArray_OI$(FINALROWNUMBER%,12))*(1-FACTOR_B!))
MKTCAP_FacB_S$ = STR$(MKTCAP_FacB_N!)
MKTCAP_FacC_N! = (MKTCAP_N!*FACTOR_C!)+(val(WorkingFinalArray_OI$(FINALROWNUMBER%,5))*(1-FACTOR_C!))
MKTCAP_FacC_S$ = STR$(MKTCAP_FacC_N!)
PC_SD_OI_N! = (PUTCALL_OI_N!-val(WorkingFinalArray_OI$(2,8)))/val(WorkingFinalArray_OI$(2,9))
PC_SD_OI_S$ = STR$(PC_SD_OI_N!)
PC_SD_OI_FacA_N! = (PC_SD_OI_N!*FACTOR_A!)+(val(WorkingFinalArray_OI$(FINALROWNUMBER%,13))*(1-FACTOR_A!))
PC_SD_OI_FacA_S$ = STR$(PC_SD_OI_FacA_N!)
PC_SD_OI_FacB_N! = (PC_SD_OI_N!*FACTOR_B!)+(val(WorkingFinalArray_OI$(FINALROWNUMBER%,14))*(1-FACTOR_B!))
PC_SD_OI_FacB_S$ = STR$(PC_SD_OI_FacB_N!)
PC_SD_OI_FacC_N! = (PC_SD_OI_N!*FACTOR_C!)+(val(WorkingFinalArray_OI$(FINALROWNUMBER%,10))*(1-FACTOR_C!))
PC_SD_OI_FacC_S$ = STR$(PC_SD_OI_FacC_N!)
IF FINALROWNUMBER%=2 Then
MKTCAP_FacA_N! = MKTCAP_N!
MKTCAP_FacA_S$ = STR$(MKTCAP_FacA_N!)
MKTCAP_FacB_N! = MKTCAP_N!
MKTCAP_FacB_S$ = STR$(MKTCAP_FacB_N!)
MKTCAP_FacC_N! = MKTCAP_N!
MKTCAP_FacC_S$ = STR$(MKTCAP_FacC_N!)
PC_SD_OI_FacA_N! = PUTCALL_OI_N!
PC_SD_OI_FacA_S$ = STR$(MKTCAP_FacA_N!)
PC_SD_OI_FacB_N! = PUTCALL_OI_N!
PC_SD_OI_FacB_S$ = STR$(MKTCAP_FacB_N!)
PC_SD_OI_FacC_N! = PUTCALL_OI_N!
PC_SD_OI_FacC_S$ = STR$(MKTCAP_FacC_N!)
End IF
PRINT #1, WorkingRawArray$(LASTTICKERROW%, 8)+","+DATADATE_S$+","+CSPRICE$+","+MKTCAP_S$+","+MKTCAP_FacC_S$+","+CUMCALL_OI_S$+","+CUMPUT_OI_S$+","+PUTCALL_OI_S$+","+PC_SD_OI_S$+","+PC_SD_OI_FacC_S$+","+MKTCAP_FacA_S$+","+MKTCAP_FacB_S$+","+PC_SD_OI_FacA_S$+","+PC_SD_OI_FacB_S$+",DUMMY1,DUMMY2"
CLOSE #1
FILENAMESAVE_VL$ = "E:\OptData\VL\"+TICKER$+"_VL.csv"
OPEN FILENAMESAVE_VL$ FOR APPEND AS #1
N = LOF(1)
CLOSE #1
IF N = 0 THEN
OPEN FILENAMESAVE_VL$ FOR APPEND AS #1
PRINT #3, "DATA,INDEX,CS,MKTCAP,MKTCAPMA,CUMCALLVOL,CUMPUTVOL,PutCall VOL,PC SD VOL,PC MA VOL,MC MA2,MC MA3,INDIC MA2,INDIC MA3,DUMMY1,DUMMY2"
PRINT #3, "DATE,DATE,PRICE,999,"+ C_S$ +",CUMCALLVOL,CUMPUTVOL,1,2,"+C_S$+","+A_S$+","+B_S$+","+A_S$+","+B_S$+",DUMMY1,DUMMY2"
CLOSE #1
END IF
i=1
OPEN FILENAMESAVE_VL$ FOR INPUT AS #1
DO WHILE NOT EOF(1)
i = i + 1
LINE INPUT #1, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #1
FINALROWNUMBER% = i-1
OPEN FILENAMESAVE_VL$ FOR INPUT AS #1
FOR i = 1 TO FINALROWNUMBER%
FOR j = 1 TO 16
INPUT #1, WorkingFinalArray_VL$(i, j)
NEXT
NEXT
CLOSE #1
OPEN FILENAMESAVE_VL$ FOR APPEND AS #1
PC_SD_VL_N! = (PUTCALL_VL_N!-val(WorkingFinalArray_VL$(2,8)))/val(WorkingFinalArray_VL$(2,9))
PC_SD_VL_S$ = STR$(PC_SD_VL_N!)
PC_SD_VL_FacA_N! = (PC_SD_VL_N!*FACTOR_A!)+(val(WorkingFinalArray_VL$(FINALROWNUMBER%,13))*(1-FACTOR_A!))
PC_SD_VL_FacA_S$ = STR$(PC_SD_VL_FacA_N!)
PC_SD_VL_FacB_N! = (PC_SD_VL_N!*FACTOR_B!)+(val(WorkingFinalArray_VL$(FINALROWNUMBER%,14))*(1-FACTOR_B!))
PC_SD_VL_FacB_S$ = STR$(PC_SD_VL_FacB_N!)
PC_SD_VL_FacC_N! = (PC_SD_VL_N!*FACTOR_C!)+(val(WorkingFinalArray_VL$(FINALROWNUMBER%,10))*(1-FACTOR_C!))
PC_SD_VL_FacC_S$ = STR$(PC_SD_VL_FacC_N!)
IF FINALROWNUMBER%=2 Then
PC_SD_VL_FacA_N! = PUTCALL_VL_N!
PC_SD_VL_FacA_S$ = STR$(MKTCAP_FacA_N!)
PC_SD_VL_FacB_N! = PUTCALL_VL_N!
PC_SD_VL_FacB_S$ = STR$(MKTCAP_FacB_N!)
PC_SD_VL_FacC_N! = PUTCALL_VL_N!
PC_SD_VL_FacC_S$ = STR$(MKTCAP_FacC_N!)
End IF
PRINT #1, WorkingRawArray$(LASTTICKERROW%, 8)+","+DATADATE_S$+","+CSPRICE$+","+MKTCAP_S$+","+MKTCAP_FacC_S$+","+CUMCALL_VL_S$+","+CUMPUT_VL_S$+","+PUTCALL_VL_S$+","+PC_SD_VL_S$+","+PC_SD_VL_FacC_S$+","+MKTCAP_FacA_S$+","+MKTCAP_FacB_S$+","+PC_SD_VL_FacA_S$+","+PC_SD_VL_FacB_S$+",DUMMY1,DUMMY2"
CLOSE #1
' UNCOMMENT BELOW WHEN RUNNING
PRINT #10, TICKER$+","+CSPRICE$
END SUB
------------------------------------------------------------------------------------------------------------------------------------------------------------
This is the version that does not compile. I had (most recent revision) set TKR_PREV(5000,2) and had all references to that variable set to TKR_PREV(i,1) or (i,j) and it compiled. Program bombed (but compiled) somewhere in the area where this code was called and I was starting to debug when I realized that my basic concept could be improved by changing data structure of underlying data.
Thnaks for looking at this.
dbish
Posted: Thu May 05, 2005 2:11 pm
by dbish
I have hived off the Exception report processing into a separate program which should be small and easy. I am still getting the same "won't compile error".
New, smaller code as follows:
----------------------------------------------------------------------------------------------------------------------------------
OPTION BASE 1
DEFINT A-Z
DIM OPTIONLINE AS STRING
DIM TKR_PREV(5000) as STRING
DIM TKR_NEW(5000,4) as STRING
DIM FINALROWNUMBER_NEW AS INTEGER
DIM FINALROWNUMBER_PREV AS INTEGER
DIM TKR_NEW_START as INTEGER
DIM TKR_PREV_START as INTEGER
DIM CHAR1 AS STRING
DIM TKR_PREV_SHORT as STRING
DIM TKR_PREVLEN as Integer
SHELL "dir E:\Optdata\OI\*.csv /b > c:\temp2\TKR_PREV.csv"
i = 0
OPEN "C:\Temp2\TKR_PREV.csv" FOR INPUT AS #5
DO WHILE NOT EOF(5)
i = i + 1
LINE INPUT #5, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #5
FINALROWNUMBER_PREV% = i
OPEN "C:\Temp2\TKR_PREV.csv" FOR INPUT AS #5
FOR i = 1 TO FINALROWNUMBER_PREV%
INPUT #5, TKR_PREV$(i)
NEXT i
CLOSE #5
For i = 1 to FINALROWNUMBER_PREV%
TKR_PREVLEN%=LEN(TKR_PREV$(i))-7
TKR_PREV_SHORT$=LEFT$(TKR_PREV$(i),TKR_PREVLEN%)
TKR_PREV$(i)= TKR_PREV_SHORT$
Next i
KILL "c:\temp2\TKR_PREV.csv"
OPEN "c:\temp2\TKR_PREV.csv" FOR APPEND as #5
For i = 1 to FINALROWNUMBER_PREV%
PRINT #5, TKR_PREV$(i)
Next i
CLOSE #5
OPEN "E:\OptData\SUMMARY.csv" FOR APPEND AS #3
OPEN "c:\temp2\TKR.csv" FOR INPUT AS #2
i=0
DO WHILE NOT EOF(1)
i = i + 1
LINE INPUT #1, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #2
FINALROWNUMBER_NEW% = i
OPEN "c:\temp2\TKR.csv" FOR INPUT AS #2
FOR i = 1 TO FINALROWNUMBER_NEW%
FOR j = 1 TO 4
INPUT #2, TKR_NEW(i, j)
NEXT
NEXT
CLOSE #2
If FINALROWNUMBER_PREV% >= FINALROWNUMBER_NEW% then
TICKER_NEW_START%=0
Else
TICKER_NEW_START%=1
END IF
IF TICKER_NEW_START=0 THEN
FOR i=1 to FINALROWNUMBER_PREV%
For j= 1 to FINALROWNUMBER_NEW%
If TKR_PREV$(i)=TKR_NEW(j,1) then
If ((val(TKR_NEW$(i, 2))/val(TKR_PREV$(j,2))-1))<-.15 then
PRINT #3,"SPLIT?,"+TKR_NEW(i, 1)+","+TKR_NEW$(i, 2)+","+TKR_PREV$(j,2)
GOTO NEXTI_P1
END IF
END IF
NEXT j
PRINT #3,"MISSING?"+TKR_PREV$(i)+",--,--"
NEXTI_P1:
NEXT i
FOR i=1 to FINALROWNUMBER_NEW%
For j= 1 to FINALROWNUMBER_PREV%
If TKR_NEW(i, 1)=TKR_PREV(j,1) then
GOTO NEXTI_P2
END IF
NEXT j
PRINT #3,"NEW?,"+TKR_NEW(i, 1)+",--,--"
NEXTI_P2:
NEXT i
ELSE
FOR i=1 to FINALROWNUMBER_NEW%
For j= 1 to FINALROWNUMBER_PREV%
If TKR_NEW(i, 1)=TKR_PREV(j,1) then
If ((val(TKR_NEW$(i, 2))/val(TKR_PREV$(j,2))-1))<-.15 then
PRINT #3,"SPLIT?,"+TKR_NEW(i, 1)+","+TKR_NEW$(i, 2)+","+TKR_PREV$(j,2)
GOTO NEXTI_N1
END IF
END IF
NEXT j
PRINT #3,"NEW?"+TKR_NEW(i, 1)+",--,--"
NEXTI_N1:
NEXT i
FOR i=1 to FINALROWNUMBER_PREV%
For j= 1 to FINALROWNUMBER_NEW%
If TKR_PREV$(i)=TKR_NEW(j,1) then
GOTO NEXTI_N2
END IF
NEXT j
PRINT #3,"MISSING?,"+TKR_PREV$(i)+",--,--"
NEXTI_N2:
NEXT i
END IF
END
----------------------------------------------------------------------------------------------------------------------------------
I have not completely debugged this (since it won't compile). However, memory errors should be non-existent. Same error - the DIM TKR_PREV as a one dimensional array is giving it fits.
Thoughts?
dbish