fortran95的使用方法
当文件定位处于当前文件时,还可以更加详细地描述为定位于当前纪录的数据值序列的初始点或终止点,或纪录的任意两个数据值之间。即该纪录的紧接在数据值序列的第一个数据值前面的位置,或紧接在数据值序列的最后一个数据值后面的位置,或在数据值序列里面的任意两个数据值之间的位置。
● 内部文件总是在数据传输之前定位在纪录的开始位置。
● 预输入输出操作总是以纪录为单位的,因此完成这样一个操作之后,文件总是定位于一个纪录的终止位置或纪录之间的位置;而非预输入输出操作是以字符为单位的,因此完成一个非预输入输出操作之后,文件有可能定位于当前纪录的字符序列之间。 输入输出语句的运行总能影响外部文件的定位,根据作用效果的不同,输入输出语句可以分为如下两种:
● 预输入输出语句。
一个预输入输出语句总是在文件的最后一个纪录完成读写之后对文件定位,除非中途发生错误。
● 非预输入输出语句。
一个非预输入输出语句可以定位于当前纪录里面的字符位置,或者是随后的纪录上面。 运用非预输入输出语句就可以通过一个输入输出语句序列读写文件的纪录,其中每个语句访问纪录的一部分。这种语句也可以用来读可变长度的纪录。
在数据传输之前的文件的定位在直接访问文件与序列访问文件时有不同的约定: ● 序列输入时,如果存在当前纪录,那么文件定位不变;否则文件定位于下一个纪录的头部,自然该纪录就成为了当前纪录。如果这个纪录不存在,或者在存在当前纪录,而最近访问文件的数据传输语句执行的是输出,那么该输入就不执行。
● 如果文件包含文件终止纪录,那么在数据传输之前文件不能定位于文件终止纪录后面。
可以运用REWIND语句和BACKSPACE语句来对文件重定位。
● 序列输出时,如果存在当前纪录,那么文件定位不会变化,当前纪录成为文件的最后纪录;如果不存在当前纪录,那么就生成下一个纪录作为文件的当前纪录,文件定位于该当前纪录的头部。
● 如果是直接访问,文件的定位情形非常简单,即定位于纪录说明符所指定的纪录的头部。该纪录就是文件的当前纪录。
在数据传输过程结束之后,文件的定位有如下几种情形:
● 如果数据传输过程了发生错误,那么文件定位就是不可预知的。
● 如果数据传输过程没有发生错误,但是读入了文件终止纪录而导致文件终止,那么文件定位于文件终止纪录之后。
● 对于非预输入如果没有出现错误,也没有出现文件终止条件,但是出现了纪录终止条件,那么文件定位于刚读入的纪录之后;如果纪录终止条件也没有出现,那么文件定位不变。
● 对于非预输出如果没有出现错误,则文件定位不变。
● 在所有的其他情况下,文件定位于刚读写过的纪录之后,该纪录就成为了前纪录。