0

我用一个名为 SCATTERING 的函数编写了名为 single.pro 的 .pro IDL/GDL 文件,并且我在不同的行上调用了该函数。

函数定义为:

function scattering, dust, dsun, dstar, sflux, sigma, $    
        albedo, phase, angle, mean_density

并且,函数调用如下:

f = scattering(dust, dsun, dstar, sflux[iwave], sigma[iwave], albedo, phase, angle[iangle], mean_density)

程序的编译发生没有错误:

% Compiled module: SCATTERING.
% Compiled module: $MAIN$.

但是,在运行时,程序会在我调用函数 SCATTERING() 的那一行中断

% SCATTERING: Scalar subscript out of range [>].e (61)

我查看了这个错误,发现这可能是由于 IDL/GDL 的数组索引语法造成的,其中数组可以使用 [] 和 () 进行索引。

IDL 文档说建议添加该行以防止这种行为。

COMPILE_OPT STRICTARR

但是,我不确定在哪里添加这一行。在编译和运行程序之前,我尝试将它添加到文件的开头、函数的开头,甚至在 GDL REPL 中执行这一行,但这些都不起作用。

任何想法如何解决这个问题?

提前致谢 !

4

0 回答 0