当前位置:文档之家› fortran常见错误

fortran常见错误

fortran常见错误
fortran常见错误

FAQ之常见错误

2014-02-02 13:45:35 来源:Fcode研讨团队评论:2点击:4419

本文从编译错误,链接错误,运行时错误,计算结果错误等四个方面介绍了常见的错误及解决思路。适合初学者阅读。

首先应该明确:错误有哪几种?我们当前遇到的是何种错误?

阐述这些问题前,我们先讨论一下常规的应用程序开发的过程:

1>>编写代码,使用一个或多个源代码文件。

2>>对第一步的每一个源代码文件执行编译操作。得到一个或若干个目标代码。

3>>将目标代码,运行时库(Run-time Library)和其他使用到的函数库链接起来。得到一个可执行文件(EXE 或其他)

4>>编写程序的说明书,必要的(输入)数据文件

5>>将上述得到的结果发布给用户。(发布的方式可以是刻录成光盘,销售,放在网站上供别人下载,或者其他)

6>>用户得到程序后,运行,输入数据,得到计算结果。

对于很多 Fortran 程序员来说,可能用户就是自己,也可能仅仅是自己教研室的同事同学。所以第4,5,6步骤很多时候不明显。而如果使用集成开发环境(IDE)进行开发,第1,2,3步骤又可以一键完成。因此,很多初学者就认为,写程序就是:输入代码,运行,得到结果。这样的理解太狭义。

不管我们面对什么使用者来写代码,程序开发应该是上述的过程。我们的编译器,编译环境,也是为这个过程而设计的。

于是,我们将错误分为四种:

一. 编译错误(发生在第2步)

编译错误,一般是源代码书写格式不正确,不符合语法要求。

二. 链接错误(发生在第3步)

链接错误,一般是源代码结构不完整,运行时库或函数库使用不合理。

三. 运行时错误(发生在第6步)

运行时错误,一般是执行代码时,遇到了事先未料及的错误。比如内存不足了,磁盘空间不够了,输入文件格式不对了,输出文件写入失败了等等。

四. 计算结果不符合预期(程序代码不规范,或不符合你的设想)

计算结果不符合预期,可能性就很多了。语法与你的想法不一致,超出函数库的适用范围,执行流程控制不当等等。

这四种错误,其排查难度依次增大。也就是,编译错误最容易排查和修改,而计算结果不正确,最让人头疼。

不管是阅读本文,还是在网络上求助,抑或是与其他程序员交流。首先一定要弄清楚,自

己遇到的,是哪一种错误。如你使用的是 IDE 方式开发,具体不知道是第一种还是第二种错误,应该尝试手动编译代码,手动链接程序,看错误发生在哪一步。使用一键 Build 可

能会让初学者搞不清楚。

对于前三种错误,一定要找到错误提示,这对于你解决问题至关重要!

另外需要说明的是,对于同样的错误,不同的编译器给出的提示可能也是不一样的。下面

都以Compaq Visual Fortran 和 Intel Visual Fortran 举例。其他编译器提示应该类似。

一. 编译错误

编译错误经常让初学者感到恐怖,因为动辄几十几百乃至上千个错误。然而实际上,错误

可能并没有那么多。这是因为编译器对代码进行构析,遇到错误后,会严重影响接下来的

分析,导致将本来正确的写法认为是错误。

所以,对于编译错误,一定先解决第一个。然后重新编译,然后再解决新的第一个。直到

顺利编译为止。

编译错误,在 IDE 环境下一般可通过双击切换到错误所在行。在命令行下也会显示错误所在的行数。

Q0001:【CVF】Severe: Invalid argument , Error executing df.exe

编译错误提示类似于:

f90: Severe: Invalid argument

... file is 'C:\?D??\fcode.f90'

Error executing df.exe

原因:这是由于 Compaq Visual Fortran 不支持中文路径下的源代码文件。源代码文件名作

为参数(argument)传递给编译器(df.exe)被认为是非法的(Invalid 因为含有中文)。

解决:将源代码文件放入英文路径下重新编译。

Q0002:【CVF / IVF 】Error spawning df.exe 或 The Fortran compiler (ifort.exe) cannot be found. 原因:这多半是由于编译器安装不合适造成的,或者安装时未设置合理的环境变量。执行

编译器( df.exe 或 ifort.exe ) 失败或根本找不到。

解决:重新安装编译器(win7/win8 下请不要使用 CVF),注意安装时如选择是否设置环

境变量,选Yes。

Q0003:【CVF / IVF 】Unrecognized token '?' skipped

原因:代码中出现了编译器无法识别的字符。

解决:首先检查自己的源代码文件是否为 ANSI 编码,而不是Unicode编码或其他。然后

检查错误行,是否存在特殊字符?包括除字符串常量和注释行之外的中文。尤其注意括号,逗号,冒号是否是半角?

Q0004:【CVF / IVF 】Syntax error

原因:语法错误

解决:语法错误的可能性很多,但凡违反语法规定的写法,都可能出这个错误。认真检查

错误行,某些编译器可能会给出更详细的错误提示,翻译一下会更便于查找错误。

Q0005:【CVF / IVF 】Unbalanced parentheses

原因:括号不成对出现,例如 a(3))

解决:检查错误行的括号,确保成对出现。

Q0006:【CVF / IVF 】An unterminated block exists.

原因:If 或 Do 等区块没有结束。

解决:检查 If 是否有 EndIf 对应,Do 是否有 End Do 对应

Q0007:【CVF / IVF 】A specification statement cannot appear in the executable section.

原因:声明语句出现在了执行语句中

解决:所有声明语句必须在所有执行语句前面,即先声明所有变量,然后才有执行语句。

调整这些语句的顺序既可。

Q0008:【CVF / IVF 】The type of the actual argument differs from the type of the dummy argument. [SOME].

原因:SOME作为实参,它的的类型与对应的虚参不一致

解决:我们建议所有实参与对应的虚参具有相同的类型,精度,大小和数组上下限。检查

一下被提示的变量,其类型精度是否与虚参一致?尤其是没有使用 Implicit None 的程序单元,默认 IN 规则情况下,容易发生类型不一致。

Q0009:【CVF / IVF 】 Cannot open include file '文件名.inc'

原因:文件名.inc 做为被包含文件,无法打开

解决:

1.检查是否存在文件名.inc;

2.检查文件名.inc 是否在你的工程目录(文件夹);

3.检查该文件是否被隐藏了扩展名,有时候我们看起来是文件名.inc ,其实是文件

