SAS数组下标超出范围

时间:2017-06-16 22:35:53

标签: 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.现在我认为数据集中可能缺少一些数字。但为什么这是一个问题呢?无论如何它们都被初始化了。

1 个答案:

答案 0 :(得分:1)

您不能使用缺失值作为数组的索引。您的日志显示缺少EXN。