错误:Fortran代码上无法分类的语句(解码)

时间:2018-08-13 13:53:41

标签: fortran gfortran

我有一个Windows DLL来自FORTRAN代码。 DLL正在工作,但是我需要更改它并移植到Linux。

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

我遇到了Error: Unclassifiable statement at (1)之类的问题,但四处搜寻时发现此错误过于笼统,与很多事情有关,而这些都与我的代码无关(或者我认为如此)。

这是有问题的代码:

...
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”指向“解码”的d下方)

我不明白的一件事是参数列表中还有'di,mi'和'ai':

Subroutine PREVISAO (di,mi,ai)

在Fortran上允许吗?参数的初始值会丢失吗?

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

1 个答案:

答案 0 :(得分:3)

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