名.inc.txt,我建议取消隐藏扩展名设置。方法是打开我的电脑,工具,文件夹选项,查看,取消“隐藏已知文件扩展名”;

4.检查该文件是否是 ANSI 编码,用记事本打开,文件另存为时既可查看编码,请确保是ANSI 的,而不是 unicode,utf-8 等;

Q0010:【CVF / IVF 】 Recommended relationship between field width 'W' and the number of fractional digits 'D' in this edit descriptor is 'W>=D+3'

原因:浮点数格式输出符中,W < D+3。

解决:由于浮点数输出时,需输出至少一位整数,一个小数点,(可能的)一个负号。所以,建议宽度 W 大于小数点后的 D + 3。比如 3.1415,格式为 F6.4,6只比4大2,如果遇

到负数,就会无法输出负号。造成 ****** 出现。

注意,这只是一个警告,如果你确定不会有负数,则可以无需干涉。

同理,对于科学计数法,会有 W>=D+7 的要求。比如 3.1415E+35,格式为 ES10.4,10只比4大6,遇到负号无法输出。

Q0011:【CVF / IVF 】 The statement label ?? is referenced but not defined in this scope.

原因:某语句标号的语句被使用了,但没有定义。比如 goto 100,但没有 100 这句标号的语句。

解决:补齐语句标号语句,或者取消对该标号语句的使用。

二. 链接错误

Q1001: unresolved external symbol _SOME / 无法解析的外部符号 _SOME,该符号在函数_MAIN__ 中被引用

原因:找不到某些函数或子程序。如果这些函数或子程序在函数库中,没有正确被使用。如果 SOME 是数组,可能没有定义为数组,而被编译器误认为是函数。

解决:找到这个函数并添加到工程内,或正确设置函数库并使用,或定义该数组。

Q1002: unresolved external symbol _MAIN__ / 无法解析的外部符号 _MAIN__,该符号在函数 _main 中被引用

原因:找不到主程序。

解决:补充主程序。

Q1003:unresolved external symbol _WinMain@16 / 无法解析的外部符号 _WinMain@16__,该符号在函数 _main 中被引用

原因:找不到 WinMain 主程序。WinMain 是 WinGUI 界面工程所需的函数。

解决:如果你不是刻意的开发windows界面程序,请重新选择 console 工程类型。否则,请补充 WinMain 函数。

Q1004: _MAIN__ already defined in main.obj / _MAIN__ 已经在 main.obj 中定义

原因:MAIN 函数已经在 main.obj 文件中定义过。即,有多个文件中书写了相同名称的函数或主函数。

解决:删除多余的同名函数,或者检查是否重复添加了相同的文件在工程中。

三. 运行时错误

请注意,某些编译器编译后的程序,在发生运行时错误时,会弹出VC++ Runtime Library 的警告框。这是因为这些编译器的 Runtime Library 部分使用了 VC++ 的运行时库。对于这个警告框,基本上得不到有用的信息某些编译器编译后的程序,在发生运行时错误时,会弹出VC++ Runtime Library 的警告框。这是因为这些编译器的 Runtime Library 部分使用

了 VC++ 的运行时库。对于这个警告框,基本上得不到有用的信息。我们应该查看黑

色 console 窗口上的错误提示。

另外,几乎没有程序员可以保证自己的程序一定没有运行时错误。因为运行时错误可能发

生在某些特定的情况之下,而不一定是每次都会发生的。

例如:一个程序大多数时候跑得没有问题,突然有一天遇到内存占用很大,一块数组申请

失败;或者忽然有一天,用户的磁盘满了;再或者,用户把一个具有只读属性的文件指定

为输出文件;还有杀毒软件的一些拦截行为也可能导致某些操作意外失败。就计算程序来看,程序可能认为某个曲线是单调的,或者光滑可导的,某个数组的数据一点是大于0 的,某个方程一定是有解的,但实际上用户输入的算例并不一定满足这些条件。

因为用户运行程序,是在未知的计算机环境,未知的算例进行的。因此,很多意外的运行

时错误我们很难预料。即便是非常商业化的程序,如 QQ,迅雷,Internet Explorer,Visual Studio,甚至我们使用的编译器自身,出现运行时错误意外终止都不是新鲜事。

我们需要做的,恐怕只是尽量的避免运行时错误,使程序在绝大多数情况下可以正常运行

计算出结果。此外,不是所有的运行时错误都需要修改代码,有些还需要调整输入文件,

或者改变其他运行环境。(当然了,改变代码使得程序能更宽泛的适应多种特殊情况更好)Q2001: floating invalid / math error / DOMAIN error / Integer divide by zero

原因:这是计算时最容易发生的错误,他表示浮点数错误,数学函数错误(如超出数学函

数的定义域,负数开方,分母为零等等)。

解决:对数据进行合理控制,判断是否在定义域内,如每个算例均出现,应进行 Debug 调试。

Q2002: Program Exception - array bounds exceeded / Subscript #1 of the array A has value 101 which is greater than the upper bound of 100

原因:这是数组越界,即,数组引用的元素超出了定义它的范围。比如定义 a(50:100),如引用 a(49) 或 a(101) 则会越界。很多时候,这是循环对数组操作时,没控制好,比如 Do i = 50 , 100 然后引用了 a(i+1),当i=100时,i+1=101,就会越界。Intel Fortran 的数组越界会

给出很详细的错误提示,包括具体越界的数组名,定义范围和引用角标。

解决:检查越界数组,根据情况修改代码。

Q2003: End-of-file during read

原因:这是读取文件时遇到了文件的结束。例如,代码要求数据有3行数据,而实际输入

文件只有2行。在某些时候,甚至输入文件根本不存在或是空白文件。此外,数据文件缺

失某些行某些列也是较大的可能。当然,也可能是循环读取文件时没控制住。比如想读

100行,结果写错了,读了1000行。有时候,可能是文件路径错误,导致实际读取了另一个空白的文件。或者文件扩展名被隐藏了,比如读取 a.txt,但实际的文件名却是 a.txt.txt

解决:补足数据文件,或者修改代码使得读取的数据与实际数据文件一致。

Q2004: File not found

原因:这个就简单了,文件找不到。最大的可能是文件名写错了,路径(文件夹)放置不

正确。

解决:增加应有的文件,或放置到合适的路径下。

Q2005: Attempt to access non-existent record

原因:一般针对直接读取文件,意思是读写了一个不存在的记录。例如文件只有2个记录,却视图读取第3个。也可能是记录长度的字节数设置不正确,使得应该在第2记录的字节

超出了文件的字节。

