内部文件是 CHARACTER 类型的对象,如变量、子串、数组、数组元素或结构化记录的字段。内部文件 READ 可以来自常量字符串。内部文件 I/O 通过由一个字符对象向另一数据对象传送和转换数据,模拟格式化 READ 和 WRITE 语句。不执行任何文件 I/O。
使用内部文件时:
出现在 WRITE 语句中的是接收数据的字符对象的名称而非单元号。在 READ 语句中,出现的是字符对象源的名称而非单元号。
常量、变量或子串对象构成文件中的单条记录。
使用数组对象,每个数组元素对应于一条记录。
内部文件上的直接 I/O。(Fortran 95 标准只包括内部文件上的顺序格式化 I/O。)除了不能更改文件中的记录数之外,这一点与外部文件上的直接 I/O 相似。此时,记录是字符串数组的单个元素。这项非标准扩展仅在用 -f77 标志编译的 FORTRAN 77 兼容模式下可用。
每一顺序 READ 或 WRITE 语句均始于内部文件的开头。
示例:从内部文件(仅有一条记录)中以顺序、格式化方式进行读取:
demo% cat intern1.f CHARACTER X*80 READ( *, ’(A)’ ) X READ( X, ’(I3,I4)’ ) N1, N2 ! This codeline reads the internal file X WRITE( *, * ) N1, N2 END demo% f95 -o tstintern intern1.f demo% tstintern 12 99 12 99 demo% |
示例:从内部文件(三条记录)中以顺序、格式化方式进行读取:
demo% cat intern2.f CHARACTER LINE(4)*16 DATA LINE(1) / ’ 81 81 ’ / DATA LINE(2) / ’ 82 82 ’ / DATA LINE(3) / ’ 83 83 ’ / DATA LINE(4) / ’ 84 84 ’ / READ( LINE,’(2I4)’) I,J,K,L,M,N PRINT *, I, J, K, L, M, N END demo% f95 intern2.f demo% a.out 81 81 82 82 83 83 demo% |
示例:在 -f77 兼容模式下,从内部文件(一条记录)中以直接访问方式进行读取:
demo% cat intern3.f CHARACTER LINE(4)*16 DATA LINE(1) / ’ 81 81 ’ / DATA LINE(2) / ’ 82 82 ’ / DATA LINE(3) / ’ 83 83 ’ / DATA LINE(4) / ’ 84 84 ’ / READ ( LINE, FMT=20, REC=3 ) M, N 20 FORMAT( I4, I4 ) PRINT *, M, N END demo% f95 -f77 intern3.f demo% a.out 83 83 demo% |