第一章 绪论 1
1.1 综述 1
1.2 系统要求 2
1.3 关于文献的说明 2
1.3.1 本手册的主要内容 2
1.3.2 迅速查找信息 3
1.4 书写方面的约定 3
1.5 FORTRAN语言参考书 6
第二章 启动 8
2.1 引言 8
2.2 备份盘片 8
2.3 校验盘片内容 8
2.4 SETUP程序 8
2.4.1 SETUP的功能 9
2.4.2 启动SETUP 9
2.4.3 在硬盘系统上安装软件 9
2.4.4 在5 1/4英寸软盘系统上安装软件 10
2.4.5 在3 1/4英寸软盘系统上安装软件 12
2.4.6 SETUP库选择项 14
2.4.6.1 中模式和大模式库的选取 14
2.4.6.2 数学软件包的选取 14
2.4.6.3 库的命名 15
2.4.6.4 取消错误信息的说明 15
2.4.6.5 和Microsoft,C语言的兼容性 15
2.4.6.6 与3.2版和3.3版的兼容 16
2.4.6.7 多次运行SETUP 16
2.5 编译系统环境 16
2.5.1 环境变量 17
2.5.1.1 PATH变量 17
2.5.1.2 LIB变量 17
2.5.1.3 INCLUDE变量 17
2.5.1.4 TMP变量 18
2.5.1.5 环境变量的设置 18
2.5.2 CONFIG.SYS的设置 19
2.6 80186,80188或80286处理器的使用 19
2.7 RAM盘的使用 20
2.8 转换原有的FORTRAN程序 20
2.9 快速投入运行 20
2.9.1 快速查找选择项 20
2.9.2 简单的编译和连接 21
2.9.3 统配符的使用 21
2.9.4 只编译不连接 21
2.9.5 仿真库的使用 21
2.9.6 准备使用CodeView调试程序 22
2.9.7 调试和说明选择项的使用 22
2.9.8 标题和子标题的设置 22
2.9.9 自由格式源文件的编译 22
2.10 实际步骤 22
2.11 批处理文件的使用 24
第三章 FL编译命令 25
3.1 引言 25
3.2 编译、连接和运行FORTRAN文件的基础知识 25
3.2.1 使用FL进行编译和连接 25
3.2.1.1 中止FL命令 27
3.2.1.2 换盘 27
3.2.2 和库的连接 28
3.2.3 运行FORTRAN程序 28
3.3 FL选择项的使用 29
3.3.1 浮点(/FP)和内存模式(/A)选择项 29
3.3.2 含有FL选择项的求助文件(/HELP) 30
3.3.3 指定源文件(/Tf) 31
3.3.4 只编译不连接 32
3.3.5 目标文件的命名 32
3.3.6 可执行文件的命名 33
3.3.7 列表文件的建立 34
3.3.7.1 列表文件的类型 34
3.3.7.2 专有文件名 36
3.3.7.3 行宽(/Sl)和页长(/Sp) 36
3.3.7.4 标题(/St)和子标题(/Ss) 37
3.3.7.5 列表文件的格式 38
3.3.8 搜索内含文件(/I,/X) 44
3.3.9 警告和错误的处理 46
3.3.9.1 了解错误信息 46
3.3.9.2 调试选择项(/4Yb,/4Nb)和说明选择项(/4Yd,/4Nd) 47
3.3.9.3 警告状态选择项(/W) 48
3.3.9.4 语法错误(/Zs) 49
3.3.10 设置约定的整型数长度(/4I2,4I4) 49
3.3.11 控制源文件的语法(/4Y6,/4N6,/4Yf,/4Nf,/4Ys,/4Ns,/4Yt,4Nt) 50
3.3.12 条件编译(/4cc) 51
3.3.13 准备进行调试(/Zi,/Od,/Zd) 51
3.3.14 80186,80188或80286处理器的使用(/G0,/G1,/G2) 52
3.3.15 优化(/O选择项) 53
3.3.16 使用栈探测 54
3.3.17 取消自动的库选择(/ZI) 55
3.3.18 栈空间的设置(/F) 55
3.3.19 对外部名长度的限制(/H) 56
3.3.20 为目标文件标号 56
3.3.21 和3.2版的兼容性(/Gr) 56
3.4 使用FL连接但不编译 57
第四章 连接 58
4.1 引言 58
4.2 运行连接程序 58
4.3 了解LINK的内存要求 58
4.4 使用LINK命令进行连接 59
4.4.1 命令行的使用 59
4.4.1.1 命令行的缺省选择 59
4.4.1.2 目标文件的说明 60
4.4.1.3 执行文件名的说明 60
4.4.1.4 映射文件的说明 60
4.4.1.5 库的说明 60
4.4.1.6 连接程序选择项的说明 61
4.4.2 提示的使用 61
4.4.3 响应文件的使用 62
4.5 FORTRAN程序文件的连接 63
4.5.1 程序入口处 63
4.5.2 文件名的说明 63
4.5.3 指定要进行搜索的库 64
4.5.3.1 附加库的搜寻 64
4.5.3.2 在不同的区域查找库 64
4.5.3.3 取消目标文件中的库名 64
4.6 连接程序选择项 65
4.6.1 熟悉选择项表(/HE) 66
4.6.2 连接期间的暂停(/P) 66
4.6.3 连接程序处理信息的显示(/I) 67
4.6.4 压缩执行文件(/E) 68
4.6.5 公共符号的列表(/M) 68
4.6.6 将行号放在映射文件中(/LI) 68
4.6.7 保留大小写的区别 68
4.6.8 不考虑缺省库 69
4.6.9 栈空间的控制(/ST) 69
4.6.10 最大分配空间的设置(/CP) 69
4.6.11 段的控制(/SE) 70
4.6.12 覆盖中断的设置 70
4.6.13 段的排序(/DO) 71
4.6.14 数据装配的控制(/DS) 71
4.6.15 执行文件装入的控制(/HI) 71
4.6.16 保留兼容性(/NOG) 72
4.6.17 准备进行调试(/CO) 72
4.7 覆盖的使用 72
4.7.1 对覆盖的限制 73
4.7.2 覆盖管理程序提示 73
4.8 中止LINK对话 74
4.9 连接程序如何工作 74
4.9.1 段的对齐 75
4.9.2 帧数 75
4.9.3 段的顺序 75
4.9.4 组合段 75
4.9.5 组 76
4.9.6 安装 76
第五章 库的管理 78
5.1 引言 78
5.2 LIB使用概论 78
5.3 运行LIB 79
5.3.1 使用命令行运行LIB 79
5.3.1.1 指定库文件 79
5.3.1.2 指定页长 80
5.3.1.3 提供LIB命令 80
5.3.1.4 指定交叉引用列表文件 81
5.3.1.5 指定输出库 81
5.3.2 使用提示 82
5.3.2.1 扩展行 82
5.3.2.2 使用缺省响应 83
5.3.3 使用响应文件 83
5.3.4 中止库对话 84
5.4 使用LIB来管理库 84
5.4.1 建立库文件 84
5.4.2 修改库文件 84
5.4.3 扦入库模块 84
5.4.4 删除库模块 85
5.4.5 取代库模块 85
5.4.6 取出库模块 85
5.4.7 移动库模块 85
5.4.8 合并库 85
5.4.9 生成交叉引用列表文件 86
5.4.10 执行相容性检查 86
5.4.11 设置库页长度 86
第六章 使用MAKE维护程序 87
6.1 引言 87
6.2 MAKE使用概论 87
6.3 建立MAKE描述文件 88
6.4 对程序进行维护的实例 90
6.5 运行MAKE 91
6.6 MAKE选择项 91
6.7 使用宏定义 92
6.7.1 定义和说明宏 92
6.7.2 在宏定义内使用宏 93
6.7.3 使用专有宏 94
6.8 定义接口规则 94
第七章 EXEPACK、EXEMOD、SETENV和ERROUT实用程序 97
7.1 引言 97
7.2 EXEPACK实用程序 97
7.3 EXEMOD实用程序 98
7.4 SETENV实用程序 100
7.5 ERROUT实用程序 102
第八章 控制浮点运算 103
8.1 引言 103
8.2 数学包概论 103
8.2.1 8087/80287包 103
8.2.2 仿真数学包 103
8.2.3 替换数学包 104
8.3 选取浮点运算的选择项(/FP) 104
8.3.1 浮点选择项的库考虑 106
8.3.1.1 内指令和调用 106
8.3.1.2 使用一个标准库进行连接 107
8.3.2 浮点选择项之间的兼容性 109
8.3.3 $FLOA TCALLS和$NOFLOA TCALLS的使用 109
8.4 N087环境变量的使用 109
8.5 非IBM兼容计算机的使用 110
第九章 内存模式 111
9.1 引言 111
9.2 什么是内存模式 112
9.2.1 代码和数据段 112
9.2.2 近程、远程和特远程地址 112
9.2.3 缺省数据段 114
9.3 FORTRAN内存模式 114
9.3.1 对数据的限制 114
9.3.1.1 缺省数据段限制 114
9.3.1.2 大于64K的数组 116
9.3.1.3 可调数组和假定长度数组 116
9.3.1.4 公用块 117
9.3.1.5 传送给子程序的变元 117
9.3.1.6 数据分配综述 118
9.3.2 对代码的限制 118
9.3.2.1 分隔源文件 119
9.3.2.2 NEAR属性 119
9.4 内存模式的选取和调整 119
9.4.1 标准内存模式的使用(/AL,/AH,/AM) 120
9.4.1.1 大模式 120
9.4.1.2 特大模式 120
9.4.1.3 中模式 120
9.4.2 NEAR,FAR和HUGE属性 121
9.4.3 $LARGE和$NOTLARGE元命令 122
9.4.4 库例行程序和不同内存模式一起使用 124
9.4.5 数据阀值的设置(/Gt) 124
9.4.6 模块和段的命名(/NM,/NT) 124
第十章 提高编译和执行效率 126
10.1 引言 126
10.2 SETUP期间取消错误信息正文 126
10.3 编译和连接策略 126
10.3.1 调试(/4Yb)与整型长度(/4I)选择项 126
10.3.2 8087/80287数学选择项 126
10.3.3 4.0版和3.3版模块的连接 127
10.3.4 覆盖 127
10.4 编码策略 127
10.4.1 一致的文件存取类型和格式类型 127
10.4.2 编辑表 127
10.4.2.1 避免使用左跳空格 127
10.4.2.2 格式化I/O和直接列表I/O 128
10.4.2.3 作为格式说明符的字符变量 128
10.4.3 BLOCKSIZE的使用 128
10.4.4 整型变量和实型变量 128
10.4.5 数组和EQUIVALENCE语句 129
第十一章 与汇编语言和C的接口 131
11.1 引言 131
11.2 汇编语言接口 131
11.2.1 建立汇编语言实程序例 131
11.2.2 Microsoft FORTRAN的段模式 139
11.2.3 FORTRAN的变元传送规则 142
11.2.4 C的变元传送规则 143
11.2.5 进入汇编语言例程序 143
11.2.6 返送值规则 144
11.2.7 退出例程 145
11.2.8 命令规则 145
11.2.9 寄存器考虑 145
11.3 混合语言程序设计 146
11.3.1 内存模式 146
11.3.2 选取调用规则 146
11.3.3 命名规则 149
11.3.4 FORTRAN到C的接口 150
11.3.5 从FORTRAN中调用C过程 152
11.3.6 C到FORTRAN的接口 152
11.3.7 从C中调用FORTRAN过程 153
11.3.8 数据类型 153
11.3.9 返送值 163
11.3.10 共享数据 163
11.3.11 输入与输出 164
11.3.12 运行库考虑 165
11.3.13 错误信息 167
附录A 4.0和3.3版之间的差别 168
A.1 引言 168
A.2 为适应ANSI全语言标准所做的修改 168
A.3 源文件之间的兼容性 169
A.3.1 数组说明中的属性 169
A.3.2 格式化文件中的空格意义 169
A.3.3 OPEN语句中的MODE和STATUS选择项 170
A.3.4 临时草稿文件名 170
A.3.5 二进制直接文件 170
A.3.6 浮点运算的精度 171
A.3.7 乘幂的例外 171
A.3.8 直接列表输出 172
A.3.9 DO循环的范围 173
A.4 目标文件之间的兼容性 173
A.4.1 库文件的兼容性 173
A.4.2 混合的4.0版和3.3版模块 174
A.4.3 混合的4.0版和3.2版模块 174
A.5 4.0版对以前版本的修改 174
A.5.1 编译程序和连接程序的增强 175
A.5.2 运行库的修改 176
A.5.3 对语言所做的修改 176
A.5.4 新的语言特点 181
附录B 出口码 184
B.1 引言 184
B.2 使用MAKE产生的出口码 184
B.3 使用DOS批处理文件产生的出口码 184
B.4 FORTRAN编译系统中各个程序的出口码 185
B.4.1 FL的出口码 185
B.4.2 LINK的出口码 185
B.4.3 CodeViewTM的出口码 185
B.4.4 LIB的出口码 185
B.4.5 MAKE的出口码 185
B.4.6 EXEPACK的出口码 186
B.4.7 EXEMOD的出口码 186
B.4.8 SETENV的出口码 186
B.4.9 ERROUT的出口码 186
B.5 FORTRAN程序返送的出口码 186
附录C Microsoft FORTRAN的记录和文件格式 187
C.1 引言 187
C.2 记录结构 187
C.2.1 格式化的顺序文件 187
C.2.2 格式化的直接文件 188
C.2.3 无格式的顺序文件 188
C.2.4 无格式的直接文件 190
C.2.5 二进制顺序文件 191
C.2.6 二进制直接文件 192
C.3 指定二进制文件格式 193
附录D 8087/80287浮点例外的处理 194
D.1 引言 194
D.2 处理环境的控制 194
D.2.1 状态字 195
D.2.2 控制字 195
D.3 状态和控制值的读和设置 197
D.3.1 贮存状态字的过程(SSW RQQ) 197
D.3.2 贮存控制字的过程(SCW RQQ) 198
D.3.3 装入控制字的过程(LCW RQQ) 198
附录E 错误信息及其对编译程序和连接程序的一些限制 199
E.1 引言 199
E.2 命令行错误信息 199
E.3 编译程序错误信息 202
E.3.1 编译程序致命性错误信息 203
E.3.2 编译错误信息 206
E.3.3 可恢复性错误信息 231
E.3.4 警告性错误信息 231
E.4 运行错误信息 236
E.4.1 运行库错误信息 236
E.4.2 其它运行错误信息 243
E.5 连接程序错误信息 247
E.6 LIB错误信息 254
E.7 MAKE错误信息 257
E.8 EXEPACK错误信息 259
E.9 EXEMOD错误信息 260
E.10 SETENV错误信息 261
E.11 ERROUT错误信息 262
E.12 编译程序和连接程序的一些限制 262
E.12.1 对编译程序的限制 263
E.12.2 对连接程序的限制 264
表 10
表2.1 5 1/4英寸盘的组成 10
表2.2 3 1/2英寸盘中文件的组织 12
表3.1 FL选择项和缺省库 30
表3.2 缺省文件名和扩展名 35
表3.3 列表选择项的变元 35
表8.1 浮点选择项一栏表 105
表9.1 大内存模式中的数据分配 118
表9.2 NEAR属性的作用 122
表9.3 FAR和HUGE属性的作用 123
表11.1 标准内存模式的段、组和类 141
表11.2 使用FORTRRAN调用规则时第一个变元在栈中的地址 144
表11.3 FORTAN的返送值规则 144
表11.4 指定调用规则 147
表11.5 取消缺省的变元传送规则 148
表11.6 带符号的1字节整数 155
表11.7 不带符号的1字节整数 155
表11.8 带符号的2字节整 155
表11.9 不带符号的2字节整数 155
表11.10 带符号的4字节整数 156
表11.11 布尔类型 156
表11.12 字符类型 156
表11.13 单精度实数 157
表11.14 双精度实数 157
表11.15 字串和数组类型 158
表11.16 近程指针 159
表11.17 远程指针 159
表11.18 过程指针 159
表11.19 数组 161
表11.20 单精度复数 161
表11.21 双精度复数 162
表11.22 1字节逻辑值 162
表11.23 2字节逻辑值 162
表11.24 4字节逻辑值 163
表A.1 负整数或负实数的实数幂 171
表A.2 零的负次幂 172
表A.3 复数零的复数幂 172
表A.4 零的零次幂 172
表D.1 浮点例外 194
表D.2 运算例外的屏蔽设置 197
表E.1 Microsoft FORTRAN编译程序限制 263
表E.2 Microsoft覆盖连接程序限制 265