解决:修改代码或修改文件,使得记录长度与个数相匹配。

Q2006: Insufficient virtual memory

原因:程序试图访问一个受保护或不存在的内存地址。多数为可分配数组,指针等动态内

存引发的错误。

解决:确保数组已经经过分配后才访问,确保指针指向可用的内容。

Q2007: Format syntax error at or near x x

原因:在 x x 位置或附近的格式符 x 错误。因为使用了错误的输入输出格式符。

解决:修改源代码中对应的格式符,或输入正确的可识别的格式符。

Q2008: List-directed I/O syntax error

原因:输入数据不正确。例如从文件或字符串中读取整型或浮点数数据,而遇到非数字的

符号,比如“abc”

解决:这个问题多数需要修改输入文件。

Q2009: Stack overflow

原因:堆栈溢出。可能性较多:堆栈不够;程序内局部变量太大或太多;递归调用终止失控。

解决:首先尝试改大堆栈,在不同编译器上具体操作不同。VS 下可设置工程属性,如图:

命令行下增加链接开关/STACK:1000000000,1000000000

如果还是不足,可将大的局部数组改为可分配数组。如有递归调用函数,检查其终止条件

是否设置合理。

Q2010: Program Exception - access violation

原因:这个问题可能性很多,属于比较麻烦的运行时错误。表示程序尝试读写一个非法的

内存地址。常见于可分配数组尚未分配就传入子程序使用,子程序中修改了虚参但对应的

实参为常数。等等。

解决:Debug 调试,检查错误所在位置。

Q2011:Formatted I/O to unit open for unformatted transfers / Unformatted I/O to unit open for formatted transfers原因:使用无格式打开的文件,但使用了有格式的输入输出。或反之。

解决:使用匹配的格式打开和输入输出。

Q2012:Sequential-access I/O to unit open for direct access

原因:使用直接读写方式打开的文件,但使用了顺序读取的输入输出。

解决:使用匹配的读写方式打开和输入输出。

Q2013:Input conversion error

原因:输入时,遇到了异常的转换错误。可能是输入中包含非法的字符(比如输入一个整数,遇到了1.7a3),或者输入数据超过了转换数据的范围(比如输入一个32位整数,但

输入值超过了 2147483648)。

解决:修改文件,去除非法字符。或使用更长的变量类型容纳大数据。

IVF 的运行时错误官方有专门的文档,大约有700多个。这里无法一一列举。如果你遇到

运行时错误,请先尝试翻译它。然后尝试去解决。CVF和其他编译器的运行时错误与这些类似但不完全相同。

四. 计算结果不符合预期

这是最麻烦的错误了。编译器和操作系统已经无法帮助我们来检查和预知错误。需要我们

自己进行 Debug 调试,检查计算结果从哪里开始与我们的预期开始不同了。

如果你的代码在其他编译器或其他操作系统上可以正常使用,但更换编译器以后计算结果

不正确,也不要觉得奇怪。语法只是规定了一部分规则,还有很多语法中尚未规定的事情,不同编译器的处理就不一样,导致这种结果。这恰恰说明代码还有隐含的错误。

一段严谨的代码,会尽量避免上述情况。我们在书写代码时,也应该如此。不要让代码离

开你的计算机就变成一堆垃圾。

如果你遇到了计算结果不符合预期的情况,耐心的检查吧,以下可能会是突破点:

1.检查变量是否全部定义并给定了类型和精度。程序单元都使用了 Implicit None 语句。

2.检查变量是否有尚未初始化就使用的情况?

3.函数调用过程中,是否存在虚参实参的类型差异。

4.变量的 Kind 值在不同编译器上的含义是否有差别?

5.直接读取文件的 RecL 的值在不同编译器上含义是否一致?

6.是否使用了依赖编译器的函数库,在更换系统后同样替代的函数,适用范围是否一样?

最后,强调一下,如果你使用的编译器不是 Compaq / Intel Visual Fortran 系列,他们的错误提示与本文的可能不同。请你首先尝试翻译错误提示,大多数情况错误提示会把问题描述得比较清楚。

(完整)Fortran经典编程语言笔记(你值得拥有)

FORTRAN笔记 2014.10.07 目录 第七讲_FORTRAN的基本知识.ppt (2) FORTRAN语言程序设计初步 (2) FORTRAN源程序的书写格式(以77为例) (2) 变量 (2) 变量类型 (2) 算术运算符和运算优先级 (3) 赋值语句 (3) 参数语句(PARAMETER语句) (3) END语句 (3) PAUSE语句 (3) 逻辑运算和选择结构 (4) 关系表达式 (4) FORTRAN中数组的定义及使用 (4) 其他 (5) 1. fortran语言定义CHARACTER*6 TTL(14,3),CNAM(400)是什么意思? (5) 2. fortran里character*10 是什么意思 (5) 3. Fortran中kind是什么函数? (5)

第七讲_FORTRAN的基本知识.ppt FORTRAN语言程序设计初步 FORTRAN是Formula Translation的缩写,意为“公式翻译”,它是为科学、工程问题或企事业管理中的那些能够用 数学公式表达的问题而设计的,其数值计算的功能较强。 常用的是FORTRAN77和FORTRAN90两种标准。 1、一个程序由若干个程序单位组成。主程序和每一个子程序分别是一个独立的程序单位。 2、每一个程序单位都是以“END”结束的。 3、一个程序单位包括若干行。 1)语句行。由一个FORTRAN语句组成。 2)非语句行,即注释行。 4、FORTRAN程序中的语句可以没有标号,也可以有标号,根据需要而定。标号的作用是标志一个语句以便被其 他语句引用。 5、一个程序单位中各类语句的位置是有一定规定的。 6、FORTRAN源程序必须按一定的格式书写。 FORTRAN源程序的书写格式(以77为例) 每一行有80列,分别如下: 1、第1-5列为标号区。一行中第一列为“C”或“*”,该行即被认为是注释行。 2、第6列为“续行标志区”,如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。 3、第7-72列为语句区。 4、第73-80列,注释区。 变量 变量名:一个变量需要用一个名字(变量名)来识别。在同一个程序单位中不能用同一个变量名代表两个不同的变 量。 FORTRAN的变量名按以下规则选定: 1)第一个字符必须是字母,即变量名必须以字母开头; 2)在一个字母后面可以跟1-5为数字或字母。 如果选定的变量名超过6个字符,则只有前面6个字符有效。 注:在变量名中大写与小写字母是等价的。 变量类型 整型变量Integer、实型变量Real、双精度变量Double Precision、复型变量Complex、逻辑型变量Logical和字符型变量Character。 1、隐含约定(I-N规则) FORTRAN规定:在程序中的变量名,凡以字母I,J,K,L,M,N六个字母开头的,即认为该变量为整型变量。 在程序中,凡是变量名以字母I,J,K,L,M,N,i,j,k,l,m,n开头的变量被默认为整型变量,以其他字母开头的变量被 默认为实型变量。 2、用类型说明语句确定变量类型 1)INTEGER语句(整型说明语句) 2)REAL语句(实型说明语句) 3)DOUBLE PRECISION语句(双精度说明语句) 4)COMPLEX语句(复型说明语句) 5)LOGICAL语句(逻辑型说明语句)

