我在运行Ubuntu20.04的机器上安装了GDL v0.9.9。我正在尝试编写一个计算朱利安日期的函数。
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的文档进行了比较(因为它应该是“相互理解的”),而且它看起来对我很好。在GDL中声明/定义/调用函数是否与IDL中的函数不同?
编辑1:我设法用IDL8.5在机器上运行我的代码。函数必须在任何变量之前在文件的开头声明。然而,它并没有改变GDL的行为。
发布于 2020-10-14 20:45:21
idl和idlde (GUI)的行为不同:虽然idl要求将函数存储在单独的.pro文件中,但idlde处理与运行脚本相同的文件中的函数,只要它们是在任何其他命令之前声明的。
gdl的行为就像idl一样,因此函数在单独文件中的声明解决了这个问题。
https://stackoverflow.com/questions/64335330
复制相似问题