okay thank you.
Yes thats correct. Of course my computer is running a 64bit system but I didnt feel the need to use integer*8 when it is not neccessary. It is just a different data type, it works perfectly fine on a x86 or x64 machine.
The error appeared during running the example in debug. In release it works because certain checks are deactivated (boundary checks etc.) so the error is not detected in release. For now i fixed this by changing the
errck = vinput(yyy(16:30),15,td,1)
into
errck = vinput(yyy(16:31),15,td,1)
in file pnums.f row 430. Probably not he best way to do it.
Unfortunately I am running in an other problem in setmem.f
There is an call to a subroutine (line 120)
call pzero (hr(np(n)),length)
The array hr is of size 1024 but np(n) is a very big number. I found out that np(n) is set in a way I can not understand. It is happening in the same file in line 78-88
! Use Malloc to allocate space for length*ipa bytes
adr(n) = malloc(length*ipa)
! Set pointer for array use
if(ip.eq.1) then
np(n) = 1 + (adr(n) - loc(mr(1))) / ipa
else
np(n) = 1 + (adr(n) - loc(hr(1))) / ipa
endif
A certain amount of memory is allocated an the adress is saved in adr(n)
! Use Malloc to allocate space for length*ipa bytes
adr(n) = malloc(length*ipa)
Then this address is minus by the address of a independent variable hr(1) and futher on to get the distance of those two addresses. This is then later used to function as an indice of an array. I am not sure if this is meant to be like this.
! Set pointer for array use
if(ip.eq.1) then
np(n) = 1 + (adr(n) - loc(mr(1))) / ipa
else
np(n) = 1 + (adr(n) - loc(hr(1))) / ipa
endif