MATLAB 与C C + + 、FORTRAN语言混合编程

MATLAB 与C/ C + + 、FORTRAN语言混合编程摘要:对MATLAB 与C/ C + + 和FORTRAN 语言进行混合编程的常用方法进行了介绍,分析了其实现方式和各自的利弊,并用实例对MEX 文件实现方式进行了较详细的论述. 关键词: MATLAB ; C/ C + + ; FORTRAN ; 混合编程 中图分类号: TP313 文献标识码: A 文章编号:16722948X(2004) 0620547205 1 混合编程的意义及其实现方式 1. 1 混合编程的意义 MATLAB 语言具有功能强大、开发效率高等诸 多优点, 已在工程实际中得到广泛应用, 但是与 FORTRAN、C/ C + + 等语言相比,其执行效率较低, 特别是当程序中含有大量循环语句(例如迭代计算) 时,MATLAB 就有些力不从心, 速度很慢, 而运用 FORTRAN 等擅长数值计算语言进行编程,其运行效 率高. 一方面,如果放弃MATLAB 强大功能和数量 众多的应用工具箱,无疑是资源的极大浪费. 另一方 面,针对工程实际,人们用FORTRAN、C/ C + + 语言 已编写了大量实用程序,如果将其重新改写成M 文 件移植到MATLAB 环境中,不仅要花费大量的时间 和精力,而且有时还降低了其运行效率. 可否将二者 优势互补呢? 混合编程就是其有效的解决途径. 1. 2 混合编程的实现 正是考虑到上面这些原由,MATLAB 系统提供 了其应用程序接口(Application Program Interface) 来 解决这些问题. API 主要包括3 部分:MEX 文件——— 外部程序调用接口,用来在MATLAB 环境下调用 FORTRAN、C/ C + + 语言编写的程序;MAT 文件应 用程序———数据输入输出接口,用于MATLAB 系统 与外部环境之间互传数据; 计算引擎函数库——— MATLAB 处于后台作为一个计算引擎,与其它应用 程序建立客户机/ 服务器关系,在其它应用程序中调 用[1 ,2 ] . 1. 2. 1 MEX 文件 MEX 文件是按照一定格式,用FORTRAN 或C/ C + + 语言编写的源程序,在MATLAB 下借助相应 的编译器,生成的动态链接函数的统称. 在Windows 操作系统下,是用MATLAB 附带的批处理mex. bat 来编译生成文件后缀名为. dll (Dynamic Link Li2 brary) 动态链接库文件,该文件可在MATLAB 环境 下,像命令函数一样直接运行和调用,使用起来极为 方便. 采取MEX 文件方式,是重复利用已有FOR2 TRAN、C/ C + + 程序,让MATLAB 和FORTRAN、

fortran常见问题解决

楼主为了减少重复回答问题,特编此帖,并不定期添加和更新内容。 错误难免,欢迎讨论,仅供参考。 很多人问哪里可以找到Fortran编译器,有不少热心学友提供网址,特汇集在这里。虽然俺检验过这些链接,但是它们不一定总有效。 Fortran编译器下载: CVF? FTN95(License:Freeforpersonaluse) 以下操作,如无特别说明,都是以为例。 1.如何加大Stacksize? 选Project=>Settings=>Link=>Category:Output=>? Stackallocations Reserve:这里填新值(默认为1M,若需要10M,则填) 2.如何用Fortran批量生成文件? 设要生成4000个文件,文件名为AA1-AA4000,如何写循环生成文件,而不用写4000次write 命令呢? 用内部文件: character(len=80)::filename,form integer::i doi=1,4000 selectcase(i) case(1:9) write(form,'(i1)')i case(10:99) write(form,'(i2)')i case(100:999) write(form,'(i3)')i case(1000:9999) write(form,'(i4)')i endselect write(filename,*)"AA",trim(form),".TXT" open(10,file=filename) write(10,*)i close(10)

enddo? stop end 3.如何用Fortran动态生成输出格式? 设有一个数组data(100),输出时,希望每行输出num个数,而num由用户输入,如何实现? 用内部文件: character(len=80)::form real::data(100) integer::i,num data=(/(i,i=1,100)/)/ read(*,*)num write(form,*)"(",num,"" write(*,form)data stop end 4.MS是不是很垃圾? 是垃圾,其中Bug太多,多到不可用的地步! 在这个主题里,换了CVF后问题就没了的人已有相当的数目。 如果你用,遇到莫名其妙的错误,建议换,这是一个比较成熟的编译器。 5.如何用F90/95生成随机数? 注意: 现在计算机产生的随机数都是伪随机数。 random_number(x)产生一个0到1之间的随机数(x可以是向量),但是每次总是那几个数。用了random_seed()后,系统根据日期和时间随机地提供种子,使得随机数更随机了。 programrandom implicitnone real::x callrandom_seed()!系统根据日期和时间随机地提供种子 callrandom_number(x)!每次的随机数就都不一样了 write(*,*)x stop endprogramrandom 6.函数/子程序超载的例子

CALYPSO教程

U s e r' s G u i d e CALYPSO version 1.3.0 October 28, 2011 Written by Yanming Ma, Yanchao Wang, Jian Lv and Li zhu State Key Laboratory of Superhard Materials, Jilin University, Changchun 130012, China Please contact with Yanchao Wang (wyc09@https://www.doczj.com/doc/263965595.html,), Jian Lv (jianlv10@https://www.doczj.com/doc/263965595.html,), Li Zhu (zhuli10@https://www.doczj.com/doc/263965595.html,) and Yanming Ma (mym@https://www.doczj.com/doc/263965595.html,) for any technical questions or any bugs. https://www.doczj.com/doc/263965595.html,/YanmingMa/mym.htm Copyright ? 2011 Jilin University. All Rights Reserved.

