2011-04-18 53 views
3

在Fortran 95上,我收到一条错误消息,指出itemarray(size)不能是意图(out),因为您正在从文件中读取itemarray,所以这没有任何意义。我该如何解决这个错误?从数组中读取问题

在这个子程序中,我基本上试图从文件中读取数据并将其存储在数组中。

下面是我提到的子程序的代码。任何帮助表示赞赏。谢谢你的时间。

SUBROUTINE readItems(size,itemarray,priarray,quarray) 

INTEGER:: iost=0, i=0 
INTEGER, INTENT(OUT):: quarray(50) 
INTEGER, INTENT(OUT):: size 
REAL, INTENT(OUT):: priarray(50) 
CHARACTER(20),INTENT(OUT)::itemarray(50) 
CHARACTER(20)::namefiletoread 

PRINT*,"Enter the name of file you would like to read: " 
READ*,namefiletoread 

OPEN(UNIT=77,FILE = namefiletoread, ACTION = "READ", STATUS="REWIND",IOSTAT=iost) 
IF(iost>0)STOP "Problem opening the file!" 

DO i=1, size 
READ(77,'(A,F6.2,I8)',IOSTAT=iost), itemarray(i), priarray(i),quarray(i) 
IF(iost<0)STOP 
END DO 


END SUBROUTINE 
+1

你使用哪种编译器(使用哪个选项),以及你得到的确切错误信息是什么?用'gfortran -c -std = f95'编译只给了我一个警告:“在(1)的OPEN语句中的状态说明符的值为'REWIND'”,这是正确的,因为你应该使用说明符POSITION ='REWIND' 。 – eriktous 2011-04-18 11:17:48

+0

我正在使用g95。我用状态=“倒带” – EuropaDust 2011-04-18 12:05:35

+0

我认为你可能是对的。而不是status =“rewind”,它应该是position =“rewind”。 – EuropaDust 2011-04-18 12:34:05

回答

3

问题可能出在变量“size”。它被声明为intent(out),显然它不是来自调用函数,并且在开始迭代它之前似乎没有被分配到任何地方。