Error: Unclassifiable statement (decode) on Fortran code

Error: Unclassifiable statement (decode) on Fortran code

我有一个来自 FORTRAN 代码的 Windows DLL。 DLL 正在运行,但我需要更改它并移植到 Linux.

现在我正在尝试使用 this 将其包装成 Java 代码,并尝试使用 gfortran 进行编译。

我遇到了类似 Error: Unclassifiable statement at (1) 的问题,但四处搜索后我读到这个错误过于笼统并且与很多事情相关,none 其中与我的代码相关(或者我认为是) .

这是有问题的代码:

...
character*2 di,mi
character*4 ai
...
integer*2 dia_ini, mes_ini, ano_ini
...

decode (2, '(i2)', mi ) mes_ini
decode (2, '(i2)', di ) dia_ini
decode (4, '(i4)', ai ) ano_ini

...

所有 decode 行在行首给出错误(“1”指向 "decode" 的 d 下方)

我无法理解的一件事是 `di,mi' 和 'ai' 也在参数列表中:

Subroutine PREVISAO (di,mi,ai)

Fortran 允许这样做吗?参数的初始值不是丢失了吗?

原始文件的扩展名为 .f90,只有 subroutine 个块。

如评论中所述,DECODE(和 ENCODE)不是 Fortran 标准的一部分,GFortran 不支持此特定扩展。在 GFortran 手册中,您可以找到如何使用内部 READ/WRITE 语句将 ENCODE 和 DECODE 转换为标准 Fortran 结构的示例:https://gcc.gnu.org/onlinedocs/gfortran/ENCODE-and-DECODE-statements.html