Oracle® Solaris Studio 12.4:Fortran 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

5.2 不兼容问题

下面列出了在使用此发行版的 f95 编译和测试传统 f77 程序时出现的已知不兼容问题。这些问题是由于 f95 中缺少相当的功能或者行为方式不同造成的。这些项目是传统 Sun WorkShop FORTRAN 77 编译器支持的 FORTRAN 77 非标准扩展,但当前的 f95 编译器不支持这些扩展。

源代码格式

  • 在指定 -f77 选项时,如果名称长度超过 6 个字符,则会发出 ANSI 警告。

I/O:

  • f95 不允许对直接访问文件使用 ENDFILE

  • f95 无法识别在直接访问 I/O 中指定记录编号时使用的 n 格式:READ (2 ’13) X,Y,Z

  • f95 无法识别传统 f77 "R" 格式编辑描述符。

  • f95 不允许在 CLOSE 语句中使用 DISP= 说明符。

  • 不允许在 WRITE 语句中使用位常量。

  • Fortran 95 NAMELIST 不允许使用长度可变的数组和字符串。

  • 使用 RECL=1 打开的直接访问文件不能用作“流”文件。请改用 FORMAT=’STREAM’

  • Fortran 95 将非法 I/O 说明符报告为错误,而 f77 只发出警告。

数据类型、声明和用法:

  • f95 只允许 7 个数组下标;而 f77 允许 20 个。

  • f95 不允许在 PARAMETER 语句中使用非常量。

  • 不能在 CHARACTER 类型声明的初始化函数中使用整数值。

  • REAL() 内部函数返回复数参数的实部,而不是将参数转换为 REAL*4。当参数为 DOUBLE COMPLEXCOMPLEX*32 时,这将产生不同的结果。

  • Fortran 95 不允许在数组声明之前在边界表达式中使用数组元素。例如:

    subroutine s(i1,i2)
    integer i1(i2(1):10)
    dimension i2(10)
    ...ERROR: "I2" has been used as a function, 
    therefore it must not be declared with the explicit-shape DIMENSION attribute.
    
    
    end

程序、子例程、函数和语句:

  • 名称的最大长度为 127 个字符。

命令行选项:

  • f95 无法识别 f77 编译器选项 -dbl -oldstruct -i2 -i4,以及 -vax 的一些子选项。

f95 不支持 FORTRAN 77 库例程

  • POSIX 库。

  • IOINIT() 库例程。

  • 磁带 I/O 例程 topentclosetwritetreadtrewintskipf、tstate

  • start_iostatsend_iostats 库例程。

  • f77_init() 函数。

  • f95 不允许通过使用相同名称定义用户自己的例程来绕过 IEEE_RETROSPECTIVE 子例程。