The subroutine source below has been drastically pared down, so it is definitely not going to run meaningfully even though it has correct syntax. With /undef or other options, 32-bit compilations run fine. With /64 /undef, the current compiler aborts after attempting to read from address 0x00000018.
subroutine plqdb1(nf, ix, ic, ica, h, idecf, eta2)
implicit none
integer, parameter :: double = kind(0.d0)
integer :: nf,idecf,ix(*),ic(*),ica(*)
real(double) , intent(in) :: eta2
real(double), dimension(*) :: h
!-----------------------------------------------
integer :: nca, ncr, j, inf, kc
real(double) :: temp
integer , allocatable :: kc1u(:), k1u(:)
!-----------------------------------------------
if (idecf == 0) then
temp = eta2
call mxdpgf (nf, h, inf, temp)
idecf = 1
endif
if (nca > 0) then
allocate(k1u(nca),kc1u(nca))
kc1u = ica(:nca)
where (kc1u > 0)
k1u = ic(kc1u)
elsewhere
k1u = ix((-kc1u))
end where
endif
ncr = ncr - nca
nca = nca - 1
do j = 1, nca
kc = ica(j)
if (kc > 0) then
ic(kc) = -ic(kc)
else
kc = -kc
ix(kc) = -ix(kc)
endif
end do
return
end subroutine plqdb1