Я борюсь с кодом, который я получил от другого человека. Он использует модули для подачи массивов, которые необходимы основной рутине. Что мне нужно, это массив с номерами от 500 до 3500.Fortran: Как назначить значения в модуле
Он сделал это, написав
INTEGER :: i
REAL :: myArray(3001)
DATA (myArray(i),i=1,100)/&
500., 501., 502., 503., [...] 599./
DATA (myArray(i),i=101,200)/&
600., 601., [...], 699./
[...]
DATA (myArray(i),i=2901,3001)/&
[...] 3498., 3499., 3500./
Теперь мне это кажется очень сложным! Кроме того, мне нужно, чтобы myArray содержал целые числа, но, конечно, я не хочу удалять все эти точки.
Так сначала я попытался это:
Do i=1,3001
myArray(i) = i+499
End Do
Но я получаю
"Ошибка # 6274: Это утверждение не должно появиться в спецификации части модуля"
Что мне делать не так?
Если вы не хотите иметь явную инициализацию (в смысле «во время компиляции», поэтому с помощью исполняемых инструкций), то ответы в [этом другом вопросе] (http://stackoverflow.com/q/30073737) подать заявление. Но действительно, [конструктор массива] (http://stackoverflow.com/documentation/fortran/996/arrays/6858/array-constructors#t=201608291552201114144) с подразумеваемым, чтобы получить явно инициализированный массив этого вида, не проблема , – francescalus