Please compile and link the test program below with /64 /check or /64 /checkmate.
Open the EXE in SDBG64, and place a breakpoint on the indicated line. Run until the breakpoint is hit.
Hover the mouse on each of the dummy arguments in the subroutine header line. When you place the mouse pointer on the second dummy argument, TL, the debugger says 'TL = COMPLEX*8 Array size not known'. The entry for TL in the Variables pane shows the same incorrect description.
The array size is declared as (3, 3) in the subroutine as well as in the calling main program.
If you next place the mouse pointer on TL in the subroutine header line and right-click, you will see 'TL): Too many closing brackets'. Likewise if you click on the entry for TL in the Variables pane.
This problem does not occur with 32-bit SDBG. The problem is present with SDBG64 versions 8.64, 8.50 and 8.30.
program crazy
real :: vcg = 2.17
complex :: tl(3,3), excl(3), tlg(3,3), exclg(3)
excl(1:3) = (0.0, 0.0)
tl(1,1)= (11.1,-11.1)
tl(2,1)= (21.2,-21.2)
tl(3,1)= (31.3,-31.3)
tl(1,2)= (12.4,-12.4)
tl(2,2)= (22.5,-22.5)
tl(3,2)= (32.6,-32.6)
tl(1,3)= (13.7,-13.7)
tl(2,3)= (23.8,-23.8)
tl(3,3)= (33.9,-33.9)
call trnlat(vcg, tl, excl, tlg, exclg)
print *, exclg
stop
end program
subroutine trnlat(vcg, tl, excl, tlg, exclg)
implicit none
real vcg
complex :: tl(3,3), excl(3), tlg(3,3), exclg(3)
tlg(1,1) = tl(1,1) ! Put breakpoint here.
tlg(1,2) = tl(1,2) + vcg*tl(1,1)
tlg(1,3) = tl(1,3)
tlg(2,1) = tlg(1,2)
tlg(2,2) = tl(2,2) + vcg*(tl(1,2)+tl(2,1)+vcg*tl(1,1))
tlg(2,3) = tl(2,3) + vcg*tl(1,3)
tlg(3,1) = tl(3,1)
tlg(3,2) = tl(3,2) + vcg*tl(3,1)
tlg(3,3) = tl(3,3)
exclg(1) = excl(1)
exclg(2) = excl(2) + vcg*excl(1)
exclg(3) = excl(3)
return
end subroutine