Oracle Solaris Studio 12.2:Fortran 用户指南

第 5 章 FORTRAN 77 兼容性:迁移到 Solaris Studio Fortran

不再提供单独的 Fortran 77 编译器。Solaris Studio Fortran 编译器 f95 可编译大多数的旧版 FORTRAN 77 程序,其中包括采用以前由 Sun WorkShop f77 编译器编译的非标准扩展的程序。

f95 可直接接受很多 FORTRAN 77 功能。其他功能要求在 FORTRAN 77 兼容性模式 (f95 -f77) 下进行编译。

本章介绍 f95 接受的 FORTRAN 77 功能,并列出了那些与 f95 不兼容的 f77 功能。有关 Sun WorkShop f77 编译器所接受的任何非标准 FORTRAN 77 扩展的详细信息,请参见 http://docs.sun.com/source/806-3594/index.html 上的旧版《FORTRAN 77 Language Reference》手册。

有关 f95 编译器所接受的其他 Fortran 语言扩展的信息,请参见第 4 章

f95 可编译符合标准的 FORTRAN 77 程序。要确保持续的可移植性,使用非标准 FORTRAN 77 功能的程序应该迁移到符合标准的 Fortran 95/2003。使用 -ansi 选项进行编译,会标出程序中所有不符合标准的用法。

5.1 兼容的 f77 功能

f95 直接接受或在 -f77 兼容性模式下进行编译时接受旧版 FORTRAN 77 编译器 f77 的以下非标准功能:

源代码格式

I/O:

数据类型、声明和用法:

程序、子例程、函数和可执行语句:

其他

有关旧版 Sun WorkShop FORTRAN 77 编译器所接受的非标准语言扩展语法和语义的详细信息,请参见 http://docs.sun.com/source/806-3594/index.html 上归档的《FORTRAN 77 Language Reference》。

5.2 不兼容问题

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

源代码格式

I/O:

数据类型、声明和用法:

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

命令行选项:

f95 不支持 FORTRAN 77 库例程

5.3 与旧版 FORTRAN 77 编译的例程链接

5.3.1 Fortran 内部函数

Fortran 标准支持 FORTRAN 77 中没有的内部函数。《Fortran 库参考》手册中介绍了完整的 Fortran 内部函数集,其中包括非标准的内部函数。

如果在程序中将《Fortran 库参考》中列出的任何内部函数名称用作函数名称,则必须添加 EXTERNAL 语句才能让 f95 使用您的例程而不是内例程。

Fortran 库参考》还列出了以前发行版的 f77 编译器能够识别的所有内部函数f95 编译器也将这些名称识别为内部函数。

如果使用 -f77=intrinsics 进行编译,则会将编译器识别的内部函数限定为 f77 编译器识别的那些函数,而忽略 Fortran 内部函数。

5.4 有关迁移到 f95 编译器的附加说明

5.5 f77 命令

Solaris Studio 软件不再包括单独的 FORTRAN 77 编译器 f77。最新的发行版已将许多 FORTRAN 77 功能迁移到 Fortran 95 编译器 f95 中。现在,Fortran 95 编译器中提供了旧版 FORTRAN 77 编译器的许多功能。当前 Solaris Studio 编译器发行版提供一个 f77 脚本,它用一组适当的缺省选项调用 f95 编译器。调用 f77 相当于:


f95 -f77 -ftrap=%none       

如果需要链接使用先前发行的 f77 编译器编译的库例程,请将 -xlang=f77 添加到命令行中。但如果在单独的步骤中进行编译和链接,并显式指定 -xlang=f77-lM77-lF77-lsunmath,则必须使用 f95(或 f77 脚本)进行链接,而不能使用 ccCC。如果还使用 -fast 标志进行编译,应将 -ftrap=%none 添加到 -fast 之后,以保留 FORTRAN 77 对运算异常的捕获行为,因为 -fast 将捕获模式设置为 "common"。


f77 -fast -ftrap=%none       

如果调用 f77 脚本,将发出消息,警示您正在 -f77 兼容模式下使用 f95 编译器。您可以在命令行中添加 -errtags=INVOKE 来禁用此消息。有关更多信息,请参见3.4.23 –f77[= list]