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.9 模块文件

在编译包含 Fortran 95 MODULE 的文件时,会为在源代码中遇到的每个 MODULE 生成模块接口文件(.mod 文件)。文件名是从 MODULE 的名称中派生的;将为 MODULE xyz 创建文件 xyz.mod(全部小写)。

编译还会为包含 MODULE 语句的源文件生成 .o 模块实现目标文件。可与模块实现目标文件以及所有其他目标文件链接在一起以创建可执行文件。

编译器在 -moddir=dir 标志或 MODDIR 环境变量指定的目录中创建模块接口文件和实现目标文件。如果没有指定,则编译器在当前工作目录中写入 .mod 文件。

在编译 USE modulename 语句时,编译器在当前工作目录中查找接口文件。使用 - Mpath 选项,可以为编译器指定其他搜索路径。必须在链接步骤的命令行中显式列出模块实现目标文件。

通常,程序员为每个文件定义一个 MODULE,并为 MODULE 及包含它的源文件指定相同的名称。但是,这并不是必需的。

在本示例中,同时编译所有的文件。模块源文件在主程序使用它们之前就已出现。

demo% cat mod_one.f90
 MODULE one
    ...
 END MODULE
demo% cat mod_two.f90
 MODULE two
    ...
 END MODULE
demo% cat main.f90
 USE one
 USE two
   ...
 END
demo% f95 -o main mod_one.f90 mod_two.f90 main.f90

编译创建以下文件:

mainmain.oone.modmod_one.otwo.modmod_two.o

下一个示例单独编译每个单元,并将它们链接在一起。

demo% f95 -c mod_one.f90 mod_two.f90
demo% f95 -c main.f90
demo% f95 -o main main.o mod_one.o mod_two.o

在编译 main.f90 时,编译器在当前目录中搜索 one.modtwo.mod。必须先编译这些文件,再编译在 USE 语句中引用模块的任何文件。链接步骤要求模块实现目标文件 mod_one.omod_two.o 与所有其他目标文件一起出现,以创建可执行文件。

4.9.1 搜索模块

在发行的 7.0 版的 Fortran 编译器中,可以将 .mod 文件存储在归档 (.a) 文件中。要在归档中搜索模块,必须在命令行的 -Mpath 标志中显式指定它。在缺省情况下,编译器并不搜索归档文件。

仅搜索与 USE 语句中出现的名称同名的 .mod 文件。例如,Fortran 语句 USE mymod 使编译器缺省搜索模块文件 mymod.mod

在搜索过程中,编译器为在其中写入模块文件的目录指定更高的优先级。可以使用 -moddir=dir 选项标志和 MODDIR 环境变量对此进行控制。这意味着,如果仅指定了 -Mpath 选项,则首先搜索当前目录,然后再搜索 -M 标志上列出的目录和文件。

4.9.2 -use=list 选项标志

-use=list 标志强制将一个或多个隐式 USE 语句添加到每个使用该标志编译的子程序或模块子程序中。通过使用该标志,使得在库或应用程序的某个功能要求使用模块或模块文件时,不必修改源程序。

使用 -use=module_name 进行编译,可将 USE module_name 语句添加到正在编译的每个子程序或模块中。使用 -use=module_file_name 进行编译,与为 module_file_name 文件中包含的每个模块添加 USE module_name 具有相同的效果。

4.9.3 fdumpmod 命令

使用 fdumpmod(1) 命令可显示有关已编译模块信息文件的内容的信息。

demo% fdumpmod x.mod group.mod
x 1.0 v8,i4,r4,d8,n16,a4 x.mod
group 1.0 v8,i4,r4,d8,n16,a4 group.mod

fdumpmod 命令将在单个 .mod 文件、通过串联 .mod 文件形成的文件以及 .mod 文件的 .a 归档中显示有关模块的信息。显示的内容包含模块名称、版本号、目标体系结构,以及用来指示与模块兼容的编译选项的标志。有关详细信息,请参见 fdumpmod(1) 手册页。