在gfortran中的INQUIRE(inpunit,flen = iflen)中的语法错误,但在Lahey中没有

问题描述 投票:0回答:1

我尝试使用gfortran编译我的代码。我收到了这个错误:

   **INQUIRE(inpunit,flen=iflen)
                  1
   Error: Syntax error in INQUIRE statement at (1)**

此代码之前是用lahey编译的。通过快速研究,我发现,与lahey相比,INQUIRE的参数在gfortran中具有不同的含义。

  1. inpunit是一个标量INTEGER表达式,用于计算外部文件的输入/输出单元号。
  2. flen是一个标量默认的INTEGER变量,具有文件的长度(以字节为单位)。

我的问题是,当使用gfortran这个语句是正确的,以获得与Lahey相同的功能:

   **INQUIRE(inpunit,RECL=iflen) **

这两个陈述是否相似?谢谢

file-io fortran gfortran filesize
1个回答
1
投票

不,这两者完全不同。

flen=是Leahy编译器特有的非标准扩展,它返回文件的长度。

recl=是文件中的最大记录长度(如果文件已连接 - 打开,否则为0)https://software.intel.com/en-us/fortran-compiler-developer-guide-and-reference-inquire-recl-specifier

要符合标准,你应该使用size=。请注意,结果将在文件存储单元中。 Gfortran使用字节,但其他编译器可能使用4字节字。见What is a good way to get file size in bytes using Fortran (ifort)? Find input file size in fortran90

© www.soinside.com 2019 - 2024. All rights reserved.