Ich brauche in einem Programm einige zuweisbare Arrays Subroutinen übergeben, und ich muss wissen, ob die Art, wie ich es tun, sind im Standard oder nicht.Fortran, zuweisbare Arrays zu einer Unterroutine mit richtigen Grenzen
Wenn Sie wissen, wo ich nach dem Standard von Fortran suchen kann, sagen Sie mir bitte.
Hier ist ein kleiner Code, der besser als Worte erklären
program test
use modt99
implicit none
real(pr), dimension(:), allocatable :: vx
allocate(vx(-1:6))
vx=(/666,214,558,332,-521,-999,120,55/)
call test3(vx,vx,vx)
deallocate(vx)
end program test
mit dem Modul modt99
module modt99
contains
subroutine test3(v1,v2,v3)
real(pr), dimension(:), intent(in) :: v1
real(pr), dimension(0:), intent(in) :: v2
real(pr), dimension(:), allocatable, intent(in) :: v3
print*,'================================'
print*,v1(1:3)
print*,'================================'
print*,v2(1:3)
print*,'================================'
print*,v3(1:3)
print*,'================================'
end subroutine test3
end module modt99
auf dem Bildschirm, ich
================================
666.000000000000 214.000000000000 558.000000000000
================================
214.000000000000 558.000000000000 332.000000000000
================================
558.000000000000 332.000000000000 -521.000000000000
================================
So sind die drei Möglichkeiten, von Dummy-Argumenten in Subroutine test3 legal (in welcher Version von Fortran, 90, 95, 2003?) und sind ihr Verhalten normal?
Vielen Dank für Ihre Antwort, es wird mir sehr helfen. In dem Link, den du gibst, scheint es auch in F95 in Ordnung zu sein oder nicht? – user2910558
* Alle * Standarddokumente sind dort angegeben, beginnend mit * Fortran für IBM 704 * (1957!). –