我需要关闭并删除几个文件,一旦它们打开,内容存储在一些变量中。为避免重复语法,我可以使用:
OPEN(UNIT = 27, FILE = "C:/Abaqus_JOBS/w.txt", status = "UNKNOWN")
C
READ(UNIT,END=1000) w
1000 CLOSE (UNIT, status='delete') ,
所以我只需要指定CLOSE (UNIT, status='delete')
一次?
由于
答案 0 :(得分:2)
我个人不会使用end语句,而是调用一个关闭正确文件的子例程:
subroutine del_file(uFile, stat)
implicit none
integer uFile, stat
c If the unit is not open, stat will be non-zero
close(unit=uFile, status='delete', iostat=stat)
end subroutine
你读的陈述就是:
read(unit=curUnit, iostat=stat) w
if ( stat .ne. 0 ) call del_file(curUnit, stat)
你仍然需要一些逻辑,不要从关闭文件中读取。我建议使用一个数组来保存与输入文件对应的所有单位。
答案 1 :(得分:1)
你可以,但是你会在1000 CLOSE...
之间做任何事情,然后重新调用它。也就是说,
READ(UNIT=27, END=1000)
1000 CLOSE(STATUS='delete')
... computations ...
READ(UNIT=28, END=1000)
会让你重新做... computations ...
,这可能是你不想想要的。可能更容易明确地编写CLOSE
命令,或者正如亚历山大在评论中所说,编写一个关闭文件的函数,给定特定的文件ID,并删除它:
FUNCTION FileClose(lun) RESULT(ierr)
INTEGER :: lun, ierr
CLOSE(lun, STATUS='delete', IOSTAT=ierr)
END FUNCTION