mecej4
Joined: 31 Oct 2006 Posts: 1896
|
Posted: Mon Sep 05, 2016 3:23 pm Post subject: SDBG64 does not allow setting breakpoint |
|
|
The program given below works normally, and can be run under SDBG as usual in 32-bit mode.
If the program is compiled for 64-bit and run under SDBG64, attempting to set a breakpoint on Line-57 (the SELECT statement) causes a message to be put up stating that the line in question cannot be used as a breakpoint.
Code: |
module globdata
implicit none
character (len=8) :: dsname
integer :: n_obs = 6, n_par = 2, n_nlin = 1, n_lin = 1
integer :: nf, lind, seqno = 2
double precision :: t(6) = (/ 1d0, 2d0, 3d0, 5d0, 7d0, 10d0 /)
double precision :: yd(6) = (/ 109d0, 149d0, 149d0, 191d0, 213d0, 224d0 /)
double precision :: s1(2) = (/ 1d0, 1d0 /), alf(1), bet(1)
integer :: ind(2, 1), nlid(1)
logical :: islin(2)
double precision :: rss, rsd
end module globdata
subroutine get_ind()
use globdata
implicit none
integer :: i0ind(2) = (/ 1, 0 /)
!
seqno = 2
n_nlin = 1
n_lin = 1
lind = n_lin + 1
ind = transpose(reshape(i0ind,(/n_nlin,lind/)))
nlid = (/ 2 /)
islin(1:n_par)=.true.
islin(nlid) = .false.
return
end subroutine get_ind
program xdnlsfu
use globdata
implicit none
integer liv, nzero, bterm, jlen, lv
integer, allocatable :: iv(:)
double precision, allocatable :: v(:), phi(:,:)
!
call get_ind()
nzero = count(ind==1)
alf = s1(nlid)
bterm = n_lin*(n_lin+3)/2
jlen = (n_lin+n_nlin)*(n_obs+n_lin+n_nlin+1)
liv = 122 + 2*nzero + 4*n_nlin + 2*n_lin + max(n_lin+1, 6*n_nlin)
lv = 105 + 2*n_obs*(n_lin+3) + jlen + bterm + n_nlin*(2*n_nlin+18)
allocate (iv(liv), v(lv), phi(n_obs,n_lin+1))
call fitfun(n_obs, n_nlin, n_lin, alf, phi)
deallocate (iv, v, phi)
!
end program xdnlsfu
!
subroutine fitfun(n_obs, n_nlin, n_lin, alf, phi)
use globdata, only: seqno, t
implicit none
integer n_nlin, n_lin, n_obs
double precision :: phi(n_obs, n_lin+1), alf(n_nlin)
double precision, parameter :: pi = 3.1415926535897932d0
!
select case (seqno) ! <<=== problem line
case (1) ! Bennett5
phi(:, 1) = (t+alf(1))**(-1/alf(2))
case (2) ! BoxBOD
phi(:, 1) = 1 - exp(-alf(1)*t)
case (3, 4) ! Chwirut1,2
phi(:, 1) = exp(-alf(1)*t)/(alf(2)+alf(3)*t)
end select
return
end subroutine fitfun
|
|
|