CONTENTS 1. INTRODUCTION (3) 2. COMPILATION (4) 3. EXECUTION OF THE PROGRAM (4) 4. INPUT FILE (5) 5. OUTPUT FILES (11) 6. THE RESULTS ANALYSIS (12) 7. SOME PUBLICATIONS FROM USE OF CALYPSO (13) 8. FUTURE DEVELOPMENT (13) 9. ACKNOWLEDGMENTS (13)

FORTRAN 90 程序编程规范

FORTRAN 90 程序编程规范 Fortran 90 编程规范,使程序代码高度组织化,更加易读、易懂、易于维护,程序更加高效。使编出的程序更易懂、易于维护。 1 语言选择 数值预报创新系统软件开发应避免使用Fortran77 的某些过时特征以Fortran 90不一致的特征。选择Fortran 90 作为开发语言,并采用Fortran 90 的新功能,如动态内存的分配(dynamic memory allocation)、递归(recursion ), 模块(modules)、POINTER 、长变量名、自由格式等。 Fortran 77其中某些只是一些冗余的功能,这些功能已经过时,另外,还有一些在Fortran90 中被证明是不好的用法,建议不要使用。 2 Fortran 90 的新特性 2.1.1 建议使用的Fortran 90 新特性 建议使用Fortran 90 提供的模块(module ),并用Use ONLY 指定module 中哪些变量或派生类型定义可用于调用程序。 尽量使用数组下标三元组,这样可优化并减少所需的代码行数。为提高可读性,要在括号内表明数组的维数,例如: 1dArrayA(:) = 1dArrayB(:) + 1dArrayC(:) 2dArray(: , :) = scalar * Another2dArray(: , :) 当访问数组的子集时,例如在有限差分等式中,可以通过使用下标三元组实现。例如:2dArray(: , 2:len2) = scalar *( & Another2dArray(:, 1:len2 -1) & - Another2dArray(:, 2:len2) & ) 对程序单元(program units )命名,并使用End program ,End subroutine ,End interface ,End module 等结构再次指定“program unit ”的名称。 在逻辑表达式中使用>、 >=、 ==、 <、 <=、 /=,它们分别代 替.gt.、.ge.、.eq.、.lt.、.le.、.ne. 。新的表示方法更接近标准的数学符号 在变量定义中始终使用“::”;始终用“DIMENSION ”定义数组形状;始终用(len=)的语法格式声明字符变量的长度。

fortran语言语法

FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。目前,工科院校开设的计算机编程语言课首选仍然是FORTRAN :< 说实话,从科技发展的趋势来说这不是好事。您可以设想一下,如果需要用鹅毛笔抄写大量的古籍是什么感受! 强烈建议阅读《发掘C#特性赋予科学计算项目以威力》 1 FORTRAN77四则运算符 + - * / ** (其中**表示乘方) 在表达式中按优先级次序由低到高为: +或-→*或/→**→函数→() 2 FORTRAN77变量类型 隐含约定:I-N规则 凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。 用类型说明语句确定变量类型:可以改变I-N规则

用IMPLICIT语句将某一字母开头的全部变量指定为所需类型 如IMPLICIT REAL (I,J) 三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。 数组的说明与使用 使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3)

C语言转换为fortran语言

C/C++采用的是缺省调用约定是STDCALL约定.在C程序中,可以在函数原型的声明中使用_stdcall关键字来指明过程采用STDCALL调用约定。 Fortran过程采用的缺省标识符是,全部大写的过程名加上“_”前缀和“@n”后缀。在C程序中保留标识符的大小写。编译程序会给采用STDCALL约定的过程标识符加上“_”前缀和“@n”后缀。 Fortran过程缺省的参数传递方式是引用方式是。对于下面这个Fortarn过程:SUBROUTINE ForSub(ivar,rvar) INTEGER ivar REAL rvar WRITE(*,*) ivar,rvar END 在C语言程序中应给出过程的函数原型及调用方式为: void main() { extern void__stdcall FORSUB(int*I,float*f); int iCV AR=1; float rCV AR=2.0; FORSUB(&iCV AR,&rCV AR); } 在C++中调用Fortan的过程,在声明函数原型时需要用extern“C”语句,以避免C++编译程序对标识符的修饰;并且C++也可以通过引用方式传递参数。对于上面的Fortran过程,C++程序应给出的函数原型及调用方法是: void main() { extern “C”{void__stdcall FORSUB(int*I,float*f);} int iCV AR=1; float rCV AR=2.0; FORSUB(&iCV AR,&rCV AR); } 另外,也可以在Fortran中用!MS$ATTRIBUTES编译伪指令来改变Fortran子过程的调用约定,以便于被其他语言的程序调用。在下面的例子中,过程ForSub具有C语言的调用约定。 SUBROUTINE ForSub(ivar,rvar) !MS$ATTRIBUTES C::ForSub INTEGER ivar REAL rvar WRITE(*,*) ivar,rvar END 这样,这个过程使用的是C调用约定,并且参数传递方式也变为传值方式,过程的标识符变为全部小写且有_前缀而无后缀的方式。在C语言源程序中的函数原型及调用方法为:void main() { extern void FORSUB(int ivar,float rvar); int iVar=1;

fortran常见错误

FAQ之常见错误 2014-02-02 13:45:35 来源:Fcode研讨团队评论:2点击:4419 本文从编译错误,链接错误,运行时错误,计算结果错误等四个方面介绍了常见的错误及解决思路。适合初学者阅读。 首先应该明确:错误有哪几种?我们当前遇到的是何种错误? 阐述这些问题前,我们先讨论一下常规的应用程序开发的过程: 1>>编写代码,使用一个或多个源代码文件。 2>>对第一步的每一个源代码文件执行编译操作。得到一个或若干个目标代码。 3>>将目标代码,运行时库(Run-time Library)和其他使用到的函数库链接起来。得到一个可执行文件(EXE 或其他) 4>>编写程序的说明书,必要的(输入)数据文件 5>>将上述得到的结果发布给用户。(发布的方式可以是刻录成光盘,销售,放在网站上供别人下载,或者其他) 6>>用户得到程序后,运行,输入数据,得到计算结果。 对于很多 Fortran 程序员来说,可能用户就是自己,也可能仅仅是自己教研室的同事同学。所以第4,5,6步骤很多时候不明显。而如果使用集成开发环境(IDE)进行开发,第1,2,3步骤又可以一键完成。因此,很多初学者就认为,写程序就是:输入代码,运行,得到结果。这样的理解太狭义。 不管我们面对什么使用者来写代码,程序开发应该是上述的过程。我们的编译器,编译环境,也是为这个过程而设计的。 于是,我们将错误分为四种: 一. 编译错误(发生在第2步) 编译错误,一般是源代码书写格式不正确,不符合语法要求。 二. 链接错误(发生在第3步) 链接错误,一般是源代码结构不完整,运行时库或函数库使用不合理。 三. 运行时错误(发生在第6步) 运行时错误,一般是执行代码时,遇到了事先未料及的错误。比如内存不足了,磁盘空间不够了,输入文件格式不对了,输出文件写入失败了等等。 四. 计算结果不符合预期(程序代码不规范,或不符合你的设想) 计算结果不符合预期,可能性就很多了。语法与你的想法不一致,超出函数库的适用范围,执行流程控制不当等等。 这四种错误,其排查难度依次增大。也就是,编译错误最容易排查和修改,而计算结果不正确,最让人头疼。

FORTRAN 95 语法速查

FORTRAN 95 语法速查 ----------白云、李学哲、陈国新、贾波编著《FORTRAN95程序设计》读书笔记 目录:一、应用程序的创建与运行/FORTRAN 95所用的字符/ 变量类型及其声明,常量声明/表达式与运算符 二、输入与输出:表控、有格式 三、选择语句与结构:IF语句、CASE结构 四、DO循环结构 五、数组:数组的声明,数组的引用,数组的算术运算,数组的输入、输出,给数组赋初值, 动态数组,WHERE、FORALL语句 六、子程序:语句函数,内部子程序,调用子程序时的虚实结合:形参为数组、非定界数组、子 程序名、星号,递归子程序,外部子程序,纯子程序,逐元子程序 七、派生数据类型与结构体 八、指针与动态链表 九、文件:存取方式,基本操作语句,各类文件的读写操作 十、接口、模块 十一、公用区、存储关联、数据块子程序 十二、绘图:坐标系、设置图形颜色、创建图形程序/ 常用过程:设置线型、绘一像素点、设置当前位置、绘直线、绘弧线、绘矩形、绘多边形、绘制扇形(圆、椭圆)/ 文字信息的显示 附/录:标准函数与标准子例行程序 一、基础部份 1-1 FORTRAN 95 应用程序的创建与运行 创建或运行FORTRAN 95程序必须在Microsoft Developer Studio平台上进行。尽管程序文本及相关文件的编辑可以在任一文本编辑器上进行,然后再拷到Studio的文档窗口中。但最好还是一开始就进入Studio环境。创建FORTRAN 95 程序的步骤大致如下: 1)启动Microsoft Developer Studio 可以通过不同方式运行dfdev.exe程序以启动Microsoft Developer Studio [开始] \ Compaq Visual Fortran 6 \ Developer Studio \ dfdev.exe:或 ……\CVF66 \https://www.doczj.com/doc/263965595.html,\MSDEV98\dfdev.exe Microsoft Developer Studio的界面如下图所示: 文档窗口 工作空间窗口 输出窗口

