File io 使用数组包含fortran中已打开文件的单位或名称
有没有办法让数组(由File io 使用数组包含fortran中已打开文件的单位或名称,file-io,fortran,File Io,Fortran,有没有办法让数组(由fortran内部子例程返回)包含已由fortran程序打开的文件的单位或名称 提前感谢是这里有一个将单位编号放入数组的示例 PROGRAM LUN_ARRAY_TEST INTEGER N PARAMETER(N=10) INTEGER LUNS(N) INTEGER I CALL OPEN_FILES(N,LUNS) DO I=1,N WRITE(6,*) "L
fortran
内部子例程返回)包含已由fortran
程序打开的文件的单位或名称
提前感谢是这里有一个将单位编号放入数组的示例
PROGRAM LUN_ARRAY_TEST
INTEGER N
PARAMETER(N=10)
INTEGER LUNS(N)
INTEGER I
CALL OPEN_FILES(N,LUNS)
DO I=1,N
WRITE(6,*) "LUN ",I," = ",LUNS(I)
ENDDO
CALL WRITE_LINES(N,LUNS)
CALL CLOSE_FILES(N,LUNS)
END
SUBROUTINE OPEN_FILES(N,LUNS)
INTEGER N
INTEGER LUNS(N)
INTEGER I, LUN
CHARACTER*80 FILENAME
DO I=1,N
LUN=60+I
WRITE(FILENAME,100) I
100 FORMAT('FILE',I3.3)
OPEN(UNIT=LUN,FILE=FILENAME,ACTION='WRITE')
LUNS(I)=LUN
ENDDO
END
SUBROUTINE WRITE_LINES(N,LUNS)
INTEGER N
INTEGER LUNS(N)
INTEGER I
DO I=1,N
WRITE(LUNS(I),*) I
ENDDO
END
SUBROUTINE CLOSE_FILES(N,LUNS)
INTEGER N
INTEGER LUNS(N)
INTEGER I
DO I=1,N
CLOSE(LUNS(I))
ENDDO
END
您忘了包含测试代码。答案是肯定的。我可以通过do循环获取已打开文件的单位或名称,但我希望将它们作为泛型子例程返回的数组来获取。是否要使用内部子例程?如果没有,您将不得不编写自己的routineThere没有内在的子例程来执行此操作。此外,任何用户编写的子例程都必须面对预连接的挑战。鉴于这一挑战,如果您能够进一步准确描述您的需求,可能会有所帮助。文件和单元可能是解决方案的一部分。谢谢,在您的代码中,您知道现在打开了哪些文件,因为您自己已经打开了它们。这不是我的情况。在我的情况下,我不知道现在有多少文件是以什么名称和单元号打开的。所以我需要一个子程序,它告诉我,例如,有N个文件,这些文件的名称和单元号现在是打开的。