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.2 数据类型

本节介绍 Fortran 数据类型的功能和扩展。

4.2.1 布尔类型

f95 支持布尔类型的常量和表达式。但是,没有布尔变量或数组,也没有布尔类型语句。

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

4.2.1.2 布尔常量的替代格式

f95 允许使用以下替代格式(没有二进制)的布尔常量(八进制、十六进制或霍尔瑞斯)。不能将变量声明为布尔型。标准 Fortran 不允许使用这些格式。

八进制

ddddddB,其中 d 是任意八进制数字

在 I/O 格式规范中,字母 B 表示二进制数字;而在其他地方则表示八进制数字。

十六进制

X’dddX"ddd ",其中 d 是任意十六进制数字

霍尔瑞斯

接受的霍尔瑞斯数据格式为:

nH
’H
""H
nL
’L
""L
nR
’R
""R

上面的 "…" 是字符串,n 是字符数。

示例: 八进制和十六进制常量。

布尔常量
32 位字的内部八进制数
0B
00000000000
77740B
00000077740
X"ABE"
00000005276
X"-340"
37777776300
X’1 2 3’
00000000443
X’FFFFFFFFFFFFFFFF’
37777777777

示例: 赋值语句中的八进制和十六进制数。

i = 1357B
j = X"28FF"
k = X’-5A’

在算术表达式中使用八进制或十六进制常量可产生未定义的结果,并且不会生成语法错误。

4.2.1.3 布尔常量的替代上下文

f95 允许在非 DATA 语句中使用 BOZ 常量。

Bbbb
Oooo
Zzzz
B"bbb"
O"ooo"
Z"zzz"

如果将它们赋值给实数变量,则不进行类型转换。

标准 Fortran 只允许在 DATA 语句中使用它们。

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

f95 允许在声明语句、函数语句和 IMPLICIT 语句中使用以下非标准的类型声明格式。第一列中的格式虽然已被广泛使用,但它们是非标准的 Fortran 格式。第二列中的种类数字可能会因供应商不同而异。

表 4-2 数值数据类型的大小表示法

非标准
声明符
简短形式
含义
INTEGER*1
INTEGER(KIND=1)
INTEGER(1)
有符号的单字节整数
INTEGER*2
INTEGER(KIND=2)
INTEGER(2)
有符号的双字节整数
INTEGER*4
INTEGER(KIND=4)
INTEGER(4)
有符号的 4 字节整数
LOGICAL*1
LOGICAL(KIND=1)
LOGICAL(1)
单字节逻辑值
LOGICAL*2
LOGICAL(KIND=2)
LOGICAL(2)
双字节逻辑值
LOGICAL*4
LOGICAL(KIND=4)
LOGICAL(4)
4 字节逻辑值
REAL*4
REAL(KIND=4)
REAL(4)
IEEE 单精度 4 字节浮点值
REAL*8
REAL(KIND=8)
REAL(8)
IEEE 双精度 8 字节浮点值
REAL*16
REAL(KIND=16)
REAL(16)
IEEE 四精度 16 字节浮点值
COMPLEX*8
COMPLEX(KIND=4)
COMPLEX(4)
单精度复数(每个部分 4 个字节)
COMPLEX*16
COMPLEX(KIND=8)
COMPLEX(8)
双精度复数(每个部分 8 个字节)
COMPLEX*32
COMPLEX(KIND=16)
COMPLEX(16)
四精度复数(每个部分 16 个字节)

4.2.3 数据类型的大小和对齐

存储和对齐始终以字节为单位。可以划分为单字节的值按字节对齐。

类型的大小和对齐取决于各种编译器选项和平台以及变量的声明方式。COMMON 块中的缺省最大对齐位置是 4 字节边界。

使用特殊选项(如 -aligncommon-f-dalign-dbl_align_all- xmemalign- xtypemap)进行编译,可以更改缺省的数据对齐和存储分配。本手册中的缺省描述假定这些选项无效。

Fortran 编程指南》提供了有关某些平台上数据类型和对齐方式特例的其他信息。

下表汇总了缺省的大小和对齐,并忽略类型和选项的其他方面。

表 4-3 缺省的数据大小和对齐(以字节为单位)

Fortran 数据类型
大小
缺省对齐
COMMON 中的对齐
BYTE X

CHARACTER X

CHARACTER*n X

1

1

n

1

1

1

1

1

1

COMPLEX X

COMPLEX*8 X

DOUBLE COMPLEX X

COMPLEX*16 X

COMPLEX*32 X

8

8

16

16

32

4

4

8

8

8/16

4

4

4

4

4

DOUBLE PRECISION X

REAL X

REAL*4 X

REAL*8 X

REAL*16 X

8

4

4

8

16

8

4

4

8

8/16

4

4

4

4

4

INTEGER X

INTEGER*2 X

INTEGER*4 X

INTEGER*8 X

4

2

4

8

4

2

4

8

4

2

4

4

LOGICAL X

LOGICAL*1 X

LOGICAL*2 X

LOGICAL*4 X

LOGICAL*8 X

4

1

2

4

8

4

1

2

4

8

4

1

2

4

4

请注意以下事项:

选项 -f-dalign 可强制将所有 8、16 或 32 字节数据与 8 字节边界对齐。选项 -dbl_align_all 可使所有数据与 8 字节边界对齐。如果程序依赖于这些选项的使用,则可能无法进行移植。