C与C++与FORTRAN混合编程

C/C++/FORTRAN 混合编程 混合编程在软件编程中是经常遇到的问题,尤其是C/C++/FORTRAN的混合编程,本文主要说明以上三种语言混合编程中经常遇到的问题,同时,也说明了不同平台下混合编程应注意的问题。 混合语言编程要注意的问题主要体现在:函数调用和数据结构的存储。 1 Windows平台 函数:由于Fortran编程语言没有大小写之分,Windows平台下的混合语言编程要注意的主要是大小写的问题。考虑到编译器的差异,可以用下面的方式进行跨平台编程的函数声明。( C/C++编译器使用Microsoft Visual C++ 6.0, Fortran编译器使用 Digital Visual Fortran 6.0)。 假设一个C的函数为 void cFunction(); 那么,只需要在它的头文件里面进行如下定义即可: #ifdef __cplusplus extern “C” void { #endif extern void __stdcall CFunction(); #define cFunction CFUNCTION #ifdef __cplusplus } #endif 这样,在Fortran或者C++的程序里面就可以直接调用了。 假设是一个Fortran函数SUBROUTINE FFUNCTION(); 那么,在C++头文件里进行如下的定义就可以了: #ifdef __cplusplus extern “C” void { #endif extern void __stdcall ffunction(); #define ffunction FFUNCTION #ifdef __cplusplus } #endif 这样,就可以在C++的程序里面直接调用。由于C编译器里面,没有定义__cplusplus这个环境变量,因此,C文件里面,也可以直接使用这个头文件。如果是一个C++函数,如: void cPlusplusFunction();和c函数一样,进行下面的定义即可: #ifdef __cplusplus extern “C” void { #endif extern void __stdcall cPlusplusFunction (); #define cPlusplusFunction CPLUSPLUSFUNCTION #ifdef __cplusplus }

Fortran常见错误

fortran运行常用错误(转) (2006-11-1010:18:44) 转载▼ 分类:分子动力学 41Insufficient virtual memory虚拟内存不足 70Integer overflow整数溢出错误 71Integer divide by zero整数除0错误 72Floating overflow浮点数溢出错误 73Floating divide by zero浮点数除0错误 74Floating underflow浮点数下溢错误 75Floating point exception浮点数异常错误 77Subscript out of range数组定义超出边界 95Floating-point conversion failed浮点数格式转换失败 146Null pointer error空指针错误 147Stack overflow堆栈溢出 148String length error字符串长度超出允许范围 149Substring error数组下标超出允许范围 150Range error整数值超出允许范围 151Allocatable array is already allocated数组重复定义 161Program Exception-array bounds exceeded引用数组下标超出允许范围162Program Exception-denormal floating-point operand非法浮点数操作符163Program Exception-floating stack check浮点数堆栈检查 164Program Exception-integer divide by zero整数除0错误 165Program Exception-integer overflow整数溢出 166Program Exception-privileged instruction非法执行特权指令 168Program Exception-illegal instruction非法指令 170Program Exception-stack overflow堆栈溢出

fortran95教程4章

