文档介绍:第十一章文件
文件的概念
文件的打开与关闭
文件的读写
文件应用举例
一、文件的概念
数据文件是存放在外部介质上数据的集合。
数据文件由记录组成。它是数据传递的基本实体,是计算机内存与外部设备传递信息的最小单位。
记录分为格式记录和无格式记录。格式记录是一个字符的序列,在计算机内部以ASCII码形式存放,输出时转换成外部形式。无格式记录是由二进制值的序列组成。这些二进制值是FORTRAN数据的内部表示,输入输出时无需作格式转换,其速度较快。
根据记录的数据存放形式可分为格式文件和无格式文件。由格式记录组成的文件称为格式文件,由无格式记录组成的文件称为无格式文件。
根据文件的存放方式分为顺序文件和直接文件。
顺序存取是指将文件的记录按建立的时间先后顺序依次存放在存储介质中。
直接存取,又称随机存取。它是指将文件记录由程序指定的某一位置直接存取。
顺序文件的存取操作必须从头到尾顺序进行。直接文件也称为随机文件,文件中的每一个记录都有一个记录号,可以按记录号对指定的记录进行读写。
顺序存取的文件中所有的记录长度可以完全不同,而直接存取的文件中的记录的长度由OPEN语句中的说明项“RECL=”指定,每个记录长度相同。
例以顺序方式和直接方式将字符型、数值型数据写入文件中。
OPEN(10,FILE="",FORM="FORMATTED",&
ACCESS="SEQUENTIAL")
WRITE(10,100)911
WRITE(10,200) "E"
OPEN(11,FILE="",FORM="FORMATTED" , &
ACCESS="DIRECT",RECL=10)
WRITE(11,100,REC=1)911
WRITE(11,200,REC=2) "E"
100 FORMAT(1X,I5)
200 FORMAT(1X,A15)
END
二、文件的打开与关闭
1. OPEN语句
OPEN语句将设备号与文件名联系起来,并指定文件的各项性质,其一般格式为:
OPEN([UNIT=]ie[,FILE=ce][,ACCESS=ce][,FORM=ce][,RECL=ie])
UNIT=ie是设备号说明,设备号是一个整型表达式。
FILE=ce是指定文件名。
ACCESS=ce是文件存取方式说明。可用'SEQUENTIAL'或'DIRECT',缺省'SEQUENTIAL'。
FORM=ce是记录格式说明。可用'FORMATTED'或'UNFORMATTED'。对于顺序文件隐含为有格式,对于随机文件,隐含为无格式。
RECL=ie说明记录长度,仅用于直接文件。
2. CLOSE语句
CLOSE语句解除设备号与文件的连接,即关闭该文件。一般格式是:
CLOSE ([UNIT=]ie[,STATUS=ce])
其中STATUS=ce说明文件被关闭后的状态:'KEEP'(保留)、"DELETE'(删除),缺省状态为'KEEP'。
三、文件的读写
READ([UNIT=]ie[,FMT=]格式说明[,REC=ie][,END=L]
[,ERR=L])输入表
REC=ie为记录号说明,仅适用于直接存取文件。
END=L为文件结束说明,遇到文件结束标志时转向标号为L的语句去执行。WRITE语句中无此项。
ERR=L为出错说明,当产生错误时,转向标号为L的语句去执行。
WRITE([UNIT=]ie[,FMT=]格式说明[,REC=ie][,ERR=L])输出表
3 内部文件
内部文件用字符串或字符数组作为单元标识, 通过内部文件,利用格式输入输出可以实现内存和外部字符表示之间值的相互转换。
(1)用READ语句将ASCII码转换成数值型、逻辑型、字符型。
例分析下列程序的输出结果。
CHARACTER str(2)*10
REAL n(2)
LOGICAL lo
DATA str/ ' 2','.TRUE.'/
READ(str(1), 200) n ,m !字符型转换成数值型
READ(str(2), *) lo !字符型转换成逻辑型
200 FORMAT(, I3)
WRITE(*,*) n, m,lo
END
(2)利用WRITE语句将数值型、逻辑型、字符型转换成ASCII码。
假设磁盘上有70个文件,文件的主文件名首字符都为“F”,后两个字符为文件序号(),编写程序,实现根据输入的序号打开相应文件。
CHARACTER fname*7
WRITE( *, *) "请输入两位数的文件序号:"
READ( *, *) i
WRITE (fname, 200) I !合并字符串
200