编译器生成的临时 I/O 项

在某些情况下,编译器必须生成一个临时变量来保存 I/O 项表达式的结果。

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