-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有可能在数据集中缺失。但为什么这是一个问题?无论如何它们都被初始化。
如果您使用EXN作为索引,我会假定它也会出现在错误消息中。不是。您应该在日志中发布引用的代码行,第408行 - 它会准确告诉您索引出现问题的位置。 – Reeza
我的代码中甚至没有408行... –
它运行在集群上我想这就是为什么 –