在 Ubuntu 20 上的 GDL 中定义函数时出错

Error when defining function in GDL on Ubuntu 20

我的机器上安装了 GDL v0.9.9 运行ning Ubuntu 20.04。我正在尝试编写一个计算儒略日期的函数。

list_1 文件:

FUNCTION JulianDate, L, M, N
    L1 = L + 4716 - FLOOR((14 - M) / 12)
    M1 = (M + 9) MOD 12
    G = FLOOR(3/4*FLOOR((L1 + 184)/100)) - 38
    RETURN, FLOOR(365.25 * L1) + FLOOR(30.6 * M1 + 0.4) + N - G - 1402
END

JD = JulianDate(1990, 4, 30)

不幸的是,在 $ gdl list_1 之后我得到了错误:

% Programs can't be compiled from single statement mode.
% Variable is undefined: L
% Execution halted at: $MAIN$          
% Variable is undefined: M
% Execution halted at: $MAIN$          
% Variable is undefined: L1
% Execution halted at: $MAIN$          
% Return statement in procedures cannot have values.
% Parser syntax error: unexpected token: END
% Ambiguous: Variable is undefined: JULIANDATE or: Function not found: JULIANDATE
% Execution halted at: $MAIN$  

我将我的代码与 IDL 的 documentation 进行了比较(因为它应该是“相互理解的”),它对我来说看起来不错。 declaring/defining/calling GDL 中的函数与 IDL 中的函数不同吗?

编辑 1:我设法 运行 我的代码在 IDL 8.5 的机器上。函数必须在文件的开头声明在任何变量之前。但是它不会改变 GDL 的行为。

idlidlde (GUI) 的行为不同:idl 要求函数存储在单独的 .pro 文件中,而 idlde 处理函数与 运行 脚本相同的文件,只要它们在任何其他命令之前声明即可。

gdl 的行为与 idl 一样,因此单独文件中的函数声明解决了该问题。