Ich kämpfe mit einem Code, den ich von einer anderen Person bekam. Er verwendet Module, um Arrays zu versorgen, die von der Hauptroutine benötigt werden. Was ich brauche, ist ein Array mit Zahlen von 500 bis 3500.Fortran: Wie man Werte in einem Modul zuweist
Er tat dies durch
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./
mir jetzt schreibe dies scheint sehr kompliziert! Außerdem muss myArray Ganzzahlen enthalten, aber natürlich möchte ich nicht alle diese Punkte entfernen.
Also zuerst habe ich versucht, dies:
Do i=1,3001
myArray(i) = i+499
End Do
Aber ich bekomme
"Fehler # 6274: Diese Aussage muss erscheinen nicht in der Spezifikation Teil eines Moduls"
Was mache ich falsch?
Wenn Sie keine explizite Initialisierung haben wollen (im Sinne von "zur Kompilierzeit", also mit ausführbaren Anweisungen) dann die Antworten in [diese andere Frage] (http://stackoverflow.com/q/30073737) sich bewerben. Aber wirklich, ein [Array-Konstruktor] (http://stackoverflow.com/documentation/fortran/996/arrays/6858/array-constructors#t=201608291552201114144) mit impliziert tun, um ein explizit initialisiertes Array dieses Aussehens zu bekommen, ist kein Problem . – francescalus