第2篇. 计算的叙述 算法的每一个步骤,都必须给予确切的定义。对于算法当中所 考虑的每一种情况,每一个有待执行的动作,都必须严格地和 不含混地加以规定。…对于以描述算法作为目的而设计出来 的,采用了形式的定义的程序设计语言,或者说计算机语言, 它的每一个语句都必须有非常确切的意义。 ---- D.E.Knuth[1]《The Art of Computer Programming》 本质上FORTRAN就是一门语言,一门人与计算机赖以进行有效交流的语言,在这个意义上和我们使用的中文,英文等没有本质差别。现在假设要来描述一种大家都陌生的语言,那么总是要分成两个方面来描述,即一方面要描述这门语言的表象和形态,也就是它使用哪些符号,哪些词汇,一般的句式如何,怎样才能完整叙述一个任务之类;另一方面需要说明这门语言的语义,也就是说这门语言是如何用来表达我们需要它表达的意思的。 第4章基本上就是描述FORTRAN作为一种语言的基本形态,也就是书写这种语言的书写规则。 接下来几章则逐步说明如何用FORTRAN来表达我们的要求,或者反过来说,FORTRAN提供了些什么表达方式,以便我们用来向计算机提出合理的任务: ● 表达基本数据; ● 表达数据的结构; ● 完整地描述数据; ● 构造表达式; ● 驱动计算的赋值; ● 计算过程的结构控制; 在整个第二篇,我们将领略到FORTRAN 95是如何能够做到精致地描述计算的,而把一个问题阐述清楚了,就意味着问题已经解决了一大半。

[1]Donald E. Knuth (高纳德),Stanford University的The Art of Computer Programming荣休教授,而The Art of Computer Programming(计算机程序设计技巧)正是他的伟大著作的名称。洋洋七大卷的《The Art of Computer Programming》是当今全世界每一个计算机科学家所膜拜的圣经。1974年在该书刚完成前面很少一部分时,就给他带来了计算机科学家们梦寐以求的图灵奖。 第4章FORTRAN 95语言的形貌 要说明一门语言的形态,必须回答以下问题: ●它使用哪些符号来表达信息? ●它的词汇如何构成? ●它的语句如何构成? ●如何表达一个完整的任务? 具体的对于一门计算机语言,把这几个问题更加明确地转换过来,就是: ●它使用键盘上的哪些符号,各个符号有哪些用途? ●它的词汇如何由键盘字符构成?含有哪些固定的词汇?以及容许自由构成合法词汇 的规则是什么? ●它具有哪些固定的语句格式?以及容许自由构成合法语句的规则是什么? ●我们交待给计算机的任何任务,都必须明确说明任务的开始,执行步骤和完成,因 此一段完整的源代码应该具备什么样的形式?以及应该具备哪些要素? 本章就是要回答这些问题。 4.1 FORTRAN语言所使用的字符 从最抽象的层面来看,人与计算机的交流只是信息的交流,而信息总是需要依靠某种信号来表示,对于人来说,最方便的就是字符。而对于计算机来说,自然就是键盘所能敲出的那些字符(信号),因此下面就是要说明: ●FORTRAN 95能识别键盘上敲出的哪些字符? ●每个字符对于FORTRAN 95来说又意味着什么? 4.1.1 FORTRAN 95所使用的基本字符 按照FORTRAN 95标准的规定,一切FORTRAN 95的实现平台都必须使用下面表4-1所列出来的这个基本的字符集,或者说,这个字符集是所有遵循FORTRAN 95标准的编译

fortran语言内部函数

附录 FORTRAN 90标准函数 符号约定: ●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。 ●s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。 ●[…]表示可选参数。 ●*表示常用函数。 表1 数值和类型转换函数 函数名说明 ABS(x)*求x的绝对值∣x∣。x:I、R,结果类型同x; x:C,结果:R AIMAG(x)求x的实部。x:C,结果:R AINT(x[,kind])*对x取整,并转换为实数(kind)。x:R, kind:I,结果:R(kind) AMAX0(x1,x2,x3,…)*求x1,x2,x3,…中最大值。x I:I,结果:R AMIN0(x1,x2,x3,…)*求x1,x2,x3,…中最小值。x I:I,结果:R ANINT(x[,kind])*对x四舍五入取整,并转换为实数(kind)。x:R, kind:I,结果:R(kind) CEILING(x)*求大于等于x的最小整数。x:R,结果:I CMPLX(x[,y][,kind]))将参数转换为x、(x,0.0)或(x,y)。x:I、R、C, y:I、R,kind:I,结果:C(kind) CONJG(x)求x的共轭复数。x:C,结果:C DBLE(x)*将x转换为双精度实数。x:I、R、C,结果:R(8) DCMPLX(x[,y])将参数转换为x、(x,0.0)或(x,y)。x:I、R、C, y:I、R,结果:C(8) DFLOAT(x)将x转换为双精度实数。x:I,结果:R(8) DIM(x,y)*求x-y和0中最大值,即MAX(x-y,0)。x:I、R, y的类型同x,结果类型同x DPROD(x,y)求x和y的乘积,并转换为双精度实数。x:R, y:R,结果:R(8)

fortran安装

Intel Visual Fortran 2013 sp1 完整版下载及安装教程(windows) 10月16日版:更新支持win8.1、VS2013下载地址 【完整安装包】https://www.doczj.com/doc/263965595.html,/akdlm/irc_nas/3651/w_fcompxe_ novsshell_2013_sp1.1.139.exe 【联网安装包】https://www.doczj.com/doc/263965595.html,/akdlm/irc_nas/3651/w_fcompxe_ novsshell_online_2013_sp1.1.139.exe 【百度云副本】https://www.doczj.com/doc/263965595.html,/s/18E41z 更新内容(翻译自官网,不妥之处恳请指正): 1.Intel? Fortran Compiler 更新至14.0.1 --增加/assume:std_value 编译选项 --增加/Q[a]xMIC-AVX512 编译选项 --增加/Qopt-gather-scatter-unroll=n 编译选项 2.Intel? Math Kernel Library 更新至11.1 Update 1 3.增加对Microsoft Windows 8.1*的支持 4.增加对日语的支持 5.修正问题 --https://www.doczj.com/doc/263965595.html,/en-us/articles/intel-composer-xe-2013-compilers-sp1-fixes-list --https://www.doczj.com/doc/263965595.html,/en-us/articles/intel-mkl-111-bug-fixes/ 安装说明: 1、下载安装包中的任意一个,前两个为官方地址,第三个为百度云副本(完整安装包) 2、运行w_fcompxe_novsshell_2013_sp1.0.103.exe 3、点击extract,解压安装包,解压完毕程序会自动运行安装向导 4、在第三步(Activation)中选择Choose alternative activation,点击下一步 5、选择Use a license file 6、选择你的授权许可文件(lib文件) 7、继续安装过程 备注: 1、安装Intel Visual Fortran Composer前,请确保已经安装了Microsoft Visual Studio 2010/2012/2013。若使用其他编辑器,需要手动配置编译环境。 Visual Studio官网:https://www.doczj.com/doc/263965595.html,/。 微软旗下的DreamPark计划为在校大学生免费提供VS2013Pro版,地址:https://https://www.doczj.com/doc/263965595.html, 2、安装过程中没有加以说明的步骤,请直接点击下一步。

