Проблема чтения из файла и сохранения в массиве - PullRequest
3 голосов
/ 19 апреля 2011

При использовании компилятора 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

1 Ответ

2 голосов
/ 19 апреля 2011

Вам нужно как-то инициализировать значение "size".Несколько возможных методов: 1) Если размер известен подпрограмме извне, задайте размер intent (in) и задайте значение в вызывающей подпрограмме, 2) запросите у пользователя значение, 3) укажите длину массива вПервая строка файла и читать его.4) Если файл может иметь переменное количество элементов, читайте его, пока не нажмете EOF, считая количество элементов.Используйте бесконечный цикл и выходите, когда вы нажимаете EOF, устанавливая размер равным количеству прочитанных элементов.

...