2017-06-16 279 views
-1

我得到的數組下標超出範圍的錯誤:SAS數組下標越界

ERROR: Array subscript out of range at line 408 column 169. 
SYM_ROOT=FSV DATE=. TIME_M=. BID=. BIDSIZ=. ASK=. ASKSIZ=. EXN=. 
FIRST.SYM_ROOT=1 LAST.SYM_ROOT=1 FIRST.DATE=1 LAST.DATE=1 FIRST.TIME_M=1 
LAST.TIME_M=1 nexb1=. nexb2=. nexb3=. nexb4=. nexb5=. nexb6=. nexb7=. nexb8=. 
nexb9=. nexb10=. nexb11=. nexb12=. nexb13=. nexb14=. nexb15=. nexb16=. nexb17=. 
nexo1=. nexo2=. nexo3=. nexo4=. nexo5=. nexo6=. nexo7=. nexo8=. nexo9=. nexo10=. 
nexo11=. nexo12=. nexo13=. nexo14=. nexo15=. nexo16=. nexo17=. sexb1=. sexb2=. 
sexb3=. sexb4=. sexb5=. sexb6=. sexb7=. sexb8=. sexb9=. sexb10=. sexb11=. 
sexb12=. sexb13=. sexb14=. sexb15=. sexb16=. sexb17=. sexo1=. sexo2=. sexo3=. 
sexo4=. sexo5=. sexo6=. sexo7=. sexo8=. sexo9=. sexo10=. sexo11=. sexo12=. 
sexo13=. sexo14=. sexo15=. sexo16=. sexo17=. _I_=. i=18 BB=. BO=. MIDPRICE=. 
BBSize=. BOSize=. NUMEX=. _ERROR_=1 _N_=6417740 

但是,我不知道發生了什麼,因爲代碼先前已經在不同的數據集工作。

我能想到的唯一的事情是,因爲我有問題的數據集是原始數據集(工作)的子集,它可能沒有完整範圍的EXN(我正在使用變量命名爲exn作爲數組的索引)。

予定義的陣列爲:

array nexb nexb:; array nexo nexo:; array sexb sexb:; array sexo sexo:; 

我說的是被稱爲EXN的變量,它是用來引用數組:

nexb(exn)=bid;nexo(exn)=ofr;sexb(exn)=bidsiz;sexo(exn)=ofrsiz; 

這些陣列是在下面的初始化方式:

do i=1 to 17; 
    nexb(i)=.; nexo(i)=.; sexb(i)=.; sexo(i)=.; 
end; 

本來exn涵蓋從1到17.現在我認爲一些數字在b有可能在數據集中缺失。但爲什麼這是一個問題?無論如何它們都被初始化。

+0

如果您使用EXN作爲索引,我會假定它也會出現在錯誤消息中。不是。您應該在日誌中發佈引用的代碼行,第408行 - 它會準確告訴您索引出現問題的位置。 – Reeza

+0

我的代碼中甚至沒有408行... –

+0

它運行在集羣上我想這就是爲什麼 –

回答

1

您不能使用缺少的值作爲數組的索引。您的日誌顯示EXN缺失。