Zugriff auf Elemente des zurückgegebenen Arrays in Fortran

Wie greift man auf ein Element eines Arrays zu, das von einer Funktion zurückgegeben wird? Zum Beispiel,shape() gibt ein Array von Ganzzahlen zurück. Wie vergleicht man ein Element dieses Arrays mit einer ganzen Zahl? Folgendes wird nicht kompiliert:

integer :: a
integer, dimension(5) :: b

a = 5
if (a .eq. shape(b)) then
    print *, 'equal'
end if

Der Fehler ist:

if (a .eq. shape(c)) then
    1
Error: IF clause at (1) requires a scalar LOGICAL expression

Ich verstehe, dass das daran liegtshape(c) gibt ein Array zurück. Der Zugriff auf ein Element des Arrays scheint jedoch wie folgt nicht möglich zu sein:shape(c)(1)

Nun, wenn ich diese beiden Zeilen hinzufüge:

integer, dimension(1) :: c
c = shape(b)

... und ändern Sie dieif Klausel dazu:

if (a .eq. c(1)) then

... dann klappt es. Aber muss ich wirklich eine zusätzliche Array-Variable deklarieren, um den Rückgabewert von zu halten?shape(), oder gibt es eine andere Möglichkeit?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage