Ihr Problem scheint zu sein, dass array
einfach nicht deklariert ist. Es hat keinen impliziten Typ, da Sie die implizite Typisierung mit IMPLICIT NONE
mit Bedacht deaktiviert haben.
Es gibt zwei mögliche Dinge, die ein Element mit array(<int>)
aufgerufen werden könnte: Es könnte ein Array oder eine Funktion sein. Der Compiler, nicht in der Lage die richtige Schlüsse zu machen, den Verdacht hegt, dass Sie irgendwo gesucht haben könnte, eine Funktion zu deklarieren:
function array(i)
implicit none
integer :: i
<some type> :: array
<some code that calculates array>
end function array
Aber weil es Sie keinen Code dieser Art, sagt es gefunden hat, dass Sie nicht implementiert es noch, und Sie haben es auch nicht erklärt.
Was ich vermute, weil ich nicht nur Fortran, sondern auch etwas Englisch verstehe, ist, dass es eher ein Array vom Typ REAL*4
sein soll.
diesen So versuchen:
program test
implicit none
integer*4 nxProjPad, cf, numViews, cc, index, indRad, iv, i
real*4 v4, v5, SS
! Create an allocatable array (allocatable, because we only know
! the size once nxProjPad and numViews have been set.)
real*4, dimension(:), allocatable :: array
nxProjPad=185
numViews=180
! both indRad and index get incremented for each
! iteration of either loop, so the maximum array index
! is the product of numViews and nxProjPad
allocate(array(numViews*nxProjPad))
v4 = 0.
v5 = 0.
SS = 0.
! These weren't originally initialised before their first use.
! Correct that
indRad = 1
index = 1
cf = NINT(nxProjPad/2.)
do iv = 1, numViews
do i = 1, nxProjPad
v4 = v4 + array(index)
v5 = v5 + array(indRad)
SS = SS + ABS(array(index))
indRad = indRad + 1
index = index + 1
enddo
enddo
! Properly deallocate the array again
deallocate(array)
end program test
Natürlich weiß ich immer noch nicht, was es tun soll ist, und es gibt noch ein paar seltsamen Eigenschaften. (Zum Beispiel soll es einen Unterschied zwischen index
und indRad
geben, denn im Moment werden sie immer den gleichen Wert haben.)
Was denkst du, "Array" ist? Der Compiler denkt, dass es sich um eine Funktion handelt, für die Sie keine Definition angegeben haben. Ich kann keine Deklaration irgendeiner Sache sehen, die "Array" genannt wird. –
Verwenden Sie das Tag 'fortran' für Ihre Fortran-Fragen. Sie können bei Bedarf eine bestimmte Version hinzufügen (nicht hier). –