The 7.00 compiler, when used on the following test code with the /check option, gives an EXE that exhibits a runtime error ('Attempt to call a routine with argument number two containing too few array elements') at Line-23.
PROGRAM HWMQT
implicit none
integer :: nbf,p
real,allocatable :: gbz(:,:), gzwght(:)
nbf = 5
p = 4
allocate(gbz(nbf,p))
allocate(gzwght(p))
gzwght = 0.7
call update(gbz,gzwght)
write(*,*)gbz(1,1)
stop
CONTAINS
subroutine update(ebz,zwght)
implicit none
real,intent(inout),target :: ebz(nbf,p)
real,intent(in) :: zwght(p)
real, pointer :: ptr
ptr => ebz(1,1)
ptr = 1.5+zwght(2)
return
end subroutine update
end program HWMQT
The line number in the error pop-up is for the CONTAINS line rather than the SUBROUTINE line below it; I do not see why the compiler thinks that there is a problem with the second argument -- it has been allocated with the same bounds as in the argument declaration.
Please note that the presence of the TARGET attribute for that argument is significant. If the code is modified to remove that attribute, the bug goes away.