NAG compiler requires to define variable before its usage in type declaration section. For example, the following code is not correct:
subroutine test(a, n)
implicit none
real(8) :: a(n)
integer :: n
end subroutine test
since usage of n happens before actual type definition.
The proper code is:
subroutine test(a, n)
implicit none
integer :: n
real(8) :: a(n)
end subroutine test