3

g96コンパイラを使用すると、次のようなエラーが発生しました。

INTENT(OUT) at variable 'SIZE' is never set.

以下は私のサブルーチンです。このエラーを修正する方法を知っていますか?本当にありがとう!

SUBROUTINE getFileItems(size,itemarray,pricearray,quantityarray)

INTEGER:: iost=0, i=0
INTEGER, INTENT(OUT):: quantityarray(50)
INTEGER, INTENT(OUT):: size
REAL, INTENT(OUT):: pricearray(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=44,FILE = namefiletoread, ACTION = "READ", !POSITION="REWIND",IOSTAT=iost)
IF(iost>0)STOP "Problem opening the file!"

DO i=1, size
READ(44,'(A,F6.2,I8)',IOSTAT=iost), itemarray(i), pricearray(i),quantityarray(i)
IF(iost<0)STOP
END DO


END SUBROUTINE
4

1 に答える 1

2

なんとかして「size」の値を初期化する必要があります。いくつかの可能な方法:1)サイズがサブルーチンの外部でわかっている場合は、size intent(in)を作成し、呼び出し元のルーチンで値を設定します。2)ユーザーに値の入力を求めます。3)配列の長さをファイルの最初の行を読み取ります。4)ファイルに可変数のアイテムが含まれている可能性がある場合は、EOFに達するまでファイルを読み取り、アイテムの数を数えます。無限ループを使用し、EOFに達したときに終了し、サイズを読み取ったアイテムの数に設定します。

于 2011-04-18T20:53:02.573 に答える