Sun Studio 12:Fortran 用户指南

4.6 Fortran 2003 功能

在此发行版的 f95 编译器中,引入了 Fortran 2003 标准中的许多新功能。有关详细信息,请参阅 Fortran 2003 标准。

4.6.1 与 C 函数之间的互操作性

新的 Fortran 标准提供了以下内容:

ISO_C_BINDING 模块提供了对命名常量的访问,这些命名常量是种类类型参数,它们代表了与 C 类型兼容的数据。

草案标准还引入了 BIND(C) 属性。如果 Fortran 派生类型具有 BIND 属性,则它可以与 C 之间进行互操作。

此发行版的 Fortran 95 编译器实现了草案标准第 15 章中描述的这些功能。如标准中第 4 章所述,Fortran 还提供了用于定义与 C 类型对应的派生类型和枚举的工具。

4.6.2 IEEE 浮点异常处理

在 Fortran 语言中,新的内部模块 IEEE_ARITHMETICIEEE_FEATURES 提供了对异常和 IEEE 算法的支持。对这些功能提供完整支持的是:

USE, INTRINSIC :: IEEE_ARITHMETIC

USE, INTRINSIC :: IEEE_FEATURES

INTRINSIC 关键字是 Fortran 2003 中的新增功能。这些模块定义了一组派生类型、常量、舍入模式、查询函数、基本函数、种类函数、基本和非基本子例程。有关详细信息,请参见 Fortran 2003 草案标准的第 14 章。

4.6.3 命令行参数内函数

Fortran 2003 标准引入了三个新的内函数,用来处理命令行参数和环境变量。包括:

4.6.4 PROTECTED 属性

现在,Fortran 95 编译器接受 Fortran 2003 的 PROTECTED 属性。PROTECTED 对模块实体的使用进行了限制。具有 PROTECTED 属性的对象只能在声明这些对象的模块中定义。

4.6.5 Fortran 2003 异步 I/O

编译器可识别 I/O 语句中的 ASYNCHRONOUS 说明符:

ASYNCHRONOUS=[’YES’ | ’NO’]

此语法是在 Fortran 2003 标准第 9 章中提出的。在与 WAIT 语句结合使用时,它允许程序员指定可能与计算重叠的 I/O 进程。虽然编译器可以识别 ASYNCHRONOUS='YES',但草案标准并不要求实际使用异步 I/O。在此发行版的编译器中,I/O 总是同步的。

4.6.6 扩展的 ALLOCATABLE 属性

Fortran 2003 扩展了 ALLOCATABLE 属性所允许的数据实体。以前,仅限本地存储的数组变量使用该属性。现在,允许将它用于:

在可分配实体可能与存储关联的所有位置,仍然禁止使用可分配实体:COMMON 块和 EQUIVALENCE 语句。可分配数组组件可以以 SEQUENCE 类型出现,但在 COMMONEQUIVALENCE 中禁止使用此类型的对象。

4.6.7 VALUE 属性

f95 编译器接受 Fortran 2003 VALUE 类型声明属性。

如果使用此属性指定子程序伪输入参数,则表明“按值”传递实际参数。以下示例说明如何将 VALUE 属性用于一个 C 主程序,该主程序将文字值作为参数来调用 Fortran 95 子程序:


C 代码:
#include <stdlib.h>
int main(int ac, char *av[])
{
    to_fortran(2);
}

Fortran 代码:
       subroutine to_fortran(i)
       integer, value :: i
       print *, i
       end

4.6.8 Fortran 2003 流 I/O

Fortran 2003 标准定义了一个新的“流”I/O 方案。流 I/O 访问将数据文件作为连续的字节序列来处理,可由从 1 开始的正整数进行寻址。可以通过连接数据文件来进行格式化访问或无格式化访问。

可以在 OPEN 语句中使用 ACCESS='STREAM' 说明符来声明流 I/O 文件。字节地址文件定位要求 READWRITE 语句中有 POS=scalar_integer_expression 说明符。INQUIRE 语句接受 ACCESS=’STREAM’、说明符 STREAM=scalar_character_variablePOS=scalar_integer_variable

4.6.9 Fortran 2003 格式化 I/O 功能

f95 中,已实现了三个新的 Fortran 2003 格式化 I/O 说明符。它们可以出现在 OPENREADWRITEPRINTINQUIRE 语句中:

INQUIRE 语句中使用时,这些说明符声明一个字符变量以返回当前值。

新的编辑描述符 DPDCRPRC 将单个 FORMAT 语句中的缺省设置分别更改为小数点、小数逗号、处理器定义的舍入以及兼容的舍入。例如:

WRITE(*,’(I5,DC,F10.3)’) N, W

F10.3 输出项中打印逗号而不是句点。

要了解如何更改格式化 I/O 的浮点舍入模式,另请参见 -iorounding 编译器命令行选项。(3.4.49 –iorounding[ ={compatible|processor-defined}].)

4.6.10 Fortran 2003 FLUSH I/O 语句

f95 编译器可识别 2003 FLUSH 语句。FLUSH 语句使写入外部文件的数据可用于其他进程;通过除 Fortran 以外的其他方法使外部文件中的数据可用于 READ 语句。