|
本帖最后由 pasuka 于 2017-11-16 13:03 编辑
还是同一个网上教程
http://micro.ustc.edu.cn/Fortran/ZJDing/Sec7-2.htm#第7_2_3e
存放在直接访问文件中的记录可以以任意顺序进行读写操作。文件中的记录从1开始连续编号,记录的长度是通过OPEN语句中的RECL选项来描述的。直接文件中的记录是通过指定要访问的记录号来实现的。因此,如果想要实现数据的随机访问可以使用直接访问文件。直接文件应用的一个最常见的实例就是数据库。在程序中可以用带有ACCESS=’DIRECT’设置项的OPEN语句来打开或建立直接文件。 直接文件中的每个记录的长度必须相等。如果实际输出的记录长度不等,则应取输出的所有记录中最大的长度作为每个记录的长度。如果使用一个老文件,在OPEN语句中说明的记录的长度必须与实际的记录长度一致。特别要注意尾随的空格符,它占一个字节。回车换行符不计入记录长度。用直接方式建立的文件可以使用顺序方式打开进行读操作。用顺序方式建立的文件,只要记录长度相等,也可以用直接方式打开进行读操作。 b) 格式化直接文件
在格式化直接文件中,所有记录的长度都相同并且可以以任意顺序读写。记录的长度由OPEN语句中的RECL=选项指定,该长度应该大于或等于最长的记录中的字节数。CR和LF是分隔符,不包括在RECL中。一旦某个直接访问记录被写入就不能再删除它,但可以覆盖这个记录。在输出到一个格式化直接文件时如果数据没有占满一个记录,则编译系统将在剩下的位置上补以空格,保证文件只包含长度相同的完整的记录。从文件中读数据时,当I/O列表或格式描述符中要读取的数据多于记录中的数据时,编译器也会以空格填充未读数据的变量。可以通过在打开文件的OPEN语句中设置PAD=NO来避免填补空格,此时输入记录必须有和输入列表和格式描述符所要求的一样多的数据,否则会产生错误。PAD=NO对输出没有影响。
例:OPEN(3,FILE=’FDIR’,FORM=’FORMATTED’,ACCESS=’DIRECT’,RECL=10)
WRITE(3,’(A10)’,REC=1) ’RECORD ONE’
WRITE(3,’(I5)’,REC=3) 30303
CLOSE(3)
END
|
|