Fortran 运行中给出的系统错误及解决方法

. Fortran 运行中给出的系统错误及解决方法 以下均为linker tools errors and warnings Linker Tools Error LNK1000 unknown error; consult documentation for technical support options Note the circumstances of the error, try to isolate the problem and create a reproducible test case, then contact technical support. Linker Tools Error LNK1101 incorrect MSPDBxx.DLL version; recheck installation of this product The version of MSPDBxx.DLL available on your system does not match the version required by this tool. Linker Tools Error LNK1102 out of memory There was not enough memory for the tool to run. Probably the paging file exceeded available disk space. If a shortage of disk space is not the cause, note the circumstances of the error, try to isolate the problem and create a reproducible test case, then request technical support. Linker Tools Error LNK1103 debugging information corrupt; recompile module Probably the compilation was terminated before a valid object file was created.Recompile the given object file. If recompiling does not correct the problem,note the circumstances of the error, try to isolate the problem and create a reproducible test case, then consult technical support. Linker Tools Error LNK1104 cannot open file "filename" The tool could not open the given file. One of the following may be a cause: l There was not enough disk space. l The file does not exist. l The filename or its path was incorrectly specified. l The specified drive is invalid. l The file does not have the appropriate permissions. l The path for filename expands to more than 260 characters. l If the given file is named LNKn, which is a filename generated by the linker for a temporary file, then the directory specified in the TMP environment variable may not exist, or more than one directory is specified for the TMP environment variable. (Only one directory path should be specified for the TMP environment variable.) l If the error occurs on the executable filename, an earlier version of the executable may still be running. You will need to terminate the executable before linking it. In Windows NT (including Windows 2000) or Windows 95,you can use the utility PVIEW to look for and kill instances of the application. l If the error message occurs for a library name, and you recently ported the .MAK file from a previous Microsoft Visual C++ development

fortran编译器操作

关于fortran语言的编译器使用问题 此文是一个简明教程,仅适合初学者来使用。老鸟们大牛们就不用在看了。本文档的目的是为了方便初学者快速的掌握基本的fortran编译器的使用。 一、关于cvf(compaq virtual fortran) CVF操作方便,限制不多。一般常用的有两种新建工程的方法: a)打开cvf,点击新建file----new,弹出选择对话框,简单的程序可以选择fortran console application。在左侧project name处填写工程名字,在location处填写(选择)工程保存路径。注意cvf中要求不允许出现汉语路径。操作顺序图如下 第一步: 第二步:

第三步: 第四步:运行

至此,所有步骤完成。 b)直接打开cvf,点击新建文档(new)然后单击保存,弹出保存对话框,选择保存路径及文件夹, 文件名改为“工程名.f90”格式此处注意如果是fortran自由格式,请保存为*.f90或*.f95格式,如果是固定格式请保存为*.for或*.f格式。因为编译器是根据后缀的不同调用不同的语言编译器,否则将出错。保存文件的路径和文件夹即为该工程所在的路径和文件夹。同样不能有汉语。示意图如下:第一步 第二步、

第三步、 至此,所有的工程完成。

二、关于CVF的调试(debug) 在相应代码编辑框左侧发灰色的竖线部分,鼠标变为反三角方向的形状时即可右键鼠标,选择insert/remove BreakPoint选项,在代码左侧可以看到一个红色的标示(代码行尽量不要设在代码最后。可以设置到自认为可能发生错误的地方。或者尽量靠前设置),此时就可以按F5进入调试状态。可以在watch窗口查看各个变量,数组的值与内容。按F11进行单步运行。查看错误出处。具体的更细致的调试,请参看相关文献或书籍。这类书籍不少。 具体操作如下:

Visual Fortran常见错误内容

Visual Fortran 常见运行错误信息 41 Insufficient virtual memory 虚拟内存不足 70 Integer overflow 整数溢出错误 71 Integer divide by zero 整数除0错误 72 Floating overflow 浮点数溢出错误 73 Floating divide by zero 浮点数除0错误 74 Floating underflow 浮点数下溢错误 75 Floating point exception 浮点数异常错误 77 Subscript out of range 数组定义超出边界 95 Floating-point conversion failed 浮点数格式转换失败 146 Null pointer error 空指针错误 147 Stack overflow 堆栈溢出 148 String length error 字符串长度超出允许范围 149 Substring error 数组下标超出允许范围 150 Range error 整数值超出允许范围 151 Allocatable array is already allocated 数组重复定义 161 Program Exception - array bounds exceeded 引用数组下标超出允许范围 162 Program Exception - denormal floating-point operand 非法浮点数操作符 163 Program Exception - floating stack check 浮点数堆栈检查 164 Program Exception - integer divide by zero 整数除0错误 165 Program Exception - integer overflow 整数溢出 166 Program Exception - privileged instruction 非法执行特权指令 168 Program Exception - illegal instruction 非法指令 170 Program Exception - stack overflow 堆栈溢出 540 Array or substring subscript expression out of range 数组下标低下数组定义 下界或高于数组定义上界 541 CHARACTER substring expression out of range 字符串非法表示 542 Label not found in assigned GOTO list 不属于GOTO语句引用的标号 543 INTEGER arithmetic overflow 整数运算结果出现溢出 544 INTEGER overflow on input 输入的整数值超出允许范围 545 Invalid INTEGER 非法整数值 546 REAL indefinite (uninitialized or previous error) 产生非法实数 547 Invalid REAL 非法实数 548 REAL math overflow 实数值溢出 549 No matching CASE found for SELECT CASE select case语句中缺少case项 550 INTEGER assignment overflow 整数定义超出允许范围 556 A edit descriptor expected for CHARACTER 字符型数据的格式化输入和输出需要A编辑符 557 E, F, D, or G edit descriptor expected for REAL 实数型数据的格式化输入和输 出需要E,F,D,G编辑符 558 I edit descriptor expected for INTEGER 整数型数据的格式化输入和输出需要I编辑符 559 L edit descriptor expected for LOGICAL 逻辑型数据的格式化输入和输出需要L编辑符 568 Multiple radix specifiers 输入或输出语句重复说明 582 Array already allocated 数组已分配 583 Array size zero or negative 数组大小为0或负数

相关主题
文本预览
相关文档 最新文档