英语法语西班牙语

Ad


OnWorks 网站图标

ftnchek - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 ftnchek

这是 ftnchek 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


ftnchek - Fortran 77 程序检查器

概要


法特切克 [ -参数[=名单] ] [ -大批[=名单]]
[ -[没有]简要 [ -调用树[=名单] ] [ -[没有] ]
[ -列[=NUM] ] [ -共同[=名单]]
[ -[没有]交叉引用[=名单] ] [ -[没有]宣布 ]
[ -[没有] [ -错误[=NUM] ] [ -[没有]外部 ]
[ -[没有]f77[=名单] ] [ -[没有]f90[=名单]]
[ -[没有]f95[=名单] ] [ -[没有]帮助 ]
[ -[没有]标识符字符[=名单] ] [ -包括=STR ]
[ -固有的[=名单] ] [ -[没有]图书馆 [ -[没有]名单 ]
[ -makedcls[=名单] ] [ -mkhtml[=名单]]
[ -[没有]初学者 [ -输出=STR ]
[ -指针大小[=NUM] ] [ -[没有]可移植性[=名单]]
[ -[没有]漂亮[=名单] ] [ -项目[=名单]]
[ -[没有] [ -[没有]安静 [ -[没有]参考 ]
[ -[没有]资源 [ -[没有]六字符 [ -[没有]分类 ]
[ -资源[=名单] ] [ 风格[=名单] ] [ -[没有]符号表 ]
[ -[没有]截断[=名单] ] [ -用法[=名单]]
[ -[没有]VCG [ -[没有]版本 [ -[没有]挥发物 ]
[ -字大小[=NUM] ] [ -裹[=NUM] ] [ ... ]

商品描述


法特切克 (Fortran checker 的缩写)旨在检测 Fortran 中的某些错误
编译器通常不会编写的程序。 法特切克 主要不是为了检测
语法错误。 其目的是帮助用户查找语义错误。 语义
Fortran 语言中的错误是合法的,但会造成浪费或可能导致错误
手术。 例如,从未使用过的变量可能表示在
程序; 未初始化的变量包含垃圾,可能会导致不正确的结果
计算; 和未声明的变量可能没有预期的类型。 法特切克
旨在帮助用户调试他们的 Fortran 程序。 它不是有意的
捕获所有语法错误。 这是编译器的功能。 使用前
法特切克,用户应验证程序是否正确编译。

本文档首先总结了如何调用 法特切克. 该部分应先阅读
开始使用 法特切克. 后面的部分描述 法特切克的选项更详细,给出
其使用示例,并解释如何解释输出。 最后的部分
提及限制和已知错误 法特切克.

调用 富通证券


法特切克 通过以下形式的命令调用:

$ ftnchek [-option -option ...] 文件名 [文件名 ...]

括号表示可选的内容。 括号本身不是
实际打字。 这里的选项是命令行开关或设置,它们控制着
程序的操作和将打印出的信息量。 如果不
选项被指定,默认操作是打印错误消息、警告和
信息性消息,但不是程序列表或符号表。

每个选项都以“-”字符开头。 (在 VAX/VMS 或 MS-DOS 系统上,您可以使用
'/' 或 '-'。) 为了符合越来越普遍的约定,
选项也可以以“--”开头。 这些选项将在下一篇中详细描述
部分。

法特切克 选项分为两类:开关,为真或假,以及
设置,具有数字或字符串值。 开关的名称以“no”为前缀
或“否-”将其关闭:例如 -不纯 将关闭有关不纯函数的警告。
'no' 前缀也可以与数字设置一起使用,具有关闭的效果
相应的警告。 控制警告列表的设置具有特殊的语法
下面讨论。 仅选项名称的前 3 个字符(不包括“-”)
需要提供。 可以使用冒号代替数字或字符串的等号
设置任务; 但是,我们在下面仅显示等号形式。

开关和设置 法特切克 目前认可如下。 对于每个
选项,默认为未明确指定选项时使用的值,而
turn-on 是在没有给它赋值的情况下给出选项时使用的值。

-参数=名单
关于子程序类型和参数不匹配的控制警告。 默认 = 打开
= 所有。

-数组=名单
在检查子程序的数组参数时控制警告。 默认 = 打开 =
所有。

-简短的 对某些错误消息使用较短的格式。 默认值 = 否。

-调用树=名单
以 3 种格式之一生成子程序调用层次结构:文本调用树、谁调用-
谁和VCG。 默认值 = 无,开启 = 树、修剪、排序。

如果 -mkhtml 选项被调用 tree 是应用的 calltree 选项,一个文件
名为 CallTree.html,将生成以 HTML 格式描绘树。

-检查 进行检查。 默认值 = 是。

-列=NUM
将最大行长度设置为 NUM 列。 (除此之外被忽略。)开启 = 最大值 =
132. 默认值 = 72。

-共同=名单
设置检查 COMMON 块的严格程度。 默认 = 打开 = 全部。

-交叉引用=名单
打印子程序调用、标签使用和/或 COMMON 块的交叉引用列表
利用。 默认值 = 无。

-宣布
打印其数据类型未明确声明的所有标识符的列表。 默认
= 没有。

-分配
在进行除法的任何地方发出警告(除以常数除外)。 默认值 = 否。

-错误=NUM
设置每个级联的最大错误消息数。 默认 = 开启 = 3。

-外部
如果从未定义调用的外部子程序,则发出警告。 默认值 = 是。

-f77=名单
控制有关 Fortran 77 标准支持的扩展的特定警告。
默认 = 无,开启 = 全部。

-f90=名单
控制有关 Fortran 77 标准支持扩展的特定警告
没有被采纳为 Fortran 90 标准的一部分。 默认 = 无,开启
= 所有。

-f95=名单
控制有关已删除的标准 Fortran 77 功能的特定警告
Fortran 95 标准。 默认 = 无,开启 = 全部。

-救命 打印命令摘要。 默认值 = 否。

-标识符-字符=名单
定义可用于标识符的非字母数字字符。 默认 =
打开 = 美元符号和下划线。

-包括=
在系统范围内搜索之前定义一个目录来搜索 INCLUDE 文件
目录。 累积。 默认 = 开启 = 无。

-内在=名单
非标准内在函数的控制处理。 默认 = 除 虚拟机
Unix 版本,除了 UNIX 对于 VMS 版本,除 UNIX虚拟机 为其他
版本。 打开 = 全部。

-图书馆
开始库模式:不警告文件中已定义但已定义的子程序
没用过。 默认值 = 否。

-list 打印程序的源列表。 默认值 = 否。

-makedcls=名单
准备一份声明文件。 这 名单 指定此格式的选项
文件。 默认 = 无,开启 = 声明。

-mkhtml=名单
根据 ftnchek 分析和代码注释创建单独的 HTML 文档文件。
通常您还需要指定 -呼叫=树 创建根 HTML 文件
CallTree.html。 默认 = 无,开启 = 文档。

-新手
给出适合新手用户的输出。 默认值 = 是。

-输出=文件名
将输出发送到给定文件。 默认和开启将输出发送到屏幕。
(默认文件扩展名是 .lis).

-指针大小=NUM
将“Cray 指针”变量的大小设置为 NUM 字节。 最小值 = 1,最大值 = 16。
默认 = 开启 = 4

-便携性=名单
警告非便携式用途。 默认 = 无,开启 = 全部。

-漂亮=名单
对可能具有误导性的源代码外观发出警告。 默认 = 转-
在 = 全部。

-项目=名单
创建项目文件(见下面的解释)。 默认值 = 否。

-纯 假设函数是纯函数,即没有副作用。 默认值 = 是。

-安静的 产生较少冗长的输出。 默认值 = 否。

-参考
打印每个子程序引用的子程序表。 默认值 = 否。

-资源
打印用于分析程序的资源量。 默认值 = 否。

-六字符
列出任何在 6 个字符长度上发生冲突的变量名称。 默认值 = 否。

-种类 打印按先决条件排序的子程序列表。 默认值 = 否。

-源=名单
选择源格式选项:固定格式或自由格式、DEC Fortran 制表符格式
行、VMS 风格的 INCLUDE 语句、UNIX 风格的反斜杠转义序列,以及
参数的隐式类型。 默认 = 无,开启 = 全部。

-风格=名单
对过时的或过时的编程产生特别挑剔的警告
建筑。 默认 = 无,开启 = 全部。

-符号表
为每个子程序打印符号表和标签表。 默认值 = 否。

-截断=名单
通过截断检查可能的准确性损失。 默认 = 打开 = 全部。

-用法=名单
控制有关未使用或未初始化的变量、公共块等的警告。
默认 = 打开 = 全部。

-VCG 生成调用图的 VCG 格式。

-版
打印版本号。 默认值 = 否。

-易挥发的
假设 COMMON 块在激活之间丢失定义。 默认值 = 否。 (过时的。
使用 -common=易失性 代替。)

-字大小=NUM
将数字量的默认字长设置为 NUM 字节。 默认 = 打开 =
4个字节。

-包裹=NUM
设置将长错误消息和警告包装到下一个的输出列
线。 如果设置为 0,则关闭环绕。 默认 = 开启 = 79。

当使用多个选项时,它们应该用空格隔开,除了
诸如 VMS 之类的系统,其中选项以斜杠 ( / ) 开头。 不能放置空格
在设置中的等号 ( = ) 周围。 ”? 将产生一个命令摘要
列出所有选项和设置。

对于采用关键字列表的设置,即 -参数, -大批, -调用树, -共同,
-交叉引用, -f77, -f90, -f95, -固有的, -makedcls, -mkhtml, -可移植性, -漂亮,
-项目, -资源, 风格, -截断-用法, 列表由关键字组成
用逗号或冒号分隔。 如果省略关键字列表,效果是设置
其开启值的选项(在大多数情况下与“all”相同)。 另外,如果列表是
省略,设置名称可以加前缀 没有 or NO- 关闭所有选项吧
控件。 例如, -f77 打开所有关于非标准结构的警告,而
-nof77 将它们全部关闭。 三个特殊关键字是:

帮助 打印出设置控制的所有选项关键字,并附上简短说明
解释它们的含义。 此关键字不能与其他关键字一起出现在列表中


所有 设置所有选项。 这将打开由设置控制的所有选项。

没有 清除所有选项。 这将关闭由设置控制的所有选项。

这三个特殊关键字必须完整给出。 对于所有其他关键字,只有一样多
需要给出明确标识所必需的关键字的字母,或者
可以使用通配符模式。 在列表中包含一个关键字会变成相应的
选项。 例如, -f77=内在 将只打开有关使用的警告
非标准的内在函数。 为关键字添加前缀 NO- 关闭它的选项。 为了
例, -漂亮=没有长线 关闭有关超过 72 列的行的警告
长度,同时保留所有其他关于误导性外观的警告。 如果一个
设置有默认值 没有, 您可以使用以下命令打开除一两个之外的所有选项 所有
第一的。 例如, -f77=全部,不包括 启用有关所有非标准扩展的警告
除了 INCLUDE 语句。 如果设置具有默认值 所有,您可以关闭所有警告
除了一两个使用 没有 第一的。 例如, -截断=无,降级 会转
关闭所有与精度相关的警告,但有关降级的警告除外。 通配符模式包含一个
星号代表任何字符串。 如果使用通配符模式,则所有
与它匹配的警告会受到影响。 如果 NO- 以模式为前缀,所有匹配的
警告被关闭,否则它们都被打开。 最小无歧义长度
规则不适用于通配符匹配。 例如,使用 -用法=无-*var* 把关掉
所有与变量使用相关的警告(本地和通用)。 (Unix 用户可能需要
引用任何包含通配符的选项,以防止 shell 尝试
展开它们。)通配符仅在警告关键字列表中被识别,而不是在顶部 -
级别选项本身。

什么时候 法特切克 启动时,它会查找环境变量和首选项
文件。 环境或首选项文件中定义的任何选项都用作
默认值代替内置默认值。 它们被任何命令行覆盖
选项。 有关环境的详细信息,请参阅有关更改默认值的部分
选项和首选项文件。

当给出输入文件的名称时,扩展名是可选的。 如果没有延期,
法特切克 将首先查找带有扩展名的项目文件 .prj,如果它会使用它
存在。 如果没有,那么 法特切克 将寻找带有扩展名的 Fortran 源文件 。对于
对于 VMS 系统, .f 对于 UNIX 系统。 可以给多个文件名 法特切克,
它将处理所有文件中的模块,就好像它们在单个文件中一样。

VMS 命令行上的文件名规范中允许使用通配符
和 MS-DOS 版本,当然在 UNIX 和任何其他执行
命令处理器中的通配符扩展。

如果没有给出文件名, 法特切克 将从标准输入读取输入。

配置


本节提供了更详细的讨论 法特切克 命令行选项。 选项
和文件名可以散布在命令行上。 大多数选项都是定位的:每个
选项从遇到它的那一刻起一直有效,直到它被一个
后来改变。 因此,例如,对于某些文件而不是对于某些文件,列表可能会被隐藏
其他。 例外情况是: -固有的, -指针大小-字大小 设置,其中
一旦开始处理输入文件就不能更改; 这 -参数, -大批,
-调用树, -共同, -交叉引用, -外部, -参考, -资源, -种类, -VCG-易挥发的
选项,其中动作仅取决于处理后的选项的值
输入文件完成; 和 -包括 设置,这是累积的。

以下列表中的选项名称按字母顺序排列。

-参数=名单
控制有关实际和虚拟子程序参数之间不匹配的警告,
以及预期和实际子程序类型之间的不匹配。 (一个实际
参数是调用者传递给子程序的参数; 一个虚拟的论点是
子程序接收到的参数。)默认情况下,所有警告都处于打开状态。

名单 由逗号或冒号分隔的关键字组成。 由于所有这些
警告在默认情况下是打开的,包括一个以前缀为前缀的关键字 NO- 关闭一个
特别警告。 共有三个特殊关键字: 所有 打开所有
关于参数的警告, 没有 将它们全部关闭,然后 帮助 打印列表
所有关键字,每个关键字都有简要说明。 如果 名单 省略, -参数
相当于 -参数=全部-无参数 相当于 -参数=无.
警告关键字及其含义如下:

排列性:
警告数组参数的不一致使用。 这些警告可以
进一步受到监管 -大批 选项。

类型:
警告与实际参数不同数据类型的虚拟参数。

功能类型:
如果调用假定函数的返回值是不同的类型,则发出警告
比实际情况。 如果函数作为子程序被调用,也会发出警告,或者
反之亦然。

:
警告调用具有不同数量参数的子程序
子程序期望。

为了与以前版本的兼容 法特切克, 这个的数字形式
设置也被接受: 名单 由 0 到 3 之间的数字代替。
0 关闭所有警告,1 只打开 , 2 打开所有除了 ,
和 3 打开所有警告。

此设置不适用于检查内部函数的调用或
语句函数,只能由 -没有检查 选项。

另见: -大批, -图书馆, -用法.

-数组=名单
控制检查实际和虚拟之间的一致性的严格程度
作为数组的子程序参数。 此设置控制的警告是
对于知识渊博的程序员可能合法使用的结构,
但这通常表示编程错误。 默认关闭所有警告
上。

名单 由逗号或冒号分隔的关键字组成。 由于所有这些
警告在默认情况下是打开的,包括一个以前缀为前缀的关键字 NO- 关闭一个
特别警告。 共有三个特殊关键字: 所有 打开所有
关于数组参数的警告, 没有 将它们全部关闭,然后 帮助 打印
列出所有关键字,并对每个关键字进行简要说明。 如果 名单 省略,
-大批 相当于 -数组=全部-无阵列 相当于 -数组=无。 该
警告关键字及其含义如下:

尺寸:
如果参数的维数不同,或者实际的
参数是一个数组元素,而虚拟参数是一个完整的数组。

尺寸:
如果两个参数都是数组,但它们的元素数量不同,则发出警告。

为了与以前版本的兼容 法特切克, 这个的数字形式
设置也被接受: 名单 由 0 到 3 之间的数字代替。
0 关闭所有警告,1 只打开 尺寸, 2 只打开 尺寸
3 打开所有警告。

注意:无论此设置如何,如果实际参数
是一个数组,而虚拟参数是一个标量变量,或者如果实际
参数是标量变量或表达式,而虚拟参数是数组。
这些情况很少是故意的。 (要关闭这些警告,请使用
-arguments=无数组.) 如果实际参数是一个
数组元素,而虚拟参数是标量变量。 变维
数组和以 1 或星号标注的数组匹配任意数量的数组
元素。 没有检查多维数组的大小是否一致
每个维度分别。

另见: -参数, -图书馆, -用法.

-简短的
为某些警告消息选择较短的格式。 目前,唯一的警告
由这个标志控制的是那些在处理结束时打印的
子程序。 这些包括关于已设置但未使用的变量的警告或
在set之前使用,不符合Fortran 77标准的变量名,
等(这些警告可能会被完全抑制,具体取决于其他标志,例如
-用法 or -f77 标志。)在默认格式中,每个变量都列在
单独的行,以及声明、设置或设置变量的行号
根据警告的性质使用。 更简洁的格式只是列出所有
警告适用的变量,每行最多 4 个变量。

另见: -安静的.

-调用树=名单
原因 法特切克 打印出完整程序的调用结构。

名单 由逗号或冒号分隔的关键字组成。 有两个特殊
关键字: 没有 关闭所有选项,以及 帮助 打印所有的列表
关键字以及每个关键字的简要说明。 (关键字 所有 打开所有
选项,但通常不应使用,因为只应使用一种格式
指定。)如果 名单 省略, -调用树 相当于 -calltree=树
-nocalltree 相当于 -calltree=无. 默认情况下不打印调用图。

如果调用了 -mkhtml 选项 tree 是应用的 calltree 选项,一个文件
命名为 CallTree.html,也将生成以 HTML 格式描绘树。 这
文件可用作浏览描述每个文件的 HTML 文件的起点
程序的组成部分。

控制使用哪种格式的关键字如下:

:
以树格式生成调用图。

参考:
以 who-calls-who 格式生成调用图(与 -参考 转变)。

VCG:
以 VCG 格式生成调用图(与 -VCG 转变)。

只有一种格式 , 参考VCG 可以指定。

以下关键字控制影响输出的选项:

修剪:
修剪重复的子树(仅适用于 )。 这是默认设置。

分类:
按字母顺序对每个例程的子项进行排序。 这是默认设置。

见讨论 -参考-VCG 有关这些的详细信息的标志
格式。

针对 格式,调用图从主程序开始打印出来,
它列在左边距的第一行。 然后在以下几行,
列出了主程序调用的每个例程,缩进了几个空格,然后是
通过从该例程开始的子树。

在默认模式下,如果一个例程被多个其他例程调用,它的
调用子树仅在第一次遇到时打印 后来调用仅给出
例程名称和通知“(见上文)”。 打印子树
每次出现例程,使用选项 不修剪.

请注意,如果任何输入文件是项目,调用树将不完整
包含多个模块的文件 -图书馆 模式。 见
下面讨论项目文件。

技术要点:给定例程调用的每个例程列表都打印在
按字母顺序排列,除非 无排序 给出了选项。 如果多个主程序
找到后,分别打印每个的调用树。 如果没有主程序
找到后,打印出该效果的报告,以及任何顶级的调用树
打印非库例程。 此标志仅控制呼叫的打印
树: 法特切克 在任何情况下都构造调用树,因为它用于确定
哪些库模块将被交叉检查。 见讨论 -图书馆
旗。

为了与以前版本的兼容 法特切克, 这个的数字形式
设置也被接受: 名单 由 0 到 15 之间的数字代替。这
数字由 1 构成 格式,2 为 参考 格式,或 3 VCG
格式,加上 4 不修剪和8 for 无排序.

另见: -交叉引用, -图书馆, -参考, -种类, -符号表, -VCG.

-检查
提供此开关是为了在以下情况下可以关闭错误和警告消息
法特切克 用于查找错误以外的目的,例如进行声明
或打印调用树。 它是位置性的,所以在关闭所有检查后,
可以重新打开选定的检查。 的效果 -没有检查 是把所有
开关、数字设置和设置控制警告列表
关闭值,就好像它们都用 -no 前缀指定了一样。 开关
以及指定选项和操作模式的设置,而不是控制
警告,不受影响。 这些是 -列, -交叉引用, -包括, -固有的,
-图书馆, -list, -makedcls, -新手, -输出, -指针大小, -项目, -安静的,
-参考, -资源, -种类, -资源, -符号表, -VCG, -版, -字大小
-裹. 默认值 = 是。

解析错误(由于无法识别或格式错误的语句导致的语法错误)不是
被这个开关抑制,因为结果可能不正确,如果 法特切克 没有
正确解析程序。

有一些杂项错误和警告消息不受控制
任何其他开关,因此只能通过此开关关闭。 请注意,使用
-检查 以下 -没有检查 只具有转这些特殊警告的效果
重新打开,并且不会恢复它关闭的所有检查。 这些警告是:

o 模块不包含可执行语句。

o 在自由源形式中,需要空间的地方缺少空间(例如
关键字和标识符)或存在不允许的空间(例如在
标识符)。

o 表单的数据类型声明中的零或负长度规范
类型*len。

o 表达式中的无效操作数。

o 分配给标量的数组。

o DO 索引和边界之间的类型不匹配。

o 在 SAVE 语句中声明的未定义公共块。

o 使用不兼容类型显式声明的内部函数。

o 在 INTRINSIC 语句中显式声明的未知内在函数。

o 作为子程序参数传递的内在函数未在
内部声明。

o 内部函数或语句函数调用不正确。

o 函数未在 RETURN 语句之前设置返回值。

o 未评估参数常量值(这是 法特切克的错,这只是
通知你事实)。

o 子程序的入口点稍后用作不同子程序的名称。

o I/O 语句中使用的未知关键字。

o 非法标签引用(例如 GOTO 引用不可执行的语句;I/O
语句是指非格式语句)。

另见: -错误.

-列=NUM
将最大语句长度设置为 NUM 列。 (除此之外被忽略。)这个
提供设置以允许检查可能违反 Fortran 的程序
语句长度的标准限制为 72 列。 根据
标准,第 72 列之后的所有字符都将被忽略。 如果在以下情况下使用此设置
-f77=长线 选项有效时,将对中的任何行发出警告
处理第 72 列之后的哪些字符。 开启 = 最大值 = 132。默认值 = 72。

此设置不会抑制有关存在超出的字符的警告
第 72 列。要处理具有第 72 列之外有意义的程序文本的代码,请使用此
设置并确保 -f77 长线 选项关闭。 处理代码
列 73 到 80 中的序列号,保留列设置为默认值
值和使用 -漂亮=没有长线 旗。

另见: -f77, -漂亮.

-共同=名单
此设置控制检查 COMMON 块的严格程度。 默认情况下,所有
警告除外 挥发物 打开了。

名单 由逗号或冒号分隔的关键字组成。 由于其中大部分
警告在默认情况下是打开的,包括一个以前缀为前缀的关键字 NO- 关闭一个
特别警告。 共有三个特殊关键字: 所有 打开所有
警告, 没有 将它们全部关闭,然后 帮助 打印所有关键字的列表
每一个都有一个简短的解释。 如果 名单 省略, -共同 相当于
-common=尺寸,精确,长度,类型-不常见 相当于 -常见=无.
警告关键字及其含义如下:

尺寸:
块的每个声明中的相应数组必须在大小和
维数。 此选项仅在与
确切.

确切:
两个块的比较是逐个变量进行的,而不是简单的
需要在相应的存储位置之间达成一致。 如果全部使用这个
给定的 COMMON 块的声明应该是相同的,这是一个
良好的编程习惯。

长度:
如果同一块的不同声明的总长度不相等,则发出警告。
Fortran 77 标准要求每个命名的公共块,但不要求空白公共块,
在程序的所有模块中长度相同。

类型:
在给定 COMMON 块的每个声明中,对应的内存位置
(字或字节)必须在数据类型上一致。 如果与 确切, 这个
将要求相应的变量在数据类型上一致。

挥发物:
假设 COMMON 块是易变的。

许多 Fortran 程序员假设变量,无论是本地变量还是 COMMON 变量,都是
静态的,即一旦分配了一个值,它们就会永久保留该值,直到
由程序分配不同的值。 然而,实际上 Fortran 77
标准不要求这种情况。 局部变量可能变成
在声明它们的模块的激活之间未定义。 相似地,
如果没有在其中声明它们的模块,则 COMMON 块可能会变为未定义
积极的。 (具有这种行为的实体的技术术语是“自动”,但是
法特切克 使用“易失性”这个词,因为它对非专业人士来说更清楚。)仅
在 SAVE 语句中声明的 COMMON 块,或在主程序中或在
只要程序在运行,块数据子程序就保持定义。 变量
在某些时候可能变得未定义的 COMMON 块称为 volatile。

如果 -common=易失性 标志被打开, 法特切克 如果它找到一个会警告你
易失性 COMMON 块。 如果同时, -usage=com-block-易失性 选项
已打开(这是默认设置), 法特切克 将尝试检查是否有这样的块
在激活它所在的模块之间可能会失去其定义的状态
声明。 法特切克 在这方面做得不是很好:使用的规则是查看
块是否在调用树的两个分离的子树中声明。 为了
例如,如果两个模块都从主程序调用,就会出现这种情况,
共享一个易失的 COMMON 块。 块也可以在两个之间变为未定义
连续调用同一个子程序,但 法特切克 不够聪明,不能说
是否可以多次调用子程序,因此不检查这种情况。

-common=易失性 flag 不影响方式 法特切克 检查本地的使用情况
变量。

为了与以前版本的兼容 法特切克, 这个的数字形式
设置也被接受: 名单 由 0 到 3 之间的数字代替。
0 关闭所有警告,1 或更多打开 类型, 2 次或更多次开启
长度, 3 次打开 尺寸确切 还。 数字表格无法开启
挥发物 选项。

另见: -图书馆, -用法.

-交叉引用=名单
打印交叉引用表。 默认值 = 无。

名单 由逗号或冒号分隔的关键字组成。 关键字与
它们的含义如下:

电话:
table 列出每个子程序,然后是调用它的例程列表。
此列表省略了不在主调用树中的库模块
程序。 该列表按字母顺序排列。

常见:
表列出了每个 COMMON 块,后跟访问的例程列表
它。 这些列出的例程是那些 COMMON 中的一些变量
块被访问,而不仅仅是那些声明块的例程。 (到
找出哪些例程声明了 COMMON 块但不使用它,请参阅
-用法 旗帜。)

标签:
表格列出了每个标签,然后是对它的所有引用的列表。 一个标签
引用由引用的行号和语句类型表示
陈述。 标签列表是按顺序排列的。 参考文献是
按照它们在程序中遇到的顺序列出。

另见: -调用树, -参考, -种类, -符号表, -VCG.

-宣布
如果设置了此标志,则每个模块中未声明数据类型的所有标识符
将被列出。 此标志有助于查找拼写错误的变量名称,
等。如果模块包含一个 IMPLICIT NONE,将给出相同的列表
陈述。 默认值 = 否。

另见: -六字符, -用法.

-分配
提供此开关是为了帮助用户发现潜在的除以零问题。 如果
选择此开关后,将标记除常量之外的每个除法。 (它
假设用户足够聪明,不会除以常数
等于零!)默认值 = no。

另见: -可移植性, -截断.

-错误=NUM
设置“级联”中错误消息的最大数量。 检查期间
子程序参数、公共块声明等的协议,
有时单个案例会产生一长串警告。 通常这只是
表示除了真正的逐项不匹配之外的其他原因,例如
例如,一个列表中缺少一个变量。 所以在这种情况下 法特切克 停止打印
达到级联限制后的警告,并且预告片“等...”是
打印以指示还有更多错误未打印。 如果你认为
这些警告可能是真实的,请使用此设置查看更多警告。
开启 = 默认值 = 3,最大值 = 999。值 0 表示没有限制。

此设置不会对打印的错误消息数量设置总体限制,
只有在任何一个级联中打印的数字。 大多数类型的警告和错误
消息不受级联效应的影响,因此不受此影响
环境。 要通常关闭警告,请使用单独的警告控件
选项或 -没有检查 选项。

另见: -检查.

-外部
原因 法特切克 报告程序调用的任何子程序是否从未被调用
定义。 通常,如果 法特切克 正在一个完整的程序上运行,每个
应在某处定义除内部函数以外的子程序。 转动
如果您只想检查构成文件一部分的文件子集,请关闭此开关
更大的完整程序。 仍将检查子程序参数
正确性。 默认值 = 是。

-外部 标志现在被取代 -usage=ext-未定义 选项。 为了
为方便起见, -外部 标志被保留,以便 -noextern 是等价的
-usage=无扩展未定义 选项。 该 -外部 交换机最终可能会退役。

另见: -图书馆.

-f77=名单
使用此设置来捕获违反 Fortran 77 的语言扩展
标准。 此类扩展可能会导致您的程序不可移植。 例子
包括在变量名称中使用下划线; 变量名超过六个
人物; 超过 72 个字符的语句行; 和非标准的陈述
例如 DO ... ENDDO 结构。 法特切克 不报告使用情况
小写字母。 默认情况下,所有警告都关闭。

此设置提供对有关受支持扩展的警告的详细控制
到 Fortran 77 标准。 (有关扩展本身的更多详细信息是
在下面的扩展部分中给出。) 名单 由分隔的关键字组成
用逗号或冒号。 共有三个特殊关键字: 所有 打开所有
关于非标准扩展的警告, 没有 将它们全部关闭,然后 帮助 打印
所有关键字的列表以及每个关键字的简要说明。 如果 名单 省略,
-f77 相当于 -f77=全部-nof77 相当于 -f77=无. 警告
关键字及其含义如下:

接受类型:
ACCEPT 和 TYPE I/O 语句。

数组边界:
定义包含数组元素或函数的数组边界的表达式
引用。

赋值语句:
涉及数组的赋值语句。 在 Fortran 90 中,数组可以是
分配给另一个兼容形状的数组,或者可以将标量分配给
数组。 Fortran 77 中不允许这些赋值。

将数组分配给标量时会出现相关警告。 从此
在 Fortran 90 中也是非法的,它总是被警告不管
-f77 设置(除非使用 -没有检查 旗)。

基于属性的声明:
新的 Fortran 90 基于属性的样式中的类型声明。 这种风格
声明的区别在于在声明之间使用双冒号 (::)
属性列表和声明的变量列表。 这个选项也
控制在类型中使用 Fortran 90 长度或种类说明符的警告
声明。 (虽然这些说明符可以用于非基于属性的
声明,它们受此选项控制以避免扩散
-f77 选项。)

自动阵列:
具有可变大小的本地(非虚拟)数组。 这些将对应于
必须在运行时动态分配其存储空间的数组。

反斜线:
字符串中的 Unix 反斜杠转义。 仅在以下情况下才会发出此警告
-source=unix-反斜杠 指定设置导致转义
反斜杠的解释..

字节: BYTE 数据类型声明。

案例结构:
SELECT CASE 结构。

字符:
Fortran 77 标准关于字符数据的扩展。 现在,
这仅控制有关用零或
负长度。 在 Fortran 77 中,所有字符变量必须是正数
长度。 在 Fortran 90 中,它们的长度可以为零,并且声明
允许指定负长度,对于声明的长度变为零
长度。 注意:因为负长度说明符可能表示编程
错误,即使关闭此选项,也会发出有关它们的警告,并且
仅被抑制 -没有检查 旗。

公共子程序名:
同名的公共程序段和子程序。

构造名称:
使用构造名称来标记控制语句。

延续:
超过 19 个连续的连续线。

CPP: 源代码中的 Unix C 预处理器指令。

指针:
``Cray 指针'' 语法。

循环退出:
CYCLE 和 EXIT 语句。

评论:
调试源代码中以 D 开头的注释。

dec标签:
DEC Fortran 样式选项卡格式的源代码。 此警告只会发出
如果 -source=dec-tab 指定设置以引起选项卡的解释
在这种风格。

做-结束:
DO 循环扩展:省略了终端语句标签、END DO 和 WHILE。

双复合体:
双精度复杂数据类型。

格式美元符号:
FORMAT 语句中的美元符号控制代码。

格式编辑描述:
FORMAT 语句中的非标准编辑描述符。

功能-noparen:
不带括号的函数定义。

隐式无:
隐式无语句。

包括:
INCLUDE 语句。

内嵌评论:
以感叹号开头的内联注释。

内部列表-io:
与内部文件之间的列表定向 I/O。

固有:
非标准的内在函数。

io关键字
I/O 语句中使用的非标准关键字。 这些分为三组。
第一组包括 Fortran 90 接受的关键字:

操作板读写
提前位置尺寸
德利姆读写
EOR
第二组包含以下 VMS Fortran 关键字:

BLOCKSIZE EXTENDSIZE 只读
缓冲区计数初始大小记录大小
CARRIAGECONTROL MAXREC 记录类型
默认文件名称(打开时)共享
显示 NOSPANBLOCK 类型
处置组织
(关键字 NAME 仅在 INQUIRE 语句中是标准的。)第三个
group 包含以下 IBM/MVS 关键字:


此标志还控制有关使用 ACCESS='APPEND' 的警告,即
被一些编译器接受。 'APPEND' 的值对任何 I/O 都无效
标准 Fortran 77 和 Fortran 90 中的说明符应使用“APPEND”
作为 POSITION 说明符的值,而不是 ACCESS。

长线:
具有超过 72 列的有意义代码的语句。 此警告仅适用于
如果 -列 设置已用于增加语句字段宽度。

长名:
长度超过 6 个字符的标识符。

混合公共:
COMMON 块中的混合字符和非字符数据。

混合表达式:
表达式中的非标准类型组合,例如 DOUBLE PRECISION
使用 COMPLEX,将 hollerith 分配给整数,对整数进行逻辑运算。

名称-美元符号:
美元符号用作标识符中的字符。

名称-下划线:
下划线用作标识符中的字符。

名单:
NAMELIST 语句。

参数隐式类型:
通过分配的值的数据类型隐式键入参数。 这
警告仅在隐式参数类型已由
-source=param-隐式类型 选项,或者如果 PARAMETER 语句是
不带括号的非标准形式。 如果打开此选项,则任何
将警告发生隐式参数键入的实例。 如果
您只想在隐式数据类型的情况下收到警告
与默认类型不同,使用 -portability=param-隐式类型 代替。
根据 Fortran 77 标准,给出了参数的数据类型
按照与变量相同的规则,如有必要,类型转换是
赋值时完成。

参数内在的:
用于定义一个值的实数的内函数或求幂
参数定义。

对乙酰氨基酚:
没有括号的 PARAMETER 语句。 用户应该知道,
这种形式的语句的语义不同于标准的语义
形式:在这种形式中,参数从值中获取其数据类型
分配的,而不是基于第一个字母的默认数据类型
参数名称。 (这种形式的 PARAMETER 语句被引入
在定义 Fortran 77 标准之前由 DEC 发布,应避免使用。)

指针:
Fortran 90 标准指针相关语法,包括 POINTER、TARGET 和
ALLOCATABLE 类型声明、ALLOCATE、DEALLOCATE 和 NULLIFY 语句,
和使用 => 的指针赋值。

四常数:
四精度实常数,例如 1.23Q4 形式。

引号:
由引号而不是撇号分隔的字符串。

重装:
由标点符号组成的关系(比较)运算符,即:< <= == /=
> >=。

分号:
分号用作语句分隔符。

语句顺序:
不符合标准规定的顺序的语句。 允许的
序列在解释输出部分的表 1 中说明。

无类型常量:
无类型常量,例如 Z'19AF'。

字号:
指定大小的类型声明,例如 REAL*8。

可变格式:
FORMAT 中的可变重复规范或字段大小。 这些是形式
< 表达式 >.

虚拟机IO:
过时的。 现在的含义与 io关键字 关键词。

另见: -f90, -f95, -可移植性, -漂亮, 风格, -字大小.

-f90=名单
此设置提供对有关受支持扩展的警告的详细控制
未作为 Fortran 77 的一部分采用的 Fortran 90 标准
标准。 注意 法特切克 不支持完整的 Fortran 90 语言。
但是,它确实支持一些流行的 Fortran 77 的常见扩展
在定义 Fortran 90 之前。 其中一些扩展成为 Fortran 的一部分
90 标准,但其他人没有。 这 -f90 设置只警告后者。
也就是说,这个标志涵盖了既不合法的 Fortran 77 也不合法的东西
Fortran 90。因此,这个标志控制的警告基本上是一个子集
由控制的警告 -f77. 有几种情况,如下所述,其中
两者发出警告的情况略有不同
标志。

名单 由逗号或冒号分隔的关键字组成。 有三种
特殊关键词: 所有 打开所有关于非标准扩展的警告,
没有 将它们全部关闭,然后 帮助 打印所有关键字的列表
每个的简要说明。 如果 名单 省略, -f90 相当于 -f90=全部
-nof90 相当于 -f90=无.

以下关键字具有相同的含义 -f90 至于 -f77. 读者是
参考下面的解释 -f77.

接受类型 双复合体 对乙酰氨基酚
反斜线 格式美元符号 指针
字节 格式编辑描述 四常数
CPP 功能-noparen 字号
评论 名称-美元符号 可变格式
dec标签 参数隐式类型 虚拟机IO

与相应的关键字有所不同 -f77 关键字是
如下。

延续:
固定源语句的连续行数限制
Fortran 19 和 Fortran 90 中的形式相同,即 77。对于免费源
形式的限制是 39 续行,并且一行包含一个续行
标记不能为空或仅包含注释。

固有:
这与对于 -f77 除了定义的内在函数
MIL-STD 1753,它们都包含在 Fortran 90 中,因此不会被警告
关于。 (看 -固有的 列表。)

io关键字:
这与对于 -f77 除了没有对 I/O 发出警告外
Fortran 90 中的标准关键字。

长线:
尽管 Fortran 90 标准允许行长度超过 72 个字符
自由源形式,此限制仍然适用于固定源形式。 在
免费源形式的行长度限制为 132 个字符,与固定的不同
形成, 法特切克 不允许增加此限制。

混合表达式:
这与对于 -f77 除了混合扩展精度的表达式
具有复杂数据类型的实数,这在 Fortran 90 中是允许的。

语句顺序:
这类似于相应的 -f77 警告,但适用于
对 Fortran 90 标准的语句顺序有更宽松的限制。 在
特别是,Fortran 90 允许 DATA 语句和语句函数
定义与规格说明混合在一起。

无类型常量:
在 Fortran 90 中,B'ddd' 形式的二进制、八进制和十六进制常量,
分别允许 O'ddd' 和 Z'ddd'。 这里'ddd'代表一个
一串数字。 法特切克 识别这些形式,以及
十六进制常量的形式 X'ddd',以及其他变体,其中
基本指示符 B、O、Z 或 X 跟在数字字符串之后。 这些变体是
Fortran 90 中未采用,因此只有当此标志出现时才会警告它们
打开。

另见: -f77, -f95, -可移植性, -漂亮, 风格, -字大小.

-f95=名单
此设置提供对有关标准 Fortran 77 的警告的详细控制
从 Fortran 95 标准中删除的功能。 不像 -f77-f90
设置,这些警告适用于 Fortran 77 合法的语法。但是,由于
这些功能已从标准中删除,程序可能
包含它们对于一些较新的编译器来说是不可接受的。

名单 由逗号或冒号分隔的关键字组成。 有三种
特殊关键词: 所有 打开所有关于非标准扩展的警告,
没有 将它们全部关闭,然后 帮助 打印所有关键字的列表
每个的简要说明。 如果 名单 省略, -f95 相当于 -f95=全部
-nof95 相当于 -f95=无. 警告关键字及其含义如下
如下。

实事求是:
任何实数类型的 DO 变量。

暂停:
暂停语句。

分配:
ASSIGN 语句、指定的 GOTO 或指定的格式。

编辑:
格式中的 H 编辑描述符。

Fortran 77 中删除了另一种 Fortran 95 语法功能,即
从 IF 块外部分支到 ENDIF。 然而, 法特切克 无法
分析程序流程,因此它不会为此提供警告。

另见: -f77, -f90, -可移植性, -漂亮, 风格, -字大小.

-救命
打印所有命令行选项的列表以及每个选项的简短描述
以及它的默认值。 此命令在功能上与 ``?''
论点,并为那些问题的系统提供便利
标记对命令解释器有特殊意义。 默认值 = 否。

帮助列表还打印了版本号和补丁级别 法特切克 的网络
版权声明。

注意:帮助列表中方括号中打印的“默认”值是,
严格来说,不是内置默认值,而是任何后的当前值
环境选项和前面的任何命令行选项 -救命 选项有
被处理。

另见: -新手, -版帮助 所有设置列表的选项


-标识符-字符=名单
定义可用于标识符的非字母数字字符。 默认情况下,
法特切克 只接受美元符号和下划线作为非字母数字字符
在标识符名称中。 中的人物 名单 替换任何接受的集合
非字母数字字符以前有效。 因此,如果美元符号或
下划线不包含在列表中,它们失去了可接受的状态
字符。

提供此选项是为了启用 法特切克 处理包含非
可能需要的标准标识符名称,例如,访问某些
操作系统服务。 请参阅限制和扩展部分
在隐式类型中处理包含这些字符的标识符。

运用 -noidentifer 字符 关闭接受非字母数字字符
完全。

另见: -资源.

-包括=
指定要搜索由 INCLUDE 语句指定的文件的目录。
与其他命令行选项不同,此设置是累积的; 也就是说,如果是
在命令行上多次给出,所有如此指定的目录都是
放在一个列表中,该列表将按照给定的顺序进行搜索。 这
顺序 法特切克 搜索要包含的文件是:当前
目录; 由环境变量 FTNCHEK_INCLUDE 指定的目录(如果有);
任何指定的目录 -包括 选项; 指定的目录
环境变量包括; 最后在一个标准的系统范围的目录中
(/ usr / include 对于 UNIX,SYS$LIBRARY 用于 VMS,\include 用于 MSDOS)。

另见: -f77, -资源.

-内在=名单
控制是否 法特切克 将某些非标准的内在函数识别为
固有的。 这 名单 由逗号或冒号分隔的关键字组成。 一些
关键字控制是否识别某些功能组,以及其他
关键字控制调用一些非标准内在函数的预期语法。
包括一个关键字以打开对相应的内在函数集的识别或
允许相应的语法。 包括一个关键字前缀 NO- 把关掉
那种认可。

共有三个特殊关键字: 所有 打开对所有非标准的识别
内在函数(如下所列)并接受具有变体的任何一种语法。
使用 没有 关闭对所有非标准内在函数的识别,除了注明的那些
以下。 利用 帮助 打印所有关键字的列表,并简要说明
每个。 如果 名单 省略, -固有的 相当于 -内在=全部
-非内在的 相当于 -内在=无.

支持非标准扩展所需的非标准内在函数
精度数据类型(双精度和四精度)总是被识别。
双复数数据类型的内在函数是:

CDABS CDSQRT DREAL ZLOG
CDCOS DCMPLX 图像 ZSIN
CDEXP DCONJG ZABS ZSQRT
CDLOG DIMAG ZEXP ZCOS
CDSIN
quad precision 和 quad complex 类型的内在函数是:

CQABS QARCOS QEXT QNINT
CQCOS QARSIN QEXTD QPROD
CQEXP 卡塔尔 QFLOAT QREAL
CQLOG QATAN2 QIMAG QSIGN
CQSIN QCMPLX QINT QSIN
CQSQRT QCONJG QLOG QSINH
DBLEQ QCOS QLOG10 QSQRT
IQINT QCOSH QMAX1 QTAN
IQNINT QDIM QMIN1 QTANH
QABS QEXP QMOD SNGLQ
控制其他非标准内在函数识别的关键字是
如下:

额外:
识别以下常用的非标准内在函数(除
EXIT 和 LOC 在 MIL-STD 1753 中定义):

最好的 IBCLR IEOR ISHFTC
退出 IBITS IOR LOC
IAND IBSET ISHFT 不

UNIX:识别这些常见的 Unix 特定的内在函数:

中止 GMTIME LTIME SRAND
和 IARGC 或系统
GETARG 伊朗兰德时间
GETENV 左移 右移 异或

虚拟机:识别这些常见的 VMS 特定的内在函数:

日期 IDATE 秒 时间

ERRSNS RAN 大小

iargc-无参数:
指定可以不带参数调用 IARGC。

iargc-一个参数:
指定可以使用一个参数调用 IARGC。

不争不抢:
指定可以不带参数调用 RAND 和 IRAND。

一个参数:
指定可以用一个参数调用 RAND 和 IRAND。

不争论一个参数 关键字的工作方式如下:打开选项
原因 法特切克 接受函数调用的相应语法,
不排除替代语法的可能性。 转动选项
off 导致不接受相应的语法。 如果两个选项都被打开
立即(默认),然后接受任何一种语法。 关闭这两个选项
一下子就没有意义了。 如果识别出这些选项,则这些选项无效
Unix 内在函数已关闭。

注意这个设置不控制是否发出非标准警告
关于这些功能。 它控制是否假设函数是
内在与否,这决定了如何检查它们的使用。 当函数在
包括这些集合中的任何一个,它们的调用将根据
内在函数的规则; 否则它们将被正常检查(用户-
写)外部函数。 非标准警告由
-f77=内在 选项。

此设置的默认值相当于 -内在=全部 其次是
-内在=无-vms 对于 Unix 版本, -内在=无-unix 对于 VMS 版本,以及
-intrinsic=无unix、无虚拟机 对于其他版本。

注意:在 法特切克 在 2.10 之前, -固有的 标志采用数字
参数而不是选项列表。 为了可能已经写过的用户
脚本调用 法特切克 这样,数字形式仍然被接受。 这
设置的数字形式由三位数字组成。 个位数字选择
要支持的一组内在函数。 数字 0 只选择 Fortran 77
标准内在函数加上支持非标准扩展精度所需的内在函数
数据类型。 数字 1 等价于 额外, 2 等价于 额外的,unix
3 相当于 额外的,虚拟机. 此设置的十位数字控制语法
RAND 内在函数,百位数控制语法
IARGC 功能。 对于这些数字,指定 0 以要求调用而没有
参数,1 要求一个参数,2 允许任一形式。

另见: -f77.

-图书馆
当文件中包含多个子程序时使用此开关,但不包含
所有这些都被应用程序使用。 一般, 法特切克 警告你,如果有的话
子程序已定义但从未使用。 此开关将抑制这些警告。
默认值 = 否。

此开关还控制哪些子程序调用和 COMMON 块声明是
检查。 如果使用以下命令读取文件 -图书馆 标志生效,子程序调用
和包含在该文件中的例程中的 COMMON 声明仅在
该例程位于主程序的调用树中。 另一方面,如果
-图书馆 开关关闭,然后 法特切克 通过检查每个例程的调用
每隔一个例程,不管这些例程是否真的可以
在运行时调用,同样所有 COMMON 块声明都比较
协议。

这个开关和 -usage=no-ext-未使用 选项
subprograms 是后者仅抑制有关例程的警告
声明但未使用。 这 -图书馆 switch 更进一步,排除未使用的
在所有参数的交叉检查生效时处理的例程和
COMMON 块声明也是如此。

(如果文件集中的任何地方都没有主程序 法特切克 已读,所以
没有调用树,那么 法特切克 将寻找任何非库例程
不被任何其他例程调用,并使用它们作为主程序的替代
程序构建调用树并决定检查什么。 如果没有这样的顶——
级别的非库例程被发现,然后所有的模块间调用和所有的 COMMON
声明将被检查。)

另见: -参数, -调用树, -共同, -外部, -用法.

-list
指定 Fortran 程序的列表将用 line 打印出来
数字。 如果 法特切克 检测到错误,错误信息跟随程序行
用插入符号 (^) 指定错误的位置。 如果没有源列表
要求, 法特切克 仍然会打印出任何包含错误的行,以帮助
用户确定错误发生的位置。 默认值 = 否。

另见: -输出, \fB-符号表, fB-安静.

-makedcls=名单
准备一个格式整齐的变量声明文件、公共块和
名单列表,用于可能合并到源代码中。 声明是
存储在与源代码同名的文件中,但扩展名为
变成 .dcl. 如果没有将声明写入文件,则将其删除为
减少空文件的混乱。

如果输入来自标准输入,而不是命名文件,则声明是
写入标准输出。

变量在每个声明类中按字母顺序声明,并且
类型,首先使用整数变量,因为它们以后可能在数组中使用
尺寸。

PARAMETER 语句是字母顺序规则的一个例外,因为
Fortran 77 标准要求定义参数值的表达式引用
仅适用于常量和已定义的参数名称。 这迫使原
此类语句的源文件顺序将保留在声明文件中。

明确声明 所有 变量被认为是很好的现代编程
实践。 通过使用编译器选项拒绝未声明的变量,拼写错误
可以在编译时捕获变量名称(或扩展到第 72 列之后的名称)。
显式声明还极大地方便了更改浮点精度
带有过滤器,例如 dtoq(1公升), 托斯(1公升), FD2S(1公升), FS2D(1公升), 总时间(1L),和
停止(1L)。 这些程序能够改变显式浮点数的类型
类型声明、内部函数和常量,但因为它们不
对 Fortran 源代码进行严格的词法和语法分析,
它们不能为未声明的变量提供修改后的类型声明。 默认
设置 = 0,开启 = 1。

声明文件形式的各种选项由 名单,
它由以逗号或冒号分隔的关键字组成。 有三个特殊
关键字: 所有 打开所有选项, 没有 将它们全部关闭,然后 帮助
打印所有关键字的列表,并对每个关键字进行简要说明。 如果 名单 is
省略, -makedcls 相当于 -makedcls=声明 (即产生
使用默认选项的声明文件),以及 -nomadecls 相当于
-makedcls=无.

为了与以前版本的兼容 法特切克, 此设置的数字形式
也被接受: 名单 由一个数字代替,该数字是数字的总和
在以下列表中关键字旁边的括号中。 警告关键词
它们的含义如下:

声明 (1):
写一个声明文件。 (任何其他选项都暗示了这一点,并且
如果给出任何其他选项,则可以省略。)

未申报的 (2):
默认情况下,所有变量都包含在声明文件中。 有了这个
选项,仅包括 未声明 变量。 此设置很有用,如果您
想要检查未声明的变量,因为 Fortran 源文件包含所有
正确声明的变量不会导致 .dcl 文件。 有了这个
选项,公共块和名单列表将不包括在
声明文件,因为就其性质而言,它们不能是未声明的。

紧凑 (4):
声明通常是漂亮的,整齐地排列在一起
列,如扩展 PFORT 验证器输出的声明文件,
努力(1L)。 此选项值选择紧凑的输出,没有列
对准。

使用延续线 (8):
导致在允许的情况下使用连续线。 默认为
在每一行开始一个新的声明。 这个选项适合使用
连同 紧凑.

关键字-小写 (16):
以小写形式输出 Fortran 关键字,而不是默认的大写形式。

vars-and-consts-小写 (32):
以小写形式输出变量和常量,而不是默认值
大写。 字符串常量不受此选项影响。

排除-sftran3 (64):
省略 SFTRAN3 生成的内部整数变量的声明
预处理器, xsf3(1L),作为结构化Fortran的一部分翻译
对普通 Fortran 的语句。 这些变量有六个字符的名称
表格 全国公共关系委员会, NXDDDD, N2ddddN3dddd,其中 d 是十进制数字。
因为它们在 SFTRAN3 源代码中是不可见的,如果
修改了 SFTRAN3 代码,不应显式声明此类变量。
相反,他们应该只假设基于默认 Fortran INTEGER 数据类型
在他们的第一封信中, N.

星号-评论 (128):
使用星号作为注释字符; 否则默认为“C”。

评论字符小写 (256):
使用 'c' 而不是 'C' 或 '*' 作为注释字符。

抑制数组维度 (512):
在生成的声明中抑制数组的维数。 这个选项
用于缺少类型声明的代码,以允许声明
要插入而不更改代码的文件。 由于代码将有
维度语句已经,在类型中标注数组变量
声明文件的语句是多余的。 应该使用这个选项
仅与选项 2 结合使用 = undeclared-only 因为否则任何
在类型语句中标注的数组将失去它们的
尺寸标注。

自由形式 (1024):
以免费的源代码形式生成声明。 如果出现以下情况,将自动使用此模式
输入源是自由格式。 使用此选项生成声明
即使输入是固定形式的,也可以自由形式。 自由形式的声明是
仅缩进 2 列而不是 6 列,使用感叹号作为注释
字符,并在结尾处用与号表示连续行
行待续。

声明文件包含标记开始和结束的独特注释
每个程序单元的声明,以方便使用文本编辑器宏
将声明合并回源代码。

法特切克 分发包括一个程序, dcl2公司, 处理声明
文件以生成包含所有 COMMON 块声明的文件,形式为
适合用作 INCLUDE 文件。 见 dcl2公司(1L) 手册页的详细信息
它的使用。

另见: -mkhtml.

-mkhtml=名单
从源代码生成 HTML 文档。 从 ftnchek 创建单独的 HTML 文件
分析和代码注释。 紧接其前后的所有评论
函数或子程序定义被捕获到 HTML 文件中。 没有重新格式化
除了去除 FORTRAN 注释字符之外,还执行源注释。
此外,HTML 文件列出了声明的局部变量,公共块
使用的变量、调用的函数和子程序、I/O 单元的使用以及其他
每个子程序的信息。 通常您还需要指定
-呼叫=树 创建根 HTML 文件 CallTree.html。 (也许这个文件应该
命名为 index.html。)

HTML 文件形式的各种选项由 名单,这
由逗号或冒号分隔的关键字组成。 有三个特殊
关键字: 所有 打开所有选项, 没有 将它们全部关闭,然后 帮助
打印所有关键字的列表,并对每个关键字进行简要说明。 如果 名单 is
省略, -mkhtml 相当于 -mkhtml=文档 (即生成 HTML 文档
文件使用默认选项),和 -nomkhtmls 相当于 -mkhtml=无.

为简单起见,选项 -mkhtml 是一样的
-makedcls 不适用的除外。 同样,数字形式的
可以使用此设置,形成为括号中数字的总和
列表如下。 警告关键字及其含义如下:

文件 (1):
创建 HTML 文档。 (任何其他选项都暗示了这一点,并且
如果给出任何其他选项,则可以省略。)

紧凑 (4):
声明通常是漂亮的,整齐地排列在一起
列。 此选项值选择紧凑的输出,没有列
对准。

使用延续线 (8):
导致使用连续行而不是开始新的声明
在每一行上。 此选项适合与 紧凑.

关键字-小写 (16):
以小写形式输出 Fortran 关键字,而不是默认的大写形式。

vars-and-consts-小写 (32):
以小写形式输出变量和常量,而不是默认值
大写。 字符串常量不受此选项影响。

排除-sftran3 (64):
省略 SFTRAN3 生成的内部整数变量的声明
预处理器, xsf3(1L)。 (看 -makedcls 进行讨论。)

抑制数组维度 (512):
在生成的声明中抑制数组的维数。 这是
通常不受欢迎,但如果出于某种原因您不想要
显示在 HTML 中的数组维度。

自由形式 (1024):
以免费源代码形式生成变量声明。 这种模式是
如果输入源是自由格式,则自动使用。 这主要影响
如果使用连续线的形式。

另见: -调用树, -makedcls.

-新手
此标志旨在为初学者提供更多有用的输出。 它有两个
效果:

(a) 提供了一个额外的信息,说明一个函数被使用但没有被使用
在任何地方定义的可能是用户忘记在一个数组中声明的数组
DIMENSION 语句(因为数组引用的语法与
的函数引用)。

(b) 修改错误信息和警告的形式。 如果旗帜被转动
被关闭 - 新手,这些消息的打印方式更类似于 UNIX
皮棉.

默认值 = 是。

-输出=文件名
提供此设置是为了方便在不允许简单
程序输出的重定向。 当给出这个设置时,输出
通常出现在屏幕上的将被发送到命名文件。 笔记,
然而,操作错误 法特切克 本身(例如空间不足或不能
打开文件)仍将发送到屏幕。 文件名的扩展名是
可选,如果没有给出扩展名,则扩展名 .lis 将被使用。

-指针大小=NUM
将“Cray 指针”变量的大小指定为 NUM 字节。 默认 = 转-
on = 4 个字节。

指针大小用于通知涉及指针的精度不匹配警告
变量,例如当一个指针从分配中分配一个值时
例程,或作为子程序参数传递。

另见: -f77, -可移植性, -截断, -字大小.

-便携性=名单
法特切克 将对各种非便携式用途发出警告。 例子包括
除了在注释或字符串内使用制表符,Hollerith 的使用
常量,以及不同数据类型变量的等效性。 这个选项
不会为 Fortran 77 标准的受支持扩展生成警告,
这也可能导致便携性问题。 要捕获这些,请使用 -f77 设置。
默认情况下,所有警告都关闭。

此设置提供对有关可能的可移植性警告的详细控制
问题。 这 名单 由逗号或冒号分隔的关键字组成。 有
三个特殊关键字: 所有 打开所有关于不可移植用法的警告,
没有 将它们全部关闭,然后 帮助 打印所有关键字的列表
每个的简要说明。 如果 名单 省略, -可移植性 相当于
-便携性=全部-不可移植性 相当于 -便携性=无。 该
警告关键字及其含义如下:

反斜线:
字符串中的反斜杠字符。 由于某些编译器将反斜杠视为
转义字符,即使使用它,它的存在也会导致问题
以符合标准的方式。

共同对齐:
COMMON 块变量不是按存储大小的降序排列的。 一些
由于存储对齐要求,编译器需要这种排序。

霍勒里斯:
Hollerith 常数(除了在 FORMAT 规范内)。 霍勒瑞思
数据类型是 Fortran IV 的一个特性,已在 Fortran 77 中删除
标准。 它被字符数据类型取代。 存储 Hollerith
数值或逻辑数据类型的变量中的数据是不可移植的,因为
不同的字长。

长串:
长度超过 255 个字符的字符串常量、变量或表达式。

混合等价:
不同数据类型的变量等效。

混合尺寸:
以默认精度声明的变量与显式给定的变量一起使用
精度、表达式、赋值或参数。 例如,如果一个
声明为 REAL*8 的变量被视为等效于 DOUBLE PRECISION。

实事求是:
非整数 DO 循环索引和边界。 这些可能会导致程序的结果
取决于所使用的特定计算机的硬件特性。

参数隐式类型:
通过分配的值的数据类型隐式键入参数,如果它
与默认类型不同。 只有在隐式的情况下才会出现此警告
参数输入已被打开 -source=param-隐式类型
选项,或者如果 PARAMETER 语句是不带
括弧。 如果打开此选项,则任何隐含的实例
出现参数类型并且隐式类型不同于
默认类型基于参数名的第一个字母,会被警告
关于。 隐式参数类型可以改变语句的语义
在哪里使用参数,导致可移植性问题。

标签:源代码中的标签。 不同的标签对标签有不同的解释
编译器。 该警告只会在文件末尾出现一次。

另见: -f77, -f90, -f95, -漂亮, 风格, -字大小.

-漂亮=名单
控制与源代码外观相关的某些消息。 这些警告
关于可能使程序可读性降低或对读者具有欺骗性的事情。
默认情况下,所有警告都处于打开状态。

此设置提供对有关外观的警告的详细控制。 这
名单 由逗号或冒号分隔的关键字组成。 由于所有警告都已开启
默认情况下,包含前缀为的关键字 NO- 关闭特定警告。
共有三个特殊关键字: 所有 打开所有关于误导的警告
出场, 没有 将它们全部关闭,然后 帮助 打印所有的列表
关键字以及每个关键字的简要说明。 如果 名单 省略, -漂亮 is
相当于 -漂亮=全部-不漂亮 相当于 -漂亮=无。 该
警告关键字及其含义如下:

交替返回:
RETURN 语句有一个常量指定一个备用返回点
不在 0 和作为标签的虚拟参数的数量之间。 这是
合法,与没有替代返回的 RETURN 具有相同的效果
表达式,但建议程序员打算使用替代
未提供的退货标签。

嵌入空间:
嵌入在变量名称或多字符运算符(如 **)中的空格。

延续:
注释行后的续行标记。

长线:
宽度超过 72 列的行(注释除外)(超过 72 列通常是
被编译器忽略)。

缺失空间:
变量和前面的关键字之间缺少空格。

多重公用:
在多个语句中声明的 COMMON 块。 如果出现以下情况,则不会发出警告
除注释行外,语句是连续的。

多名单:
NAMELIST 在多个语句中声明。 如果出现以下情况,则不会发出警告
除注释行外,语句是连续的。

括弧:
变量本身的括号。 作为子程序参数,这
使参数成为表达式,不能被子程序修改。

请注意,在免费源形式中,额外空间和缺失空间被
Fortran 90 标准,而不仅仅是风格违规。 在这种情况下,警告
被语法错误信息取代,并且只能通过使用关闭
-没有检查.

另见: -f77, -可移植性, 风格.

-项目=名单
法特切克 将从输入的每个源文件创建一个项目文件
选项已打开。 项目文件将被赋予与输入相同的名称
文件,但带有扩展名 .f or 。对于 取而代之 .prj. (如果输入来自
标准输入,项目文件名为 文件名.) 默认值 = 无。

名单 由逗号或冒号分隔的关键字组成。 有三种
特殊关键词: 所有 打开所有选项, 没有 将它们全部关闭,然后
帮助 打印所有关键字的列表以及每个关键字的简要说明。 如果
名单 省略, -项目 相当于 -项目=全部-无项目 is
相当于 -项目=无. 关键字及其含义如下:

创建信息图:
生成项目文件。 默认不生成项目文件。 如果
此选项未开启,其他选项无效。

修剪调用:
修剪项目文件中存储的有关子程序的信息量
声明和调用。 这是默认设置。 仅在以下情况下关闭此选项
罕见的情况。 (请参阅下面的讨论。)修剪量各不相同
取决于 -图书馆 旗帜。 如果该标志是
打开。

修剪普通:
修剪存储在项目文件中的公共块声明的数量。
这是默认设置。 仅在极少数情况下关闭此选项。 (看
下面讨论。)如果 -图书馆 旗子转了
off:不在库模式下时,不修剪公共块声明
无论此选项如何,都已完成。

项目文件包含来自源文件的信息摘要,用于
检查其他文件中 FUNCTION、SUBROUTINE 和 COMMON 用法之间的一致性。
它允许增量检查,从而在您拥有大量数据集时节省时间
包含共享子程序的文件,其中大部分很少更改。 你可以跑
法特切克 每个文件上一次 -项目 标志设置,创建项目文件。
通常你也会设置 -图书馆-noextern 此时的标志,以
抑制与其他文件的一致性相关的消息。 只有错误信息
此时将打印与每个文件本身有关的信息。 此后,运行
法特切克 在所有项目文件上没有这些标志,以检查一致性
在不同的文件之间。 单个文件内部的所有消息现在将
被省略。 只有当文件被更改时,才需要制作新的项目文件
为了它。

自然,当 -项目 选项已打开, 法特切克 不会读项目
文件作为输入。

通常,当您打算创建项目时,应保留修剪选项
将来输入的文件 法特切克. 由于默认情况下修剪是打开的,这意味着
那只是发出命令 -项目 推荐没有选项列表
模式。 提供修剪选项只是为了方便那些想要
将项目文件用于检查程序以外的目的
法特切克. 要将项目文件用于其预期目的,修剪选项应该
不会被关闭。

项目文件仅包含检查文件之间的一致性所需的信息。
这意味着如果完整程序的所有模块,一个项目文件是没有用的
包含在单个文件中。

有关使用项目文件的部分提供了更详细的讨论。

-纯
假设函数是“纯”的,即它们不会因为修改而产生副作用
它们在 COMMON 块中的参数或变量。 当这个标志生效时,
法特切克 将基于实际参数的设置和使用状态的确定
假设传递给函数的参数没有改变。 它会
如果发现函数修改其任何参数或任何
公共变量。 默认值 = 是。

当此标志关闭时,将处理传递给函数的实际参数
与传递给子程序的实际参数相同。 这意味着 法特切克
将假设参数可以被函数修改。 不会有警告
如果发现函数有副作用,则给出。 因为更严格的检查是
如果函数被假定为纯函数,则只有在以下情况下才应关闭此标志
你的程序实际上使用了有副作用的函数。

-安静的
此选项减少了与正常操作相关的输出量,以便
错误信息更明显。 提供此选项是为了方便
检查大型文件套件的用户。 消除的输出包括
项目文件的名称,以及报告未发现语法错误的消息。
它还消除了一些通常为清晰起见而包含的空白行。 (一些
此输出的重新打开由 -list-符号表 选项。)默认值 = no。

注意:记住方法之间的区别 -安静的-简短的
-安静的 不会抑制任何与警告相关的信息,而 -简短的 一样。

另见: -简短的.

-参考
指定打印 who-calls-who 表。 此表列出了每个子程序
后跟它调用的例程列表。 这个开关相当于
-calltree=参考. 默认值 = 否。

参考列表省略了由未使用的库模块调用的例程。 因此它
包含与调用树格式相同的信息,即
subprogram 调用,但以不同的方式打印。 这将打印出广度优先
遍历调用树,而 -calltree=树 打印出深度优先
遍历。

另见: -调用树, -交叉引用, -图书馆, -种类, -符号表, -VCG.

-资源
打印使用的资源量 法特切克 在处理程序中。 这
列表可能有助于分析程序的大小和复杂性。 它可以
也有助于选择更大的尺寸 法特切克的内部表,如果它们也是
小来分析一个特定的程序。 默认值 = 否。

在这个清单中,术语“块大小”是内存块的大小
分配用于存储有问题的项目,以一个项目的大小为单位,而不是
必须以字节为单位。 当最初分配的空间被填满时,更多的内存
以这种大小的块分配。 以下是物品说明
印刷:

来源 线 处理:
代码总行数,语句行和
注释行。 注释行也包括第 1 列中带有“C”或“*”的行
作为空行和仅包含行内注释的行。 语句行
是所有其他行,包括在某些行之后具有内联注释的行
代码。 续行被视为单独的行。 行包括
每次包含文件时都会对文件进行计数。

合计 可执行 声明:
程序中的语句数,不包括规范、数据、语句-
函数、FORMAT、ENTRY 和 END 语句。

合计 of 模块:
模块是任何外部子程序,包括主程序、子程序、
函数和块数据单元。 此计数是在
源,而不是引用的模块。 不包括语句函数。 一个
具有多个入口点的子程序只计算一次。

合计 声明 标签 定义
附在语句上的标签数(通常称为语句编号)。 这
给出了整个程序的总标签数,以及最大值
任何单个子程序中的编号。

max. 识别码 姓名 字符:
用于存储标识符名称的字符数。 标识符是
变量、子程序或公共块名称。 本地名称是本地名称
子程序中的变量,而全局名称指的是子程序和公共
块名称,以及虚拟参数名称和公共变量名称。 实际的
参数文本(每个参数最多 15 个字符)也包含在此处。
用于本地名称的空间在每个模块的末尾都没有回收,因此
这个数字,就像全局空间一样,会一直增长,直到分析整个程序。
不幸的是,这个数字可能包括一些存储不止一次的文本,
尽管使用了一种启发式方法,可以在许多情况下避免重复。

max. 象征 文本 字符:
记号是 FORTRAN 语言层级以上的最小句法单元
个别字符。 例如,一个标记可以是一个变量名,一个
数字常量、带引号的文本字符串或标点符号。 令牌
在处理模块时存储文本。 由于技术原因,
单字符标记不包括在此总数中。 不属于的物品
符号表中表示的可能是重复的。 标记文本的空间是
在每个模块结束时恢复,所以这个数字代表了最大值
任何一个模块。

max. 本地 符号:
这是任何模块的本地符号表中的最大条目数。
局部符号表条目包括所有变量和参数、公共块
名称、语句函数、外部子程序和内部函数
模块引用。 文字常量不存储在本地符号中
表。

max. 全球化 符号:
这是全局符号表末尾的条目数
加工。 全局符号表条目包括外部子程序和公共
块名称。 不包括内部函数和语句函数。

max. of 令牌列表:
标记列表是表示实际或虚拟参数的标记序列
子程序列表,或公共块或名称列表中的变量列表。
因此这个数字代表了 COMMON、CALL、NAMELIST 和
任何一个模块的 ENTRY 语句和函数调用。 空间是
在每个模块结束时恢复。

max. 象征 列表/树 空间:
这是所有令牌列表和令牌树中最大的令牌数
任何一个模块。 分析表达式时会形成一个标记树:每个
操作数是树的叶子,操作符是节点。 因此这
number 是衡量单个模块最大复杂度的指标。 为了
例如,具有许多长算术表达式的模块将具有高
数字。 请注意,与上述标记文本不同,标记的数量是
与变量名或文字常量的长度无关
表达式。

联系电话 of 子程序 调用:
这是所有模块的 CALL 语句和函数数量的总和
调用(内部函数和语句函数除外)。

联系电话 of 常见 阻止 声明:
这是所有模块的公共块声明数量的总和。
即对不同模块中的块的每个声明进行计数
分别地。 (该标准允许在
相同的模块; 这些仅被视为一项声明,因为它们是
相当于一个长声明。)

联系电话 of 排列 暗淡 & 停止 指针:
这是数组维数和参数的所有模块的总和
保存以供用户使用的定义文本字符串 -makedcls 选项。 长度
文本字符串不计算在内。 多维数组的每一维是
分别计算。

当使用项目文件代替时,这些数字显然不一样
原始源代码。 甚至全球实体的数字也可能不同,
因为在项目文件中删除了一些冗余信息。

-六字符
目标之一 法特切克 程序是帮助用户编写可移植的Fortran
程式。 不可移植性的一个潜在来源是使用变量名
长度超过六个字符。 一些编译器只是忽略额外的字符。
这种行为可能会导致两个不同的变量被视为
相同。 例如,名为 AVERAGECOST 和 AVERAGEPRICE 的变量是相同的
在前六个字符中。 如果您希望捕获此类可能的冲突,请使用
这个标志。 默认值 = 否。

使用 -f77=长名称 如果你想列出 所有 长于六个的变量
字符,而不仅仅是前六个中相同的那些对。

另见: -f77, -可移植性.

-种类
指定打印程序中使用的所有模块的排序列表。 这
列表按“先决条件”顺序排列,即每个模块仅在所有
从中调用它的模块已被打印。 这也被称为
调用树的“拓扑排序”。 每个模块仅列出一次。 例行公事
不在主程序调用树中的将被省略。 如果有任何
调用图中的循环(在标准 Fortran 中是非法的)它们将被检测到并
确诊。 默认值 = 否。

另见: -调用树, -交叉引用, -参考, -符号表, -VCG.

-源=名单
此设置控制有关 Fortran 源代码形式的某些选项。
名单 由逗号或冒号分隔的关键字组成。 有三种
特殊关键词: 所有 打开所有选项, 没有 将它们全部关闭,然后
帮助 打印所有关键字的列表以及每个关键字的简要说明。 如果
名单 省略, -资源 相当于 -源=全部-无源 是等价的
-源=无.

为了与以前版本的兼容 法特切克, 此设置的数字形式
也被接受: 名单 由一个数字代替,该数字是数字的总和
在以下列表中关键字旁边的括号中。 (这 固定免费
选项没有数字值。)警告关键字及其含义是
如下:

固定:
将源解释为固定形式(具有支持的扩展,例如
注释的感叹号)。 报表必须在第 7 到 72 列中
(除非 -列 设置已被用来改变这一点),而不是空白
重要的外部字符上下文(但在 -漂亮
选项)。 这是默认模式,除非源文件扩展名是 .f90
or .F90. 此选项不能与 -源=免费.

免费:将来源解释为自由形式。 语句可以在第 1 列中的任何位置
到132,评论只能以感叹号开头,空格为
在某些地方需要,例如标识符和关键字之间。 这是
如果源文件扩展名是默认模式 .f90 or .F90. 这个选项
不能与 -源=固定 or -source=dec-tab

dec标签 (1):
接受 DEC 样式的制表符格式的源。 以初始制表符开头的行
将被视为新的语句行,除非制表符后面的字符是
一个非零数字,在这种情况下,它被视为连续行。 这
制表符或续行符之后的下一列被视为第 7 列。
如果该行是延续,则会发出警告,如果
-f77=dec-tab 有效。

vms-包括 (2):
接受 VMS 样式的 INCLUDE 语句。 这些遵循正常的语法,但是
具有以下附加功能:(1)文件扩展名,如果没有给出,
默认与普通源文件扩展名相同; 和(2)选项
/LIST 或 /NOLIST 可以附加到包含文件名,以控制列表
其内容。

unix-反斜杠 (4):
处理字符串中 UNIX 风格的反斜杠转义。 逃亡
反斜杠后面的序列将根据 ANSI 进行评估
C 中的字符串标准:最多三位数字表示一个八进制值,一个 x
表示十六进制常量的开始,任何字母 abfnrt
表示特殊控制代码和任何其他字符(包括换行符)
表示字符本身。 当这个源代码选项生效时,一个
如果出现以下情况将发出警告 -f77=反斜杠 设置被指定。

默认行为是像对待任何其他正常行为一样对待反斜杠
字符,但如果
-可移植性 标志已设置。 因为一些编译器处理
以非标准方式反斜杠,有可能符合标准
如果程序在字符串中使用反斜杠字符,则它们是不可移植的。

法特切克 对解释的字符串没有多大作用,很少
必须使用此选项。 需要它以避免虚假
仅当 (a) 被检查的程序使用反斜杠嵌入
字符串中的撇号或引号,而不是使用标准机制
将分隔符加倍; (b) 反斜杠用于转义-的结尾
line 以便在多个源代码行中继续一个字符串; 或 (c)
PARAMETER 定义使用一个内在的字符串函数,例如 LEN 和这样的
一个字符串作为参数,该值稍后用于定义数组
尺寸等。

参数隐式类型 (8):
通过分配的值的数据类型隐式键入参数。 一些
非标准编译器可能允许值的数据类型覆盖
Fortran 77 基于第一个字母的参数的默认类型
参数名称。 此选项仅适用于
带括号的标准形式。 已明确指定的参数
在 PARAMETER 语句之前的类型语句中声明不受影响
通过这个选项。 将在以下情况下发出警告 -f77=参数隐式类型
or -portability=param-隐式类型 选项。

请注意,这种隐式类型被视为等同于显式类型
参数的声明。 因此,如果您使用
-makedcls=仅未声明 仅生成未声明的声明
变量,这些参数将 不能 被包括在内。

dec-param-标准类型 (16):
对于 DEC Fortran 样式参数的数据类型,请遵循 Fortran 77 规则。
这些是使用非标准形式的 PARAMETER 语句声明的
缺少括号。 根据 DEC Fortran,这种形式定义的参数
语句的数据类型由值的数据类型给出
分配。 使用此选项告诉 法特切克 不遵守这条规则,但
而是使用与标准 PARAMETER 语句相同的规则。 这
选项不适用于标准形式的 PARAMETER 语句。

默认情况下,所有这些源代码选项都是关闭的,除了
vms-包括 选项,在 VMS 版本中默认开启。

另见: -f77, -包括, -可移植性.

-风格=名单
提供关于过时或老式编程的额外警告
建筑。 此选项有助于遵循现代编程
风格。 (在这个选项下抱怨的大部分事情在
F 子集 语。) By 默认, 所有 警告 ,那恭喜你, 转身 关闭。

名单 由逗号或冒号分隔的关键字组成。 有三种
特殊关键词: 所有 打开所有选项, 没有 将它们全部关闭,然后
帮助 打印所有关键字的列表以及每个关键字的简要说明。 如果
名单 省略, 风格 相当于 -风格=全部-nostyle 相当于
-风格=无. 警告关键字及其含义如下:

块如果:
抱怨算术 IF 语句。 接受块 IF 或逻辑 IF(其中
控制单个语句)。

构造名称:
抱怨未命名的块结构:IF、DO 和 SELECT CASE。 注意
如果构造名称出现在构造的开头语句中,则
它需要出现在所有其他组件语句(ELSE、END IF、
等)的构造。 在那种情况下,那些缺少构造名称
无论此选项如何,语句都会生成语法错误。 目的
此选项的一个目的是警告构造是否完全缺少可选的
名称。

与众不同:
抱怨两个 DO 循环是否共享一个公共终止符语句。

做构造:
如果 DO 循环的终止符不是 END DO 或
CONTINUE 语句。 这是为了使循环满足的要求
do-construct 的 Fortran 90 定义。

做-结束:
如果 DO 循环的终止符不是 END DO 则抱怨
陈述。 (此选项覆盖 做构造 选项,甚至
更严格。)

终名:
抱怨结构化END上没有子程序名称
声明。

格式stmt:
抱怨 FORMAT 语句的存在。 只有 FORMAT 语句
它们本身被标记,而不是 I/O 列表中对它们的引用。

转到: 抱怨存在无条件的、计算的或分配的 GOTO
声明。 还抱怨替代退货(但不抱怨标签为
子程序参数)。

标记的stmt:
抱怨陈述中存在标签(数字)而不是
FORMAT 语句。 (因为 FORMAT 语句可以说是方便的,而不是
容易被滥用,对它们的投诉由单独的
格式stmt 关键词。)

程序-stmt:
抱怨主程序开头没有 PROGRAM 语句
程序。

结构端:
抱怨使用简单的 END 语句来结束子程序,而不是
比结构化的 END 语句(END PROGRAM、END SUBROUTINE、END FUNCTION、
或结束块数据)。

另见: -f77, -f90, -f95, -漂亮, -可移植性.

-符号表
将为每个模块打印一个符号表,列出所有标识符
模块中提到。 该表给出了每个变量的名称、它的数据类型、
以及数组的维数。 星号 (*) 表示
变量已被隐式类型化,而不是以显式类型命名
声明声明。 该表还列出了模块调用的所有子程序,
声明的所有 COMMON 块等。默认值 = no。

此外,对于每个模块,将打印一个标签表。 该表列出了每个标签
在模块中定义; 定义所述语句标签的行; 和
语句类型(可执行文件、格式​​或规范)。 标签列在
顺序。

还打印了一个表格,描述了模块使用的 I/O 单元,以及
有关如何使用它们的信息:执行什么操作,是否
访问是顺序的还是直接的,以及 I/O 是格式化的还是未格式化的。

另见: -调用树, -交叉引用, -list, -参考, -种类, -VCG.

-截断=名单
警告可能的截断(或舍入)错误。 其中大部分与
整数运算。 默认情况下,所有警告都处于打开状态。

此设置提供对有关可能截断的警告的详细控制
错误。 这 名单 由逗号或冒号分隔的关键字组成。 由于所有
警告在默认情况下是打开的,包括一个以前缀为前缀的关键字 NO- 关闭一个
特别警告。 共有三个特殊关键字: 所有 打开所有
关于截断的警告, 没有 将它们全部关闭,然后 帮助 打印列表
所有关键字,每个关键字都有简要说明。 如果 名单 省略, -截断
相当于 -截断=全部- 不截断 相当于
-截断=无. 警告关键字及其含义如下:

int-div-指数:
使用整数除法的结果作为指数。 这表明一个
实际商数是有意的。 一个例子是写 X**(1/3) 来评估
X 的立方根。正确的表达式是 X**(1./3.)。

int-div-实数:
将涉及整数除法的表达式转换为实数。 这
表明打算使用实商。

int-div-零:
整数常量表达式中的除法,结果为零。

负能量:
一个整数乘以一个负整数的幂(产生零,除非
基本整数的数量级为 1)。 这表明真正的基数是
意。

提升:
自动将较低精度的数量转换为较高精度的数量之一
精确。 在这个过程中真实变量的精度损失是
相当于相应的降级。 没有任何促销警告
整数到实数,因为这通常是精确的。

实际操作指数:
在具有整数边界的循环中使用非整数 DO 索引。 一个整数 DO
无论此设置如何,始终会警告具有实际边界的索引。

实下标:
使用非整数数组下标。

有效数字:
过度指定单个精度常数。 这可能表明双
精密常数是有意的。

降级:
自动将较高精度的数量转换为较低精度的数量
同类型。 此警告仅在使用显式大小时发生
在赋值中声明一个或两个操作数的类型。 例如,一个
将 REAL*8 变量分配给 REAL 变量时将发出警告,
如果默认的 wordsize 4 有效。 如果出现以下情况,也会发出警告
长整数被分配给更短的整数,例如,如果一个 INTEGER
表达式被分配给一个 INTEGER*2 变量。 有一个例外
最后一种情况,即如果分配的右侧是一个小
文字常量(小于 128)。 类型降级: 自动转换一个
精度较高的量到不同类型的较低精度之一。 这
警告包括将实数转换为整数、双精度
到单精度实数,并将较长的字符串分配给
较短的一个。

关于提升和降级的警告也适用于复杂的常量,
考虑精度是实部或虚部的精度。 关于的警告
只有在自动完成转换时才会提供晋升和降级,
例如在混合精度表达式或赋值语句中。 如果内在
INT 等函数用于执行转换,不会给出警告。

另见: -可移植性, -字大小.

-用法=名单
警告未使用或可能未初始化的变量、未使用的公共块、
未定义或未使用的语句标签,以及未使用或未定义的子程序。 经过
默认情况下,所有警告都处于打开状态。

此设置提供对有关可能使用的警告的详细控制
错误。 这 名单 由逗号或冒号分隔的关键字组成。 由于所有
警告在默认情况下是打开的,包括一个以前缀为前缀的关键字 NO- 关闭一个
特别警告。 共有三个特殊关键字: 所有 打开所有
有关使用的警告, 没有 将它们全部关闭,然后 帮助 打印所有列表
关键字以及每个关键字的简要说明。 如果 名单 省略, -用法 is
相当于 -用法=全部- 鼻子 相当于 -用法=无。 这些
警告涵盖四个主要类别的对象:子程序虚拟参数、通用
块和变量、子程序和函数以及局部变量。 警告
包括未定义项、多重定义项、未使用项等。 警告
关键字及其含义如下:

arg-别名:
标量虚拟参数实际上与另一个相同,并且是(或可能是)
修改的。 Fortran 77 标准(第 15.9.3.6 节)禁止修改
别名为另一个的参数。

参数数组别名:
作为数组或数组元素的虚拟参数与
另一个并被修改。 这个标志类似于 arg-别名 但提供
单独控制数组参数。 更难判断混叠是否是
发生在数组的情况下,所以如果 法特切克 给出了太多的错误警告,
这个标志允许在不抑制的情况下关闭与数组相关的
标量的警告。

arg-通用别名:
标量虚拟参数与子程序中的公共变量相同,
并且要么被修改。 Fortran 77 标准也禁止这样做。
如果普通检查不准确(请参阅 -共同 设置),比较难
告诉是否正在发生别名,因此如果变量是
子程序声明的公共块中的任何位置。

arg-通用数组别名:
作为数组或数组元素的虚拟参数与
公共变量,或者被修改。 如果普通检查不准确,
该变量可以位于由
子程序。

arg-const 修改:
子程序修改作为常量或表达式的参数。 这样的
一个动作可能会导致程序的异常行为。

参数未使用:
声明了一个虚拟参数,但从未使用过。 这类似于
变量未使用 关键字如下所述,但仅适用于参数。

com-block-未使用:
声明了一个公共块,但其中的任何变量都没有被任何人使用
子程序。 如果通用严格性设置为
0.

com-block-易失性:
如果公共块是公共块,则公共块可能会丢失其内容的定义
易挥发的。 此选项仅在以下情况下有效 -common=易失性 旗帜在
影响。 见讨论 -共同 上面设置。

com-var-set-未使用:
一个公共变量被赋予了一个值,但它的值不被任何人使用
子程序。 如果通用严格性设置为
0.

com-var-未初始化:
某个子程序中使用了公共变量的值,但未设置
任何地方。 很遗憾, 法特切克 没有做足够彻底的分析
调用序列以了解哪些例程在其他例程之前被调用。 所以
仅在以下情况下才会发出有关此类错误的警告
变量在某些例程中使用但未在任何其他例程中设置。 检查
仅当 -共同 设置为 3
(根据变量协议而变化)。 如果常见的
严格设置为 0。

com-var-未使用:
一个公共变量被声明但不被任何子程序使用。 这个警告
如果通用严格性设置为 0,则被抑制。

做索引修改:
某个语句修改了作为 DO 循环索引的变量
循环范围内。 该标准允许一个活动的 DO 变量
只能通过 DO 语句的增量机制进行修改。

外乘定义:
一个外部(子程序或函数)被定义不止一次。 定义
外部手段提供其源代码的主体。

仅 ext 声明:
名称在某个模块的 EXTERNAL 语句中声明,但不是
在任何地方定义或使用。

分机未定义:
使用(调用)外部但未在任何地方定义。 这个选项是
相当于 -外部的 旗帜。 如果子程序被调用的次数超过
一次,仍将检查这些调用的一致性。

分机未使用:
定义了一个外部(它的子程序体存在)但没有使用。
一个子程序被认为是未使用的,即使它被其他某个程序调用
子程序,如果它不能从任何以
主程序。 子程序的参数与它的
即使关闭此警告,调用仍会被检查。 如果有
没有主程序,则只有在子程序不存在时才会发出此警告
随处调用。 此警告在库模式下被抑制,但库
模式具有抑制未使用的参数检查的附加效果
例行程序。

标签未定义:
语句引用了尚未定义的标签。

标签未使用:
定义了语句标签,但从未提及。

var-set-未使用:
局部变量被赋予一个值,但该值未被使用。

变量未初始化:
局部变量的值可以在分配之前使用。 有时
法特切克 在有关局部变量使用的警告中出错。 通常
在不存在问题的情况下发出警告是错误的,但在极少数情况下
如果问题确实存在,它可能无法警告。 请参阅有关部分
错误示例。 如果变量是等价的,则使用的规则 法特切克
是对任何变量的引用都意味着对所有变量的引用相同
等价的变量。 对于数组,规则是引用
任何数组元素都被视为对数组所有元素的引用。

变量未使用:
声明了局部变量(例如,在类型声明中)但未声明
模块中使用。 不适用于虚拟参数:关于它们的警告
由关键字控制 参数未使用 如上所述。

注意:在 法特切克 在 2.10 之前, -用法 flag 接受一个数字参数
而不是选项列表。 为了可能写过脚本的用户
调用 法特切克 这样,数字形式仍然被接受。 数字
设置由三位数字组成。 第一个数字(百位)控制
关于子程序(函数和子程序)的警告,第二个数字(十
place) 关于公共块和公共变量的警告,以及第三位数字
(ones place) 关于局部变量的警告。 每个数字控制警告
根据约定,1 表示警告未定义的项目和变量
在设置之前使用,2 表示警告未使用的项目,3 表示
警告这两种类型。 这些数字现在转换为适当的值
对于上面列出的关键字,除了 com-block-易失性, 不受影响
通过数字参数。

另见: -共同, -宣布, -外部, -图书馆.

-VCG
以 VCG 图描述的形式生成调用图。 这个描述是
写入一个单独的文件,与包含主文件的文件具有相同的词干
程序和后缀 .vcg. 该文件可以直接提供给 xvg(1L) 到
可视化调用图。 (如果输入来自标准输入,则图
描述被发送到标准输出。)这个开关相当于
-calltree=vcg. 默认值 = 否。

创建的 VCG 描述比它需要的更复杂。 VCG 允许图形
和嵌套子图:每个子例程都被创建为嵌套在其内部的子图
调用例程。 这允许您以交互方式显示子图或汇总
他们。

-VCG 选项 法特切克 由克兰菲尔德的 Philip Rubini 博士撰写
大学,英国。

xvg 是一个运行在X windows系统下的图形可视化工具。 它是
可从 ftp.cs.uni-sb.de 免费获得。 它是由 G. Sander 撰写的
德国萨尔大学。

另见: -调用树, -交叉引用, -参考, -种类.

-版
此选项导致 法特切克 打印一行给出版本号、发布日期,
和程序的补丁级别。 如果没有给出文件,则退出。 如果文件
给出,此选项的效果是包括补丁级别(通常
省略)在处理开始时打印的版本信息中。 默认 =
没有。

另见: -救命.

-易挥发的
假设 COMMON 块是易变的。 默认值 = 否。

此标志由 -common=易失性,不应再使用。 有可能
在未来的版本中被淘汰 法特切克.

另见: -共同, -用法.

-字大小=NUM
指定默认字长为 NUM 字节。 这是逻辑和的大小
未指定显式精度的单精度数值变量。
(非字符变量的显式精度是 Fortran 77
标准,并由 REAL*8 X 等类型声明给出。)双精度
和复变量将是这个值的两倍,双复变量是四
次。 四精度常数和内函数结果将是四倍
这个值。 请注意,声明为 REAL*16 的变量将被视为 quad
仅当字长为 4 字节时才具有精度。 默认值 = 开启 = 4 个字节。

字长值对于检查符合标准的程序无关紧要
不要为非字符变量声明显式精度或存储 Hollerith
变量中的数据。 此设置也不影响字符的默认大小
变量,始终为 1 个字节。 Hollerith 常数也被假定占据
每个字符 1 个字节。

字长用于判断赋值时是否发生截断
语句,并捕获子程序参数列表中的精度不匹配和
常见的块列表。 发出的确切警告将取决于状态
的其他标志。 在这两种情况下 -便携性=混合尺寸-无字大小 旗,
显式与默认精度对象的任何混合(字符表达式不是
包括)被警告。 这适用于包含两者的算术表达式
对象类型,以及子程序参数和公共变量。 掌握之中
-截断=降级提升 选项,给出警告
将一个表达式赋值给一个较短的相同类型的变量,或者
在算术中将较低精度值提升为较高精度
表达式或赋值语句。

给出一个字长为 0,或等效地,使用 -无字大小 意味着没有默认
值将被假定。 这相当于指定 -便携性=混合尺寸.
使用它来查找混合默认精度和显式精度的情况,例如标记
将 REAL*8 视为等同于 DOUBLE PRECISION 的地方。

另见: -指针大小, -可移植性, -截断.

-包裹=山坳
控制错误消息的包装。 会跑过去的长错误消息
指定的列将被分解为单词之间的单独行
消息以获得更好的可读性。 如果关闭 -nowrap, 每个单独的错误
消息将打印在一行上,由显示器来包装
消息或截断它。 默认 = 开启 = 79。

改变 默认值


法特切克 包括两种更改所有选项默认值的机制:通过
定义环境变量或通过创建首选项文件。 什么时候 法特切克 启动,
它在其环境中查找名称由前缀组成的任何变量
字符串 FTNCHEK_ 到选项名称的大写版本。 如果这样的变量是
找到后,它的值用于指定相应开关或设置的默认值。
在设置的情况下(例如, -共同 严格设置)的值
环境变量被读取为默认设置值。 在开关的情况下,
除非环境变量具有该值,否则默认开关将被视为 true 或 yes
0 或否。

注意环境变量名必须用全长选项构造
名称,必须大写。 例如,要使 法特切克 打印源列表
默认情况下,将环境变量 FTNCHEK_LIST 设置为 1 或 YES 或除 0 或
不。 名称 FTNCHEK_LIS(不是完整的选项名称)或 ftnchek_list(小写)将
不被认可。

以下是如何在各种系统上设置环境变量的一些示例。 为了
简单,所有示例都设置默认值 -list 切换到是。

1. UNIX,Bourne shell:$ FTNCHEK_LIST=YES
$ 出口 FTNCHEK_LIST

2. UNIX, C shell: % setenv FTNCHEK_LIST 是

3. VAX/VMS: $ DEFINE FTNCHEK_LIST 是

4. MSDOS: $SET FTNCHEK_LIST=YES

处理任何环境变量后,ftnchek 查找首选项文件
包含选项和设置。 它将按以下顺序搜索,仅使用
找到的第一个文件:(1) .ftnchekrc文件 在当前目录中,(2) 文件名 在当前
目录, (3) .ftnchekrc文件 在用户的主目录中,(4) 文件名 在家里
目录。 如果找到这样的文件,则将其中定义的选项用作
内置默认值的位置并覆盖环境中设置的任何默认值..

首选项文件中的每个选项或设置都必须在单独的行上。 他们被赋予
与命令行的形式相同,除了没有初始破折号。 偏好
文件可以包含空行和注释。 注释在一行中的任何一点引入
由空格字符(空格或制表符)或“#”字符组成,并以
线。

命令行选项会覆盖环境或首选项中设置的默认值
文件,就像它们覆盖内置默认值一样。

使用 项目(PROJECT) FILES


本节包含有关如何最有效地使用项目文件的详细信息,
以及如何避免一些陷阱。

可以分开支票 法特切克 分为两类,本地和全局。 当地的
检查仅限于在单个例程内,并捕获诸如未初始化之类的东西
变量、算术表达式中意外的精度损失等。
可以对每个子程序独立进行检查。 此外,本地检查一个
更改其他子程序时无需重复子程序。 全球的
检查会捕获诸如使用错误的参数类型调用子例程之类的事情,或者
不同意共同的块声明。 它需要查看整套
子程序相互交互。

项目文件的目的是允许本地检查和全局检查步骤
分开。 假设每个子程序都在自己的源文件中,可以运行
法特切克 一次对每个进行局部检查,同时抑制全局检查。 然后
法特切克 可以对所有项目文件一起运行一次以进行全局检查。 这
下面的示例 makefile 显示了如何自动执行此任务。 ``.f.prj'' 目标更新了一个
任何时候源文件发生更改时,都会为特定文件创建项目文件。 信息
全局检查所需的文件保存在项目文件中。 “检查”目标执行
结合全局检查。 通常“make check”会重复“ftnchek -project”
仅对更改的源文件执行步骤,然后进行全局检查。 这显然是一个大
大程序的优势,当许多子程序很少改变时。

最好使用项目文件将每个子程序放置在单独的源文件中。
如果每个源文件可能包含多个子程序,就会使定义复杂化
“本地”和“全局”检查,因为有一些模块间检查
包含在一个文件中。 法特切克 在这种情况下尝试做正确的事情,但是有
由于避免重做交叉之间的权衡,一些并发症(如下所述)
检查和保存有关程序结构的信息。

通常,要进行最少的重新检查,应使用以下命令创建项目文件
-图书馆 标志生效并开启修剪。 在这种模式下,保存的信息
在项目文件中包含所有子程序声明、所有子程序调用
未通过同一文件中的声明解析,并且每个 COMMON 块的一个实例
宣言。 这是检查之间的一致性所需的最少信息量
文件。

如果源文件包含多个例程,则可能存在一些问题
可以在库模式下创建项目文件时出现,因为调用层次结构
在文件中定义的例程之间丢失。 此外,如果文件中的例程使
使用与其他文件中的例程共享的 COMMON 块,不会有
为正确检查 COMMON 块的设置和使用状态保存了足够的信息
和 COMMON 变量根据 -用法 环境。 因此,如果您打算使用
项目文件时 -用法 检查已打开(这是默认情况),如果
一个项目文件中的多个例程与其他文件中的例程共享 COMMON 块,
项目文件应该使用 -图书馆 标志关闭。 在这种模式下,
法特切克 保存,除了上面列出的信息,每个子程序的一次调用
同一文件中的任何其他子程序,以及所有 COMMON 块声明。 这意味着
项目文件会比需要的大,当它被读入时, 法特切克 五月
重复一些在创建项目文件时已经进行的模块间检查。 如果
每个项目文件只包含一个模块,创建时不会丢失信息
库模式下的项目文件。

由于创建项目文件时可能会丢失信息
-图书馆 标志生效,只要稍后读入该项目文件,就会对其进行处理
无论当前的设置如何,作为库文件 -图书馆 旗帜。 在另一
手,在关闭库模式的情况下创建的项目文件可以稍后在任一
模式。

前面的讨论假设 -项目 设置是
创建项目文件时打开。 这是正常情况。 这 无装饰
的选项 -项目 提供设置以防万一要使用项目文件
用于检查程序以外的目的 法特切克. 例如,一个人可以写
一个 Perl 脚本,用于分析项目文件以获取有关不同
子程序被调用。 你不应该使用 无装饰 处理问题的选择
上面讨论的信息丢失,因为它们导致比需要的更多的信息
存储。 这会使项目文件更大并导致 法特切克 以后做更多的工作
它读取它们以检查您的完整程序。 通常,您应该使用 -图书馆
控制存储多少信息以供以后使用的选项 法特切克 在检查你的
程序。

这是如何使用 UNIX 的示例 使 实用程序来自动创建一个新的
project file 每次修改相应的源文件,并检查设置的
文件的一致性。 将这些行添加到您的 makefile 中。 该示例假设一个
宏 OBJS 已定义,它列出了要链接的所有目标文件的名称
一起构成完整的可执行程序。 (在这个 makefile 中,缩进的行
每个都应该以制表符开头,而不是空格。)如果任何源文件包含多个例程
之间共享公共块,则应删除 no-com-\* 选项
从 NOGLOBAL,和/或删除 -library 标志。
# 告诉 make 项目文件后缀是什么
.后缀:.prj

# 这些选项禁止全局检查。
NOGLOBAL=-usage=no-ext-undefined,no-com-\*

# 告诉 make 如何从 .f 文件创建 .prj 文件
.f.prj:
ftnchek -project $(NOGLOBAL) -library $

# 设置包含项目文件名的宏 PRJS
PRJS= $(OBJS:.o=.prj)

# "make check" 将检查所有已更改的内容。
检查:$(PRJS)
ftnchek $(PRJS)

当程序使用在大量不同源文件中定义的许多例程时
不同的目录,指定所有不同的项目文件可能很麻烦
需要正确检查程序。 处理此类案件, 法特切克 允许项目
文件合并成一个大文件。 然后可以将这个单个文件提供给
法特切克 提供用于检查任何或所有例程的使用的信息
在合并的项目文件中定义。 当使用这样一个“库”项目文件时,你
可能想要 法特切克的错误报告准确地记录了文件名
定义了具体的功能。 如果各种源文件位于多个目录中,则
仅给出文件名的错误报告可能不明确,而应包括
文件的路径。 解决方案是通过以下方式创建每个单独的项目文件
给出源文件的完整路径。 然后这个完整的路径会出现在
错误报告。 例如,假设所有的库子程序源文件都是
在名为 /util/lib 的目录的子目录中。 然后各个项目文件可以
首先由命令创建,例如
find /util/lib -name '*.f' -exec ftnchek -project '{}' ';'
(可能会提供其他选项 法特切克 如上所述。 还有这一步
可以通过修改后的 makefile 规则来处理,该规则将提供完整的源
调用时文件路径而不仅仅是本地名称 法特切克.) 接下来,连接所有
这些项目文件手动。
find /util/lib -name '*.prj' -exec cat '{}' ';' > ourlib.prj
然后可以使用命令检查程序源文件
ftnchek prog.f ... -lib ourlib.prj
与任何库例程相关的错误消息将包括到
例程的源文件。

目前,没有像 ar 管理连接的内容
项目文件,如上图所示。 如果对其中之一进行更改
库例程,更新组合项目文件的唯一方法是连接所有
单个项目文件再次。 这样的实用程序很容易编写。
有人应该这样做并将其贡献给 法特切克 努力。

AN


以下简单的 Fortran 程序说明了由 法特切克。 该
程序旨在接受一系列测试分数,然后计算平均值
系列。

作者:迈克·迈尔斯和露西娅·斯帕格诺洛
日期:8 年 1989 月 XNUMX 日

C 变量:
C SCORE -> 一组测试分数
C SUM -> 考试成绩总和
C COUNT -> 读入的分数计数器
CI -> 循环计数器

实函数COMPAV(分数,计数)
整数总和,计数,J,SCORE(5)

做 30 I = 1, 计数
总和 = 总和 + 分数(一)
30 继续
COMPAV = 总和/计数
结束

程序大道
C
C主程序
C
作者:洛伊丝·比格比
日期:15 年 1990 月 XNUMX 日
C
C 变量:
C MAXNOS -> 输入值的最大数量
C NUMS -> 数字数组
C COUNT -> 输入值的确切数量
C AVG -> COMPAV 返回的平均值
CI -> 循环计数器
C

参数(MAXNOS=5)
整数 I,计数
真实数字(MAXNOS),平均
计数 = 0
做 80 I = 1,MAXNOS
读取 (5,*,END=100) NUMS(I)
计数 = 计数 + 1
80 继续
100 AVG = COMPAV (NUMS, COUNT)
结束

编译此程序时,编译器不会给出错误消息。 然而这里是什么
运行时发生:

$ 运行平均值
70
90
85

$

发生了什么? 为什么程序没有做任何事情? 以下是输出
法特切克 用于调试上述程序时:

$ ftnchek -list -symtab 平均值

FTNCHEK 版本 3.3 2004 年 XNUMX 月

文件average.f:

1 C 作者:MIKE MYERS 和 LUCIA SPAGNUOLO
2 C 日期:8 年 1989 月 XNUMX 日
3
4 C 变量:
5 C SCORE -> 一组测试分数
6 C SUM -> 考试成绩总和
7 C COUNT -> 读入的分数计数器
8 CI -> 循环计数器
9
10 实函数比较(分数,计数)
11 整数和,计数,J,SCORE(5)
12
13 DO 30 I = 1,计数
14 总和 = 总和 + 分数(一)
15 30 继续
16 比较 = 总和/计数
^
第 16 行第 20 列附近的警告:整数商 expr SUM/COUNT 转换为
真实
17 结束

模块 COMPAV:功能:真实

变量:

名称类型 Dims 名称类型 Dims 名称类型 Dims 名称类型 Dims
COMPAV 实数 COUNT intg I intg* J intg
SCORE intg 1 SUM intg

* 变量未声明。 类型已被隐式定义。

模块 COMPAV 中的警告:已声明但从未引用的变量:
J 在第 11 行声明

模块 COMPAV 中的警告:变量可以在设置之前使用:
第 14 行使用的 SUM
SUM 在第 14 行设置

声明标签定义:

标签线StmtType
<30> 15 次执行

18
19
20 计划 AVENUM
21ç
22 C主程序
23ç
24 C 作者:LOIS BIGBIE
25 C 日期:15 年 1990 月 XNUMX 日
26ç
27 C 变量:
28 C MAXNOS -> 输入值的最大数量
29 C NUMS -> 一个数字数组
30 C COUNT -> 输入值的确切数量
31 C AVG -> COMPAV 返回的平均值
32 CI -> 循环计数器
33ç
34
35 参数(MAXNOS=5)
36 整数 I,计数
37 实数(MAXNOS),平均
38 计数 = 0
39 DO 80 I = 1,最大NOS
40 读取 (5,*,END=100) NUMS(I)
41 计数 = 计数 + 1
42 80 继续
43 100 AVG = COMPAV(数字,计数)
44 结束

模块 AVENUM:编

引用的外部子程序:

COMPAV:真实*

变量:

名称类型 Dims 名称类型 Dims 名称类型 Dims 名称类型 Dims
AVG 实数 COUNT intg I intg MAXNOS intg*
NUMS 实数 1

* 变量未声明。 类型已被隐式定义。

模块 AVENUM 中的警告:已设置但从未使用的变量:
AVG 设置在第 43 行

输入/输出操作:

单元号 单元号 接入形式 操作线
5 SEQ FMTD 读取 40

声明标签定义:

标签线 StmtType 标签线 StmtType
<80> 42 执行 <100> 43 执行

在文件 average.f 中检测到 0 个语法错误
在文件 average.f 中发出 6 个警告

警告:位置 1 的子程序 COMPAV 参数数据类型不匹配:
模块 COMPAV 第 10 行文件 average.f 中的虚拟 arg SCORE 是 intg 类型
模块 AVENUM 第 43 行文件 average.f 中的实际 arg NUMS 是 real 类型

根据 法特切克, 程序包含变量,这些变量可以在它们被使用之前使用
分配了一个初始值,以及不需要的变量。 法特切克 还警告
整数商已转换为实数的用户。 这可以帮助用户
捕获意外的舍入错误。 由于 -符号表 国旗被给予, 法特切克 打印
输出一个包含来自本地模块的标识符及其相应数据类型的表
和维数。最后, 法特切克 警告未使用函数 COMPAV
使用正确类型的参数。

法特切克的帮助,我们可以调试程序。 我们可以看到有以下
错误:

1. SUM 和 COUNT 在进行除法之前应该已经转换为实数。

2. SUM在进入循环之前应该已经初始化为0。

3. AVG 计算后从未打印出来。

4. NUMS 应该被声明为 INTEGER 而不是 REAL。

我们还看到应该在函数 COMPAV 中将 I 而不是 J 声明为 INTEGER。 还,
在程序 AVENUM 中,MAXNOS 未声明为 INTEGER,COMPAV 也未声明为 REAL。 这些不是
错误,但它们可能表示粗心。 碰巧的是,这些的默认类型
变量与预期类型一致。

这是更正后的程序,以及运行时的输出:

作者:迈克·迈尔斯和露西娅·斯帕格诺洛
日期:8 年 1989 月 XNUMX 日
C
C 变量:
C SCORE -> 一组测试分数
C SUM -> 考试成绩总和
C COUNT -> 读入的分数计数器
CI -> 循环计数器
C
实函数COMPAV(分数,计数)
整数和,计数,我,SCORE(5)
C
总和 = 0
做 30 I = 1, 计数
总和 = 总和 + 分数(一)
30 继续
COMPAV = 浮点数(总和)/浮点数(计数)
结束
C
C
程序大道
C
C主程序
C
作者:洛伊丝·比格比
日期:15 年 1990 月 XNUMX 日
C
C 变量:
C MAXNOS -> 输入值的最大数量
C NUMS -> 数字数组
C COUNT -> 输入值的确切数量
C AVG -> COMPAV 返回的平均值
CI -> 循环计数器
C
C
整数最大值
参数(MAXNOS=5)
整数 I, NUMS(MAXNOS), 计数
真正的 AVG,COMPAV
计数 = 0
做 80 I = 1,MAXNOS
读取 (5,*,END=100) NUMS(I)
计数 = 计数 + 1
80 继续
100 AVG = COMPAV (NUMS, COUNT)
WRITE(6,*) '平均 =',AVG
结束
$ 运行平均值
70
90
85

平均 = 81.66666
$

法特切克的帮助,我们的计划是成功的!

口译 OUTPUT


发来的消息 法特切克 不仅包括语法错误,还包括警告和
有关 Fortran 合法但可能指示错误或
疏忽。 这些消息中的大多数可以通过命令行选项关闭。 哪个
选项控制每条消息取决于被警告的条件的性质。
请参阅前几节中对命令行标志的描述,以及单个
下面的消息。 每条消息都以一个单词或短语为前缀,表明其性质
病情及其严重程度。

“错误”表示语法错误。 最简单的语法错误是印刷错误
错误,例如不平衡的括号或关键字的拼写错误。 这类
错误被解析器捕获并出现描述“解析错误”或“语法”
错误''(取决于解析器生成器的版本以及它是否是 GNU 野牛 or
UNIX 雅克)。 无法抑制此类错误消息。 请注意,这种类型的
错误通常意味着 法特切克 没有正确解释错误所在的语句
发生,因此其后续检查操作将受到影响。 你应该
在继续解释其他消息之前消除所有语法错误 法特切克
给人。

``警告:非标准语法'' 表示 Fortran 的扩展 法特切克 支持
但这不符合 Fortran 77 标准。那些扩展 法特切克 接受
在下面的扩展部分中进行了描述。 一个例子是 DO ... ENDDO
建造。 如果程序使用这些扩展,将根据以下内容给出警告
规范下的 -f77 环境。 默认行为是不发出警告。

“警告”在其他情况下是指可疑但可能或可能不是的情况
编程错误。 这些条件通常在标准下是合法的。 有些是
非法但不属于语法错误的标题。 使用错误就是一个例子。
这些是指变量在被分配之前可能被使用的可能性
值(通常是错误),或者声明了变量但从未使用过(无害但
可能表示粗心)。 检查使用错误的数量由
-用法 flag,默认情况下指定最大检查量。

截断警告涵盖了可能无意中丢失准确性的情况,例如
例如,将双精度值分配给实变量。 这些警告是
由...控制 -截断 设置,默认开启。

``Nonportable usage'' 警告某些编译器可能不接受的某些功能
即使它不违反 Fortran 77 标准,或者可能导致程序
在不同的平台上表现不同。 例如,等价实数和
整数变量通常是一种不可移植的做法。 使用扩展名
当然,标准语言是不可移​​植性的另一个来源,但这被处理为
一个单独的案例。 要检查程序的真正可移植性, -可移植性
-f77 应该使用标志。 默认情况下,它们都处于关闭状态。 这 -字大小 设置是
仅用于检查依赖于特定机器的非便携用法
字号。

“可能具有误导性的外观”用于可能并不意味着什么的法律结构
乍一看,它们似乎意味着。例如,Fortran 对空格不敏感,
变量名中有多余的空格或关键字和关键字之间没有空格
变量会向读者​​传达错误的印象。 这些消息可以被禁止
通过关闭 -漂亮 标志,默认开启。

处理完所有文件后给出的其他消息,与
模块之间的协议,不要使用“警告”这个词,但通常属于那个
类别。示例包括不同类型的对应变量之间的类型不匹配
COMMON 块声明,或子程序的虚拟参数和实际参数之间。 这些
警告由控制 -共同-参数 分别设置。 默认情况下
两者都设置为最大严格的检查。

关于通常无害的情况的另一组警告是指以下情况:
作为子程序参数传递的变量的数组属性在两者之间不同
例行公事。 例如,一个数组元素可能被传递给一个子程序,该子程序需要一个
整个数组。 这是处理单行或单列的常用技术
二维数组。 但是,它也可能表示编程错误。 这 -大批
设置允许用户调整用于检查的严格程度
实际和虚拟数组参数之间的一种协议。 默认情况下,严格性是
最大。

``Oops'' 表示一个技术问题,意思是一个错误 法特切克 或者它的
已超出资源。

语法错误消息和警告包括文件名以及行号和
列号。 法特切克 对于这些错误的出现有两种不同的选择
消息。 如果 -新手 生效,这是默认值,消息采用样式
接近普通英语。 (在默认样式中,文件名不打印在消息中
如果在程序的主体内 -list 有效。)另一种错误信息
被选中 - 新手 选项。 在这种风格中,消息的外观是
类似于 UNIX 皮棉 程序。

法特切克 仍然对某些类型的语法错误视而不见。最重要的两个是
详细检查 FORMAT 语句,以及几乎所有与控制有关的内容
通过 IF、DO 和 GOTO 语句的执行流程:即正确的控制嵌套
结构,开头语句的匹配,例如 IF ... THEN 与结束语句
如 ENDIF,以及正确使用语句标签(数字)。 大多数编译器会
捕捉这些错误。 有关更详细的讨论,请参阅限制部分。

If 法特切克 当编译器没有时给你一个语法错误消息,这可能是因为
您的程序包含编译器接受的标准 Fortran 扩展
但不是由 法特切克. (请参阅扩展部分。)在 VAX/VMS 系统上,您可以使用
编译器选项 /STANDARD 使编译器只接受标准 Fortran。 在
大多数 UNIX 或类 UNIX 系统,这可以通过设置标志来完成 -安西。

很多人发来的消息 法特切克 是不言自明的。 那些需要一些
下面按字母顺序列出了其他说明。

相当常见 阻止 产品名称: data 类型 不匹配 at 位置 n
n-COMMON 块中的变量在两个不同的数据类型中不同
COMMON 块的声明。 默认情况下 (-共同 严格等级 3), 法特切克
对 COMMON 块非常挑剔:其中列出的变量必须完全匹配
按数据类型和数组维度。 也就是说,合法的声明对
不同的模块:
普通 /COM1/ A,B

普通 /COM1/ A(2)
会引发 法特切克 给出严格级别的警告 3. 这两个声明
在 Fortran 中是合法的,因为它们都声明了两个实变量。 在严格
级别 1 或 2,在此示例中不会给出警告,但警告将是
如果存在数据类型不匹配,例如,如果 B 被声明为 INTEGER,则给出。
受控制于 -共同 设置。

相当常见 阻止 您的姓名 具有 data 类型 以下 data 类型
一些编译器要求对齐多字节项目,以便每个项目从一个
地址是项目大小的倍数。 因此,如果短路(例如单
精度实数)项后跟一个长(例如双精度实数)项,
后者可能未正确对齐。 受控制于 -可移植性=共同对齐
选项。

相当常见 阻止 您的姓名 具有 字符 非字符 变量
ANSI 标准要求,如果 COMMON 块中的任何变量是类型
CHARACTER,那么同一个 COMMON 块中的所有其他变量也必须是类型
特点。 受控制于 -f77=混合通用 选项。

相当常见 阻止 产品名称: 变化 长度
针对 -共同 设置级别 2,此消息意味着一个 COMMON 块被声明为
在两个不同的子程序中有不同的字数。 一个字就是数量
一个整数或实数变量占用的存储空间。 为了 -共同 设置级别 3,
这意味着两个声明具有不同数量的变量,其中一个
任何大小的数组都被视为一个变量。 这不一定是错误,
但它可能表明其中一个列表中缺少一个变量。 注意
根据 Fortran 77 标准,对于命名的 COMMON 块(但
非空白 COMMON) 在不同的声明中的字数不同
模块。给予 -共同 设置 2 或 3。

错误: 形成 逻辑/关系 操作者 or 常数

错误: 形成 真实 常数
语法分析器找到了一个特殊词的开头,该词的开头和
以句点结尾(例如 .EQ.),或数字常量的开头,但没有
成功地找到了一个完整的那种物品。

错误: 不能 be 可调整的 尺寸 in 模块 您的姓名
字符变量不能以星号的大小声明
括号,除非它是一个伪参数、参数或函数名
在模块中定义。

错误: 不能 be 声明 in 节省 声明 in 模块 您的姓名
在 SAVE 语句中只能声明局部变量和公共块。

错误: 没有 Free Introduction 声明
法特切克 将检测被忽略或绕过的语句,因为没有
可预见的声明途径。 例如,一个未编号的语句(一个
没有语句标签的语句),紧跟在 GOTO 语句之后,
不可能被执行。

错误: 解析 错误
这意味着将 Fortran 程序分析为表达式的解析器,
陈述等,一直无法为某些部分找到有效的解释
程序中的一个语句。 如果您的编译器在
同一个地方,最常见的解释是:(1)使用对ANSI的扩展
无法识别的标准 Fortran 法特切克, 或 (2) 语句要求
法特切克 用途(参见错误部分)。

注意:此消息意味着受影响的语句未被解释。
因此,有可能 法特切克的后续处理会出错,如果
它取决于受此语句影响的任何事项(类型声明等)。

错误: 句法 错误
这与“错误:解析错误”相同(见上文)。 如果您的
版本的 法特切克 是使用 UNIX 构建的 雅克 解析器生成器而不是 GNU
野牛.

标识符 ,那恭喜你, 不能 独特 in 第一 字符
警告两个长度超过 6 个字符的标识符在
前 6 个字符。 这是为了可移植性:它们可能不被认为是不同的
由一些编译器。 受控制于 -六字符 选项。

非便携式 用法: 论点 精确 五月 不能 be 正确 固有 功能
传递给内部函数的参数的精度可能不正确
一些电脑。 当以显式精度声明的数值变量时发出
(例如 REAL*8 X)被传递给特定的内在函数(例如 DSQRT(X))。
受控制于 -便携性=混合尺寸-字大小.

非便携式 用法: 字符 常数/变量 长度 超过 255
一些编译器不支持长度超过 255 个字符的字符串。
受控制于 -可移植性=长字符串.

非便携式 用法: 文件 包含 标签
法特切克 将制表符扩展为等价于空格,直到下一列
8 的倍数。一些编译器对制表符的处理方式不同,也有可能
通过电子邮件发送的文件将以某种方式将制表符转换为空白。
因此,包含选项卡的文件在被编译后可能无法正确编译
转移。 法特切克 如果选项卡仅出现在评论中,则不提供此消息
或字符常量。 受控制于 -便携性=标签.

非便携式 用法: 非整数 DO 循环 界限
仅当 DO 索引和边界为非整数时才会发出此警告。 用于
DO 语句中的非整数数量可能会导致意外错误,或者不同
由于舍入效应,不同机器上的结果。 受控制于
-可移植性=真实.

Naučte Narozeninový dort - krok za krokem on-line kreslení tutoriál na narozeninovém dortu. Zdarma poučit pro karikatury, by CuteKittenLoveX na drawingnow.com. it is an 排列 不能 声明
此消息附加到与函数调用相关的警告或
参数类型不匹配,可能存在看起来是
函数实际上是一个数组。 如果程序员忘记标注尺寸
一个数组,对数组的引用将被解释为函数调用。
如果有问题的名称出现在 EXTERNAL 或
内在声明。 由控制 -新手 选项。

Naučte Narozeninový dort - krok za krokem on-line kreslení tutoriál na narozeninovém dortu. Zdarma poučit pro karikatury, by CuteKittenLoveX na drawingnow.com. 误导 出现: 字符 过去 72
正在以标准值的语句字段宽度处理程序
72,并且在第 72 列之后发现了一些非空白字符。在这种情况下,
法特切克 不处理超过第 72 列的字符,并通知用户
该陈述可能没有它看起来具有的含义。 这些
程序员可能希望字符是重要的,但它们将是
被编译器忽略。 受控制于 -pretty=长线.

Naučte Narozeninový dort - krok za krokem on-line kreslení tutoriál na narozeninovém dortu. Zdarma poučit pro karikatury, by CuteKittenLoveX na drawingnow.com. 误导 出现: 相当常见 阻止 声明 in 更多 一种 声明
这样的多重声明是合法的,并且与继续声明具有相同的效力
块的原始声明。 只有当这两个
声明由一个或多个中间语句分隔。 受控制于
-pretty=多种常见.

Naučte Narozeninový dort - krok za krokem on-line kreslení tutoriál na narozeninovém dortu. Zdarma poučit pro karikatury, by CuteKittenLoveX na drawingnow.com. 误导 出现: 延续 如下 评论 or 空白 线
法特切克 发出此警告消息以提醒用户继续
语句中穿插着注释,容易被忽略。 受控制于
-漂亮=继续.

Naučte Narozeninový dort - krok za krokem on-line kreslení tutoriál na narozeninovém dortu. Zdarma poučit pro karikatury, by CuteKittenLoveX na drawingnow.com. 误导 出现: 无关的 括弧
警告表达式中变量本身的括号。 当一个
带括号的变量作为参数传递给子程序,它被视为
一个表达式,而不是一个变量,其值可以被调用的例程修改。
受控制于 -漂亮=括号.

子程序 产品名称: 论点 data 类型 不匹配 at 位置 n
子程序的 n-th 实际参数(在 CALL 或函数的使用中)
数据类型或精度与 n-th 虚拟参数(在 SUBROUTINE 或
功能声明)。 例如,如果用户定义了一个子程序
子程序 SUBA(X)
真正的 X
和其他地方调用 SUBA 通过
拨打 苏巴(2)
法特切克 将检测错误。 这里的原因是数字 2 是整数,
不是真的。 用户应该写
呼叫 SUBA(2.0)

检查作为子程序的参数时, 法特切克 必须能够确定
无论是函数还是子程序。 使用的规则 法特切克 这样做是
如下:如果子程序除了作为实际参数传递之外,还
在同一模块的其他地方直接调用,则其类型由
用法。 如果不是,那么如果子程序的名称没有出现在显式
类型声明,假定为子程序; 如果它是显式输入的,它是
作为一个函数。 因此,作为实际参数传递的子例程只需要
由调用模块中的 EXTERNAL 语句声明,而函数必须
也应显式键入以避免生成此错误消息。
受控制于 -参数 设置。

子程序 产品名称: 论点 排列性 不匹配 at 位置 n
与上述情况类似,但子程序哑元参数不同于
对应的实际参数的维数或数量
元素。 受控制于 -大批 连同 -参数 设置。

子程序 产品名称: 论点 不匹配 at 位置 n
字符虚拟参数大于相应的实际参数,或者
Hollerith 虚拟参数大于相应的实际参数。
受控制于 -参数 设置。

子程序 产品名称: 论点 用法 不匹配
法特切克 检测子程序使用参数的方式之间可能存在的冲突
以及将参数提供给子程序的方式。 冲突可以
是两种类型之一,如下所述。

ARG is 修改的, 实际 ARG is 常量 or 表达式
伪参数是在 SUBROUTINE 或 FUNCTION 语句中命名的参数,并且
在子程序中使用。 实际参数是传递给
调用者的子程序或函数。 法特切克 是说一个虚拟的论点是
被子程序修改,意味着它的值在调用中被改变了
模块。 对应的实际参数不应该是常量或表达式,
而是可以合法分配的变量或数组元素。
由控制 -usage=arg-const-修改 选项。

ARG 用过的 before 组, 实际 ARG 不能
这里可以在子程序中使用一个虚拟参数,然后再分配一个值
由子程序给它。 对应的实际参数应该有一个值
在调用子程序之前由调用者分配给它。 由控制
-usage=var-未初始化 选项。

此警告不受 -参数 设置。

子程序 您的姓名 调用 不一致
这里的不匹配是在使用的子程序本身的数据类型和作为
定义。 例如,如果用户声明
整数函数计数(A)
并在另一个模块中调用 COUNT 作为
N = 计数(一个)
在不声明其数据类型的情况下,它将默认为真实类型,基于第一个
其名称的字母。 调用模块应该包含声明
整数计数

给予 -参数 设置 2 或 3。

子程序 产品名称: 变化 长度 论点 清单:
发现虚拟自变量(参数)的数量不一致
子程序在调用中具有和实际参数的数量。
法特切克 跟踪子程序的所有调用(CALL 语句和
使用函数的表达式)并将它们与
源代码中其他地方的子程序。 Fortran 编译器通常不会
捕获此类错误。 给予 -参数 设置 1 或 3。

变量 不能 声明。 Type 具有 隐含地 定义
打印模块的符号表时, 法特切克 将用星号标记全部
未显式键入的标识符,将显示之前的数据类型
通过隐式类型分配。 这为希望
按照 Pascal 或其他一些语言的要求声明所有变量。 这
消息仅在 -符号表 选项生效。 或者,使用
-宣布 如果要获取所有未声明变量的列表,请标记。

变量 声明 但是 决不要 引用
检测在您的程序中声明但从未使用过的任何标识符,
要么被分配一个值,要么访问它们的值。 COMMON 中的变量
被排除在外。 由控制 -usage=var-未使用 选项。

变量 但是 决不要 用过的
法特切克 当变量被赋值时会通知用户,但是
变量没有在程序中以其他方式使用。 通常这是由
监督。 由控制 -usage=var-set-未使用 选项。

变量 用过的 before
此消息表明标识符用于在其之前计算一个值
初始化。 这种用法可能会导致计算出不正确的值,因为
其初始值不受控制。 由控制 -usage=var-未初始化
选项。

变量 五月 be 用过的 before
与设置前使用的类似,除了 法特切克 无法确定其状态
确定无疑。 法特切克 假设变量可以在设置之前使用,如果第一个
变量的使用发生在程序文本中对其赋值之前。
由控制 -usage=var-未初始化 选项。

警告: DO 指数 is 不能 整数
仅当 DO 边界为整数时才给出此警告,但 DO 索引不是。
它可能表示未能将索引声明为整数。 受控制于
-截断=实做 选项。

警告: 整数 表达式 ... 转换 真实
两个整数的商得到一个整数类型的结果,其中
小数部分被删除。 如果这样一个涉及除法的整数表达式是
后来转换为真正的数据类型,可能是真正的类型除法
故意的。 受控制于 -truncation=int-div-实数 选项。

警告: 整数 表达式 ... 用过的 in 指数
两个整数的商得到一个整数类型的结果,其中
小数部分被删除。 如果使用这样的整数表达式作为指数,
很可能打算进行真正的类型划分。 受控制于
-截断=int-div-指数 选项。

警告: 您的姓名 不能 ,尤其是 返回 遇到
Fortran 中的函数返回值的方式是将值分配给
函数的名称。 此消息表明该功能未分配
找到 RETURN 语句的点之前的值。 因此它是
该函数可能会返回未定义的值。

警告: 非标 句法: 可调整的 尺寸 不能 be 级联的 点击此处
Fortran 77 标准(第 6.2.2 节)禁止连接字符变量
其大小是括号中的星号,赋值语句除外。
受控制于 -f77=混合表达式.

警告: 非标 句法 : 显著 字符 过去 72
此警告是在 -f77=长线 设置如果 -列 设置有
用于增加语句字段宽度,并且语句具有意义
程序文本超出第 72 列。标准 Fortran 忽略这些列中的所有文本,
但有些编译器没有。 因此,该程序可能会被不同地对待
不同的编译器。

警告: 非标 句法 : 个人陈述 输出 of 秩序。
法特切克 将检测超出为 ANSI 指定的顺序的语句
标准 Fortran 77。表 1 说明了允许的语句序列
Fortran 语言。 无序的陈述仍然由
法特切克, 以防止错误消息的“级联”。 序列计数器也是
回滚以防止重复类似块的错误消息
陈述。 由控制 -f77=语句顺序 选项。

-------------------------------------------------- ------
| | 隐含的
| 参数 |---------
| | 其他规格
格式 |---------------|----------
和 | | 语句功能
条目 | 数据 |------------------
| | 可执行的
-------------------------------------------------- ------

表1

警告: 可能 by
在进行除法的任何地方都会打印出此消息(除
持续的)。 使用它来帮助定位运行时除以零问题。 受控
by -分配 选项。

警告: 真实 被截断 整数
法特切克 检测到一个赋值语句,该语句在
对,但在左边是一个整数变量。 实际值的小数部分
会迷路。 如果您使用显式将实数表达式转换为整数
INT 或 NINT 内在函数,不会打印警告。 类似的消息是
如果将双精度表达式分配给单精度,则打印
变量等。由控制 -截断=降级 选项。

警告: 下标 is 不能 整数
由于数组下标通常是整数,因此使用非整数
这里的表达式可能表示错误。 受控制于 -截断=实下标
选项。

警告: 不明 固有 功能
此消息警告用户在 INTRINSIC 语句中声明的名称是
不为人知 法特切克. 可能它是一个非标准的内在函数,所以
程序将不可移植。 该函数将由 法特切克 作为用户——
定义的功能。 任何选项都不会抑制此警告,因为它会影响
法特切克的节目分析。 然而,如果内在函数是在其中之一
支持的非标准内在函数集,您可以使用 -固有的 设置
原因 法特切克 认出它。

限制 AND EXTENSIONS


法特切克 接受 ANSI 标准 Fortran-77 程序,但有一些小的限制和众多
常见的扩展。

限制:
语句函数中的伪参数被视为普通变量
该程序。 也就是说,它们的作用域是整个子程序,而不仅仅是语句
功能定义。

对 FORMAT 语句的检查很松懈,容忍缺少分隔符(逗号、
等)在标准要求的地方的格式描述符之间,以及
允许 .d 描述符上不应该有它们的字段。 它确实警告下
-f77=格式编辑描述 关于非标准描述符类型(如 O),并支持
扩展。

有一些语法扩展和 Fortran 90 元素 法特切克 接受
但很少检查。 例如,指针的使用(是否
非标准 Cray 语法或 Fortran 90 语法)除了 for set 外不检查
和使用状态。 希望有一天能进行更彻底的检查
已实现,但现在用户应该考虑接受这些句法
功能只是为了方便检查代码的其他方面
包含它们。 有关哪些功能的详细信息,请参阅扩展部分
接受但未完全检查。

如果用户提供的子程序与非标准内在程序之一具有相同的名称
识别的功能 法特切克, 它必须在 EXTERNAL 语句中声明
任何调用它的例程。 否则正常检查
赋予内在功能。 由于非标准内在函数不是
标准,Fortran 77 标准不需要此 EXTERNAL 语句。
使用 -内在=无 设置,识别大多数非标准内在函数
(除了那些需要支持双复数数据类型的)可以转
离开。 请参阅支持的非标准内在函数列表
的讨论 -固有的 上面设置。

扩展:
如果出现以下情况,所有这些扩展名(小写字符除外)都会生成警告
相关的 -f77 选项已设置。 下面列出的一些扩展是
Fortran-90 标准。 这些由符号 (F90) 表示。

允许使用制表符,并将其翻译成对应于制表符的等效空白
每 8 列停止一次。 该标准不识别标签。 请注意,有些
编译器允许制表符,但以不同的方式对待它们。 为 DEC 定义的处理
FORTRAN 可以使用 -source=dec-tab 设置。

字符串可以用引号或撇号分隔。 两个序列
分隔符被解释为单个嵌入的分隔符。
(F90)

字符串可能包含 UNIX 样式的反斜杠转义序列。 他们会
如此解释,如果 -source=unix-反斜杠 给出了设置。 否则
反斜杠字符将被视为普通打印字符。

源代码可以是 Fortran 90 自由格式或传统的固定格式。
(F90)

允许使用分号作为语句分隔符。 (F90)

允许使用小写字符,并在内部转换为大写
字符串除外。 该标准仅指定大写字母,但在
注释和字符串。 (F90)

根据 Fortran 77 标准,允许使用 Hollerith 常数,
附录 C。它们不应在表达式中使用,或与数据类型混淆
字符。

第 1 列中的字母“D”(大写或小写)被视为
评论。没有选项可以将这些行视为语句而不是注释。

语句可能超过 72 列,前提是设置 -列
用于增加限制。 根据标准,第 73 列中的所有文本
到 80 被忽略,任何行都不能超过 80 列。

变量名可能超过六个字符。 该标准规定了六
最大值。 法特切克 允许名称最长为 31 个字符 (F90)。

变量名可能包含下划线和美元符号(或其他非字母
由指定的字符 -标识符字符 选项)。 这些字符是
与字母相同。 变量开头的默认类型
与这些字符是真实的。 在指定范围的隐式类型语句中
字符,美元符号跟在 Z 后面,后面跟下划线。 (任何其他
用户定义的字符被视为与美元符号相同。) Fortran 90
允许在变量名中使用下划线。

UNIX 版本允许存在预处理器指令,即行
以井号 (#) 开头。 这些被视为注释,#line 除外
指令,被解释,用于设置行号和源
警告和错误消息的文件名。 请注意,#include 指令不是
由...处理 法特切克. 使用它们来包含源文件的程序应该是
在输入之前通过预处理器 法特切克。 如下所述,
法特切克 确实会处理具有不同语法的 INCLUDE 语句。 一个
可选程序, ftp(1L)(单独提供)提供预处理
正确处理 INCLUDE 文件。

Fortran 90 DO ... ENDDO 控制结构是允许的。 循环和退出
声明被接受。 所有这些都可能有一个可选的 do-construct 名称,但是
不检查构造名称的一致性。 (F90)

接受 Fortran 90 SELECT CASE 构造。 (F90)

IF、THEN、ELSE、ENDIF 和 SELECT CASE 也接受构造名称
陈述。 (F90)

允许 ACCEPT 和 TYPE 语句(用于终端 I/O),具有相同的
语法为 PRINT。

所谓的“Cray 指针”语法是可以容忍的。 它不一样
Fortran 90 POINTER 语句。 没有对其他声明进行真正的检查
比基本语法。 这个语句的形式是
指针 (指针, ) [,(指针, )]
指针变量的数据类型为 INTEGER *4。 使用情况检查
指针变量被抑制,因为实际上它们是间接访问的
通过指针。

接受以下 Fortran 90 指针相关语法:ALLOCATABLE,
POINTER 和 TARGET 语句以及类型声明中的相同属性;
ALLOCATE、DEALLOCATE 和 NULLIFY 可执行语句; 使用指针赋值
=> 运算符; 以及内在函数 ALLOCATED 和 ASSOCIATED。 小语义
指针变量和操作的检查超出了基本设置和使用范围
地位。 例如,没有检查悬空指针等错误,
或使用未分配的数组。

语句可以有任意数量的续行。 Fortran 77 和 Fortran
90 个标准最多允许 19 个固定源形式。 Fortran 90 标准
最多允许 39 个免费源格式。

由标点符号组成的关系(比较)运算符,即:< <= == /= > >=
被允许。 (F90)

允许以感叹号开头的内联注释。 (F90)

支持名称列表 I/O。 语法与 Fortran 90 中的相同。

FORMAT 语句可以包含一个美元符号来表示禁止运输-
返回。 用尖括号括起来的整数表达式可以在任何地方使用
Fortran 77 标准允许使用整数常量的 FORMAT 语句(除了
为 Hollerith 常数的长度),为重复提供运行时值
规格或字段宽度。

I/O 语句中允许使用非标准关键字,对应于 VMS 中的关键字
复式。

支持 IMPLICIT NONE 语句。 这句话的意思是
所有变量都必须明确声明其数据类型。 而不是标记
出现带有语法错误消息的此类变量, 法特切克 等到
模块的末尾,然后打印出所有未声明变量的列表,因为它
-宣布 选项。 (F90)

数据类型 INTEGER、REAL、COMPLEX 和 LOGICAL 允许有一个可选的
类型声明中的精度规范。 例如,REAL*8 表示 8 字节
浮点数据类型。 不一定要考虑 REAL*8 数据类型
相当于双精度,取决于 -字大小 环境。 Fortran 77
标准仅允许为 CHARACTER 数据指定长度。

法特切克 支持复数的 DOUBLE COMPLEX 类型规范,其
实部和虚部是双精度的。混合模式算术涉及
具有双精度实数据的单精度复数,禁止在
标准,产生双复数结果。

接受组合类型声明和类似数据语句的初始值设定项。
它们具有标准 Fortran 77 类型声明的形式,后跟一个斜杠-
定界的常量列表,类似于 DATA 语句中使用的常量。 一个例子
语法是
整数 N / 100 /
Fortran 90 没有采用这种混蛋形式的初始化声明。这样的
声明应使用下述标准格式编写,即
被接受 法特切克.

Fortran 90 基于属性的类型声明的支持有限。 这
声明风格的区别在于在声明之间使用双冒号 (::)
属性列表和声明的变量列表。 支持的功能可能
对于新手程序员来说已经足够了,但对于专业的程序员来说还不够
质量 Fortran 90 程序。 我希望将来增加对更多功能的支持
发布。 我邀请志愿者协助完成这项任务。 查看 ToDo 文件
源代码分发的详细信息。 目前接受的属性,除了
所有常用的数据类型有 DIMENSION、EXTERNAL、INTRINSIC、PARAMETER 和 SAVE。
新的声明形式还允许为变量赋值
宣布。 目前,(LEN=值) 指定字符长度的形式也是
公认。 种类规格,使用 (KIND=值) 被解析但不是
已处理:所有种类都被视为默认种类。 此外,几乎没有检查
这些声明超出了基本语法。

提供了许多常见的非标准内在函数。 见
的讨论 -固有的 有关功能列表以及如何控制哪些功能
认可。

对于那些采用数组或数组的非标准内在函数,参数检查并不严格
混合参数类型。

法特切克 允许 INCLUDE 语句,这会导致包含
给定的文件。 语法是
包括 '文件名'
这与 Fortran 90 兼容。如果 -source=vms-包括 给出了选项,
法特切克 遵循关于此声明的 VMS 约定:它假设
默认扩展名 。对于 如果没有给出文件扩展名,并且允许
修饰符 /[NO]LIST 跟在文件名后面,控制包含的列表
文件。 不支持包含 VMS 文本模块。

在与包含文件中包含的项目相关的诊断输出中,
错误由它在包含文件中的位置和在
包含文件的父文件。

法特切克 接受没有括号的 PARAMETER 语句。 这些将被警告
关于如果 -f77=参数-noparen 标志给出。

法特切克 接受涉及内在函数的 PARAMETER 定义和
用非整数指数取幂。 这两种情况都被禁止
Fortran 77 标准,如果 -f77=参数-内在
给出。 如果内在函数值是编译时整数常量,
法特切克 会评估它。 这允许更好地检查参数是否用于
声明数组大小。 Fortran 90 允许在 PARAMETER 中使用内部函数
定义。

评估的内在函数是:

ABS IABS DIM IDIM 最大
MAX0 MIN MIN0 MOD 符号
ISIGN LEN ICHAR 指数

仅当参数为整数时才评估整数参数的函数
常量表达式。 (这些可能涉及整数常量、参数和
评估的内在函数。)如果函数 LEN 的参数是
一个只包含字符常量和长度不是长度的变量的表达式
可调节的。 函数 ICHAR 和 INDEX 仅在参数为
字符常量。 法特切克 如果它需要一些值,则给出警告
未评估的内在函数。

NEW 特点


以下是从 3.2 版到 3.3 版的更改:

1. 前端重写了无限前瞻,消除了长期存在的bug
这导致对歧义未解决的陈述的错误解释
第一行。

2. -mkhtml 选项现在在 MS-DOS 版本中可用。

3. 增加了对 Fortran 90 指针相关语法的支持:ALLOCATE、DEALLOCATE 和 NULLIFY
陈述; 类型声明中的 ALLOCATABLE、POINTER 和 TARGET 属性; 这
指针赋值运算符 => 和内部函数 ALLOCATED 和 ASSOCIATED; 和
延迟形状数组声明。 目前这些新的语法特征被接受
但没有正确检查。 此功能由 Robert Landrito 添加。

4. -f77-f90 指针 选项控制有关“Cray 指针”的警告已
重命名为 指针。 该 -f77=指针 选项现在改为控制警告
包含 Fortran 90 指针相关语法的代码。

5.重新实现 -mkhtml 处理,因此现在在包含的源文件上要快得多
许多例行公事。

6.更改了测试目录的排列,不再需要修改
分发以运行测试套件(检查.bat) 在 MS-DOS 下。

7. 修复设置名称缩写为时,命令行读取数值设置的BUG
3字符。

8. 修复 GOTO 引用带标签的 END 语句导致虚假警告的错误
当 END 之前的语句是 FORMAT 时。

9. 新旗帜 -f77=字符 控制有关 Fortran 77 扩展的警告
字符数据类型。 伴随这个新标志的是对 Fortran 90 规则的支持
评估为零或负长度的字符变量声明,允许
它们并将负长度值视为零。

10. 修正最后一条 END 语句后打印注释和空行的小错误
in -list 模式。

通过 onworks.net 服务在线使用 ftnchek


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    括号
    括号
    Brackets 是一个免费的现代开源软件
    专为 Web 打造的文本编辑器
    发展。 用 HTML、CSS 和
    带有专注可视化工具的 JavaScript 和
    准备...
    下载支架
  • 2
    免费的pascal编译器
    免费的pascal编译器
    一个 32/64/16 位 Pascal 编译器,用于
    Win32/64/CE、Linux、Mac OS X/iOS、
    Android、FreeBSD、OS/2、Game Boy
    Advance、任天堂 NDS 和 DOS;
    语义兼容...
    下载免费的 Pascal 编译器
  • 3
    佳能 EOS 数码信息
    佳能 EOS 数码信息
    佳能没有快门计数
    包含在一个的EXIF信息中
    图像文件,而不是尼康和
    宾得。 没有基于佳能的官方
    应用 ...
    下载佳能 EOS 数码信息
  • 4
    EFInd
    EFInd
    rEFInd 是 rEFIt 引导的一个分支
    经理。 像 rEFIt 一样,rEFInd 可以
    自动检测您安装的 EFI 启动
    loaders,它提供了一个漂亮的 GUI
    启动选项菜单...
    下载 rEFInd
  • 5
    快递卢克GSI
    快递卢克GSI
    这个 SourceForge 下载页面是为了
    授权用户下载我构建的源代码
    GSI,基于 phhusson 的伟大
    工作。 我构建了 Android Pie 和
    安卓 1...
    下载 ExpressLuke GSI
  • 6
    音乐播音员
    音乐播音员
    Music Caster 是一个托盘音乐播放器
    可以让您将本地音乐投射到
    Google Cast 设备。 在第一次运行时,
    你需要点击你的箭头
    塔...
    下载音乐播音员
  • 更多 ”

Linux 命令

Ad