Paul,
Could a minimum FTN95_64 be :-
- support for SLINK_64 to generate a 64-bit exutable,
- Allocate > 2gb arrays and
- subroutine array arguments could be explicitly declared as huge ?
So :-
- Library routines limited to 2gb, so no change.
- Array intrinsics limited to 2gb, so no change.
- Write to/from big arrays could be excluded, so no change for I/O.
It would be good to generate a 64-bit exutable !
The code I would like to compile is SUBROUTINE REDCOL (A, B, NB, JB, JT, IL) ! ! Reduces vector 'A' by block 'B' ! real8, dimension(), huge, intent (inout) :: a real8, dimension(), huge, intent (in) :: b integer8, dimension(), huge, intent (in) :: nb INTEGER4 JB, JT INTEGER8 IL ! REAL8 VECSUM_big EXTERNAL VECSUM_big ! integer8 I0, J, JBOT, JPOINT, JBAND, J0, JL ! IF (JB > JT) RETURN JBOT = NB(1) I0 = 1-IL DO J = JB,JT JPOINT = J - JBOT + 3 J0 = NB(JPOINT) - J JL = NB(JPOINT-1) - J0 + 1 IF (IL > JL) JL = IL JBAND = J - JL IF (JBAND < 1) CYCLE A(J+I0) = A(J+I0) - VECSUM_big (A(JL+I0), B(JL+J0), JBAND) END DO ! RETURN END
REAL*8 FUNCTION VECSUM_big (A, B, N)
!
! Performs a vector dot product VECSUM = [A] . [B]
!
integer*8, intent (in) :: n
real*8, dimension(n), huge, intent (in) :: a
real*8, dimension(n), huge, intent (in) :: b
!
real*8 c
integer*8 i
!
c = 0.0
do i = n,1,-1
c = c + a(i)*b(i)
end do
vecsum_big = c
RETURN
!
END
John