Tôi cần trong một chương trình để truyền một số mảng có thể phân bổ tới các chương trình con, và tôi cần biết cách tôi làm theo tiêu chuẩn hay không.fortran, truyền các mảng phân bổ tới một chương trình con với các giới hạn bên phải
Nếu bạn biết nơi tôi có thể tìm kiếm tiêu chuẩn của fortran, hãy cho tôi biết.
Dưới đây là một mã nhỏ mà tốt hơn sẽ giải thích hơn lời nói
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
với các module 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
trên màn hình, tôi nhận được
================================
666.000000000000 214.000000000000 558.000000000000
================================
214.000000000000 558.000000000000 332.000000000000
================================
558.000000000000 332.000000000000 -521.000000000000
================================
Vậy là ba cách của các đối số giả trong chương trình con test3 hợp pháp (trong phiên bản nào của fortran, 90, 95, 2003?) và là hành vi của chúng bình thường?
cảm ơn câu trả lời của bạn, nó sẽ giúp tôi rất nhiều. Trong liên kết bạn đưa ra, nó có vẻ là ok trong f95 quá, hay không? – user2910558
* Tất cả * Các tài liệu chuẩn được cung cấp ở đó, bắt đầu từ * Fortran cho IBM 704 * (1957!). –