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