您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > FORTRAN95第05章-文件.
2020/1/101第5章FORTRAN文件本章介绍Fortran语言中文件的概念和用法。通过本章的学习,应了解文件的基本概念及其用途、掌握Fortran95语言中关于文件的各种语句的使用方法。2020/1/1025.1FORTRAN文件概述5.1.1文件基本概念1.文件文件是信息集合。每个文件都要有一个“文件名”。文件名一般用字母、数字组成的字符串表示,根据需求,文件名前可以加上盘符和路径。一个源程序,一个目标程序,一批数据等都可以作为一个文件,这里所说的FORTRAN文件通常指数据文件。利用文件可以使数据长期保存在外存储器上,通过FORTRAN程序中专门的文件操作语句可以实现文件的建立与删除,打开与关闭,输入与输出(读写)等操作。2.文件的组成一个文件由若干个记录组成。一个记录由一组数据项组成,这种文件称为有结构文件,如一个存储学生基本信息的“学生文件”,其中一个学生的学号、姓名、年龄、专业、等数据项就是一个记录,若干个这样的学生记录,如一个班的学生情况信息就组成一个“学生文件”。也有的文件看作字节序列,不分记录。这种文件称为无结构的文件,如一个文本文件。2020/1/1033.文件的存取方式文件的存取方式也称文件的输入输出方式或读写方式。FORTRAN文件有两种存取方式,即顺序存取方式和直接存取方式。(1)顺序存取方式所谓顺序存取,指从第1个记录开始,将各记录按先后顺序逐个写入文件,读出时也必须从第1个记录开始按记录的先后顺序逐个读出,即要读或写第I个记录,必须先读或写前面的i-1个记录。按顺序存取方式进行存取操作的文件也称顺序文件。在FORTRAN中,这种顺序文件又分为有格式和无格式文件。1)有格式顺序文件这种文件指文件中的各记录按某种格式,顺序写入文件或从文件读出,各记录的长度可以不同。2)无格式顺序文化这种文件指文件中各记录写入与读出的都是按各数据项在计算机内的二进制表示的形式,各记录的长度也可以不同。“无格式”的文件实际是“二进制文件”,使用二进制文件存取速度快,节省存储空间且具有一定保密性,但不直观。有格式文件是“文本文件”,也就是以ASCII码形式保存文件中的数据,可以用各种文本编辑工作观看其内容,如利用windows的“记事本”。在VisualFortran中可以直接查看这两种文件。2020/1/104(2)直接存取文件所谓直接存取,指通过指定记录号对文件中的记录进行读写操作,而不必按顺序依次存取各记录。可直接存取的文件也称直接文件。在FORTRAN中,这种直接文件也分有格式和无格式两种。1)有格式直接文件对这种文件,所有记录具有相同的长度和相同的组成,记录可以按任意顺序读写。对这种文件,每个记录的长度在打开文件时指定,如果写入的数据未达到指定长度,则以空格补齐,以保证记录长度相等。2)无格式直接文件这种文件内容是以二进制形式写入和读出的,除了写入数据未达到指定长度,要用丛“0”补齐外,其他规定同有格式直接文件。2020/1/1055.1.2文件的基本操作文件的基本操作包括文件的建立与删除,文件的打开与关闭,文件的输入输出(读和写)。在FORTRAN程序中,文件的建立与打开使用同一个语句,即OPEN语句;文件的删除与关闭使用同一个语句,即CLOSE语句;文件的输入输出分别使用READ和WRITE语句。一、OPEN语句使用文件首先要打开文件,即首先要使用OPEN语句。OPEN语句的一般形式:OPEN([UNIT=u][,FILE=filename][,FORM=fm][,STATUS=sta][,ACCESS=acc][,RECL=rl][,ERR=label][,IOSTAT=ios][,BLANK=blank][,PCSITION=pos][,ACTION=rw][,PAD=yn][,DELIM=aqn])该语句用于建立文件名与文件号之间的联系,即打开一个文件。文件打开后,再之后对文件操作时,只需指定文件号,不再用文件名。该语句中各选项的作用如下:2020/1/106①UNIT=u,u表示被打开的文件号,可以是整型常数,如果为整型变量,必须先对其赋值,‘UNIT=’可以省略。②FILE=filename,用于指定打开的文件名,filename是一个字符表达式,在windows或DOS环境下常要指明盘符,路径和文件名与扩展名。③FORM=fm,用于指定文件的格式,fm可取‘FORMATTED’(打开有格式文件)或‘UNFORMATTED’(打开无格式文件)。当省略此项时,若打开的是顺序文件,则隐含为有格式的,若打开的是直接文件,则隐含为无格式的。④STATUS=sta,此项用于说明打开的是一个新文件还是一个已经存在的旧文件,sta可取‘CLD’或‘NEW’分别表示已存在的旧文件和新建文件;还可以取‘REPLACE’,表示文件存在时,再重建一次,原文件内容清除,当文件不存在时,建一个新文件;还可以取‘SCRATCH’此时不需在OPEN语句中使用‘FILE’项,它表示建一个临时文件,程序结束后自动删除;此项还可以取‘UNKNOWN’,这也是缺省值,其含义由编译程序确定,一般相当于REPLACE的作用。⑤ACCESS=acc,用于设置文件的存取方式。Acc可取‘SEQUENTIAL’,表示打开的是以顺序方式进行读写的文件,也就是打开顺序文件;还可取‘DIRECT’,表示打开直接读写的文件。缺省值为SEQUENTIAL。2020/1/107⑥RECL=rl,用于指定记录长度,当打开的是顺序文件时,以字节为单位,可以省略指定记录的最大长度;当打开的是直接文件时,此项不能省略,指定记录长度时,单位与编译器有关,如VisualFortran中为数值1时,表示一个整数所占字节个数。Rl可以是常量或变量(必须先赋值)。⑦ERR=label,label为语句标号,此项用于设置当打开文件的过程中发生错误时,去执行label所指的语句。⑧IOSTAT=ios,ios为一个整型变量,此项将OPEN语句执行的状态记入ios,若OPEN语句执行正确,则ios=0,若执行有错,ios0。⑨BLANK=blank,blank可取‘NULL’或‘ZERO’。当取NULL时,文件中各字段中的空格表示“空”,即没有任何内容,若取ZERO时,表示文件中各字段中的空格按零处理。⑩POSITION=pos,用于设置文件打开后的读写位置。Pos若取‘ASIS’,表示读写位置在文件开头,这是缺省值;pos若取“REWIND”,表示把打开文件的读写位置移到文件开头;pos若取‘APPEND’,表示将文件读写位置移到文件尾。2020/1/10811.ACTION=rw,用于设置文件的读写权限。rw可取‘READ’,表示对打开的文件只能进行读操作;rw可取‘WRITE’,表示对打开的文件只能进行写操作;rw可取‘READWRITE’,表示对打开的文件可以进行读取和写入,这是缺省值。12.PAD=yn,yn可取‘YES’,表示对打开的文件进行有格式读取时,一个记录前面无内容的字段用空格填充,这是缺省值;yn取‘NO’时,无内容字段不用空格填充。该项只对有格式文件使用。13.DELIM=aqn,aqn可取‘NONE’,表示只输出字符串中字符;aqn可取‘QUOTE’,表示输出的字符串用双撇号括起,aqn可取‘APOSTROPHE’,输出的字符串用单撇号括起。OPEN语句中的各项内容,除了文件号u之外,各项都是任选项,且各项的顺序是任意的。另外注意,OPEN语句可以打开已存在的旧文件或创建一个新文件,但要对文件进行读取操作时,一定要打开已存在的旧的文件。2020/1/109例如:open(2,file=’exu’,real=80,statue=’new’,access=’direct’,form=’formated’)该语句的作用是:打开一个名为‘exu’的新文件;文件号为2;文件中每个记录长度为80个字节;采用直接存取方式;文件内容是有格式的。open(8,file=’fx’,statue=’old’,form=’unformat,access=’direct’,real=10’)该语句的作用是:打开一个名为fx的旧文件;文件号为8;文件中的记录是无格式的;文件是直接存取文件,记录长度为8个字节。open(9,file=’F3’,status=’old’)该语句的作用是:打开一个文件名为F3的旧文年,并与文件号9关联。其他项省略,按FORTRAN规定,省略存取方式,表示为顺序文件,且文件中的记录是有格式的。2020/1/1010二、CLOSE语句CLOSE称关闭文件语句,文件使用后应使用该语句关闭文件,该语句的一般形式是:CLOSE([UNIT=]u[,IOSTAT=ios][,ERR=label][,STATUS=sta])其中STATUS选项与OPEN语句有所区别,其他各项的作用与OPEN相同。sta可取‘KEEP’,当文件关闭后保留这个文件,这是缺省值;还可以取‘DELETE’,文件关闭后删除这个文件.例如:close(2)表示关闭2号文件,关闭后文件仍保留。close(3,err=30,status=’delete’)该语句的作用是关闭3号文件,关闭后侧除该文件,如关闭过程中出现错误,转去执行30号语句。2020/1/1011三、文件的输入输出语句文件的输入输出也就是对文件进行读、写操作。文件的输入输出使用READ和WRITE语句。由于这两个语句中的各选项类似,所以放在一起给出它们的一般形式:READ/WRITE([UNIT=]u[,FMT=format][,NML=namelist][,REC=rm][,IOSTAT=ios][,ERR=label][,END=label][,ADVANCE=adv][,SIZE=count])ilist/olist这两个语句的功能分别是从指定文件读取一批数据赋给输入表ilist中的各元素或将输出表olist指定的一批数据写入文件。其中各项的含义如下:①UNIT=u,用于指定文件号,“UNIT=”可省略,当对磁盘文件读写操作时,该文件号必须是经OPEN语句指定的。u的使用规则同OPEN语句。②FMT=format,用于格式说明,format为格式说明符组成的格式说明,当其为‘*’号时为表控格式,注意表控格式不是无格式。2020/1/1012③NML=namelist,用于一种特殊的说明方法,使用此项时必须先用NAMELIST语句给被输入或输出的一组变量起一个名字,然后把这个名字写在NML项中,这里的namelist就是这组变量的名字,用它代替输入输出语句中的输入表ilist或输出表olist。④REC=rn,其中rn为记录号,可以是一个整数或可求值的整表达式,该项只用于直接文件的读写操作。⑤END=label,用于当读写到文件末尾时转去执行标号为label的语句去执行,label是本程序段中某个语句的标号。⑥IOSTAT=ios,ios是一个整型变量或数组元素,用于记录输入输出语句的执行状态。当读写操作出错时,ios中是大于0的整数;当读写操作正常结束时,ios的值等于0;当读写操作遇到文件时,ios的值为一个负整数。2020/1/1013⑦ERR=label,当读写过程中发生错误时,转去执行标号为label的语句。⑧ADVANCE=adv,仅用于有格式的顺序文件。adv可取‘YSE’,表示每执行一次读、写语句后,自动换到下一行;adv还可以取‘NO’,每次执行完读、写语句后不自动进行换行。使用此项一定要采用“格式说明”说明输入输出格式。⑨SIZE=count,当ADVANCE=‘NO’时才使用此项。count是一个整型变量,使用此项时,将一次输入输出的数据量,以字节为单位存入count中。⑩ilist/olist为输入输出表,其规定同前面各章节使用的READ或WRITE语句中的输入输出表相同。2020/1/1014READ和WRITE语句用于文件读、写操作的例子:read(10,‘(4F5.2
本文标题:FORTRAN95第05章-文件.
链接地址:https://www.777doc.com/doc-2872390 .html