编译器生成的临时 I/O 项
在某些情况下,编译器必须生成一个临时变量来保存 I/O 项表达式的结果。
在这种情况下,无论您在I/O语句中指定的传输模式如何,同步I/O都会在临时变量上执行。 以下是一些案例:
- 对于 READ当输入项中出现带有向量下标的数组时:
integer a(5), b(3) b = (/1,3,5/) read(99, id=i) a(b)real a(10) read(99,id=i) a((/1,3,5/))
- 对于 WRITE当输出项是一个表达式,且该表达式是一个常量或某些派生类型的常量时:
write(99,id=i) 1000integer a parameter(a=1000) write(99,id=i) atype mytype integer a integer b end type mytype write(99,id=i) mytype(4,5)
- 对于 WRITE当输出项为临时变量时:
write(99,id=i) 99+100write(99,id=i) a+bexternal ff real(8) ff write(99,id=i) ff()
- 对于 WRITE当输出项是一个数组构造表达式时:
write(99,id=i) (/1,2,3,4,5/) - 对于 WRITE当输出项是一个标量数组的表达式时:
integer a(5),b(5) write(99,id=i) a+b