在 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 的行为。
idl
和 idlde
(GUI) 的行为不同:idl
要求函数存储在单独的 .pro 文件中,而 idlde
处理函数与 运行 脚本相同的文件,只要它们在任何其他命令之前声明即可。
gdl
的行为与 idl
一样,因此单独文件中的函数声明解决了该问题。
我的机器上安装了 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 的行为。
idl
和 idlde
(GUI) 的行为不同:idl
要求函数存储在单独的 .pro 文件中,而 idlde
处理函数与 运行 脚本相同的文件,只要它们在任何其他命令之前声明即可。
gdl
的行为与 idl
一样,因此单独文件中的函数声明解决了该问题。