JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:Fortran 用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  简介

2.  使用 Solaris Studio Fortran

3.  Fortran 编译器选项

4.  Solaris Studio Fortran 的功能与扩展

4.1 源语言功能

4.1.1 续行限制

4.1.2 固定格式源代码行

4.1.3 制表符格式

4.1.4 采用的源代码格式

4.1.4.1 混合格式

4.1.4.2 大小写

4.1.5 限制和缺省值

4.2 数据类型

4.2.1 布尔类型

4.2.1.1 控制布尔类型的各种规则

4.2.1.2 布尔常量的替代格式

八进制

十六进制

霍尔瑞斯

4.2.1.3 布尔常量的替代上下文

4.2.2 数值数据类型的缩写大小表示法

4.2.3 数据类型的大小和对齐

4.3 Cray 指针

4.3.1 语法

4.3.2 Cray 指针的用途

4.3.3 声明 Cray 指针和 Fortran 95 指针

4.3.4 Cray 指针的功能

4.3.5 Cray 指针的限制

4.3.6 Cray 指针对象的限制

4.3.7 Cray 指针的用法

4.4 STRUCTUREUNION (VAX Fortran)

4.5 无符号整数

4.5.1 算术表达式

4.5.2 关系表达式

4.5.3 控制构造

4.5.4 输入/输出构造

4.5.5 内部函数

4.6 Fortran 200x 功能

4.6.1 与 C 之间的互操作性

4.6.2 IEEE 浮点异常处理

4.6.3 命令行参数内部函数

4.6.4 PROTECTED 属性

4.6.5 Fortran 2003 异步 I/O

4.6.6 扩展的 ALLOCATABLE 属性

4.6.7 VALUE 属性

4.6.8 Fortran 2003 流 I/O

4.6.9 Fortran 2003 IMPORT 语句

4.6.10 Fortran 2003 FLUSH I/O 语句

4.6.11 Fortran 2003 POINTER INTENT 功能

4.6.12 Fortran 2003 中增强的数组构造函数

4.6.13 面向对象的 Fortran 支持

4.6.14 其他 Fortran 2003 和 Fortran 2008 功能

4.7 其他的 I/O 扩展

4.7.1 I/O 错误处理例程

4.7.2 变量格式表达式

4.7.3 NAMELIST 输入格式

4.7.4 二进制未格式化 I/O

4.7.5 各种 I/O 扩展

4.8 指令

4.8.1 特殊 f95 指令行的格式

4.8.1.1 固定格式源代码

4.8.1.2 自由格式源代码

4.8.2 FIXEDFREE 指令

4.8.2.1 作用域

4.8.2.2 用法

4.8.2.3 限制

4.8.3 并行化指令

4.9 模块文件

4.9.1 搜索模块

4.9.2 -use=list 选项标志

4.9.3 fdumpmod 命令

4.10 内部函数

4.11 向前兼容性

4.12 混合语言

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

A.  运行时错误消息

B.  功能发行版历史记录

C.  Fortran 指令摘要

索引

4.6 Fortran 200x 功能

Oracle Solaris Studio Fortran 编译器的此发行版中引入了 Fortran 2003 和 Fortran 2008 标准中的许多新功能。有关详细信息,请参阅相应的 Fortran 标准。

4.6.1 与 C 之间的互操作性

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

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

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

Fortran 编译器实现了 Fortran 标准第 15 章中介绍的功能。除了 C_F_PROCPOINTER(它需要对 Fortran 过程指针的支持)之外,第 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 编译器接受 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 子程序:

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

Fortran code:
       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 IMPORT 语句

IMPORT 语句指定主机作用域单元中可由主机关联访问的实体。仅在接口主体中允许使用。

4.6.10 Fortran 2003 FLUSH I/O 语句

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

4.6.11 Fortran 2003 POINTER INTENT 功能

现在,Fortran 编译器支持 POINTER 哑元参数的 INTENT 属性:可以为指针 dummy 指定 INTENT(IN)、INTENT(OUT)INTENT(INOUT)

例如,

subroutine sub(P)
integer, pointer, intent(in) :: p
...

end

指针的 INTENT 属性应用于指针,而非指针所指向的元素,因此对于 INTENT(IN) 指针,以下语句是非法的,因为这些语句将修改指针:

 p => t
 allocate(p)
 deallocate(p)

但以下语句对于 INTENT(IN) 指针是合法的,因为它修改指针所指向的元素:

 p = 400

4.6.12 Fortran 2003 中增强的数组构造函数

数组构造函数中允许使用方括号代替 (//)

X = [ 3.2, 4.01, 6.5 ]

Fortran 2003 标准允许使用方括号作为数组构造函数。这可能会与区间常量冲突。如果在不带 -xia 选项(或用于启用区间运算的类似选项)的情况下使用方括号,这些方括号将被视为数组构造函数。如果使用 -xia 选项,这些方括号将被视为常量。区间用户应继续使用 (/ /) 数组构造函数,以避免出现编译错误。

数组构造函数中的数组组件可以具有以下两种格式:

type-spec ::

[type-spec ::] ac-value-list

当提供了可选的 type-spec 时,各个数组组件的类型和种类不必相同,只要数组组件的类型符合 type-spec 即可。

type-spec 可以是内部类型或派生类型。

4.6.13 面向对象的 Fortran 支持

在此发行版中,Fortran 中支持多态性(不带类型绑定过程)。支持的功能和关键字包括:

使用关键字 EXTENDS 的类型扩展
CLASS 语句
无限制多态性
SELECT TYPE 构造
ABSTRACT 派生类型
EXTENDS_TYPE_OFSAME_TYPE_AS 内部函数
到无限制指针的序列类型分配

此发行版不支持的面向对象的功能和关键字包括:

类型绑定 PROCEDURE 声明
GENERIC
DEFERRED
NON_OVERRIDABLE
PASS
NOPASS

4.6.14 其他 Fortran 2003 和 Fortran 2008 功能

有关详细信息,请参阅已发布的 Fortran 2003 和 Fortran 2008 标准。