- 第一章 Fortran 语言程序设计初步
- 第二章 改变程序流程
- 第三章 循环结构
- 第四章 数据结构
- 第五章 数组
- 第六章 过程和模块
- 第七章 输入输出和文件
7.2.1 逻辑设备和文件
a) 逻辑设备
在 Fortran 中对文件和外部设备的操作都是通过逻辑设备进行的。在对文件和外部设备进行操作之前,都要把它们连接到逻辑设备上。内部文件的设备描述符和外部文件的设备描述符是不同的:内部文件用一个字符变量或其它变量名来描述,外部文件用 OPEN 语句打开文件时的数字(单元号) 作为文件的描述,或是用默认的设备单元号包括星号(*) 作为文件的描述。对于一个设备描述符,不能同时连接一个以上文件同样,—个文件也不能同时与一个以上设备描述符连接。在 F90 中,可以用 OPEN 语句打开一个已经打开的文件,但是通过这种方式打开的文件只能对这个文件的输入输出属性选项进行修改,而不能对其进行输入输出操作。
除下列三种情况,必须在每个输入输出语句中使用设备描述符:
1) 使用 PRINT 进行输出,PRINT 语句的输出是把数据输出到标准输出设备上(单元号 6,即屏幕)。例:PRINT I
2) 只包含一个 I/O 列表和格式描述符的 READ 语句以及名称列表 READ 语句,其形式为:READ 格式描述符 [,I/O 列表]和 READ 名称列表,它是从标准输入设备上(单元号 5,即键盘) 输入数据的。
3) 对文件按文件名进行的 INQUIRE 操作,这时查询的参数是文件名,而不是连接着文件的设备号。
b) 外部文件
根据所操作的文件是否在内存中可以把文件分为内部文件和外部文件。当把内存中的数据记录到到磁盘的文件中或输入输出到其他外部设备如打印机、显示器、键盘上时,被称为外部文件。连接着一个外部文件的设备描述必须是—整型表达式或是星号(*),其整型表达式的取值范围在-32768 到 32767 之间。
例:OPEN(UNIT=10,FILE=’output.dat’)
WRITE(10,’(A)’) ’how are you? ’
在 Fortran 中有 4 个预定义的外部文件(设备):
设备号 | 连接的设备 |
星号(*) | 总是键盘和显示器 |
0 | 缺省状态下是键盘和显示器 |
5 | 缺省状态下是键盘 |
6 | 缺省状态下是显示器 |
不能关闭星号设备号。设备号 0,5,6 可以通过 OPEN 语句连接到其他文件上,当在程序中关闭设备号是 O,5,6 的外部文件后,如果下次还要使用这些设备号进行输入输出操作,这些设备号将自动连接到它们各自的缺省的设备上去。
c) 内部文件
内存中的数据也可以像磁盘上的文件一样进行操作。把连接到设备描述符上的、进行与文件相类似的操作的一块内存中的数据称为内部文件。连接着一个内部文件的设备描述符是—个字符串或是一个字符数组。使用内部文件的规则是:对内部文件只能使用格式化的输入输出操作,包括用格式描述符和直接列表来限定格式的输入输出操作。只能用 READ 和 WRITE 语句对内部文件进行操作,不能用文件连接(OPEN)、文件指针位置的设置(REWIND,BACKSPACE) 或是文件属性查询(INQUIRE) 语句。
利用内部文件及输入输出系统的格式化功能,可以实现数据在外部的字符表示和在内存表示之间的转换。即可以通过从—个内部文件中读取数据到—个变量或数组中实现 ASCII 的存储方式到数字、逻辑或字符等内存存储方式的转换,或者是通过把—个变量写到内部文件中,实现内存存储方式到 ASCII 存储方式的转换。
在进行内部文件的写操作时,当写入的内容长度小于内部文件的一个记录的长度时,记录中剩余的空间被空格填满;大于时多余的数据将被删除。在进行内部文件的读操作时,当内部文件的一个记录的长度小于希望读取的数据长度时,没有读取到数据的变量填为空格;大于时多余的内部文件数据被删除。
例:CHARACTER(10) str
CHARACTER(14) fname
str = " 1 2 3"
READ(str,*) n1,n2,n3 !直接列表 READ 语句设置 n1=1, n2=2, n3=3
i=4
WRITE(fname,200) i !格式化 WRITE 语句设置 fname ='FM004.DAT'.
200 FORMAT('FM',I3.3,'.DAT')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论