В настоящее время я портирую приложение с Fortran на C и мне нужно вывести некоторые переменные для сравнения результатов. Я очень плохо знаком с Фортраном, и хотя я понимаю код и теперь портировал несколько тысяч строк, я сам новичок в написании кода на Фортране.
Этот код:
write(6,'(A,I3,A,E12.8,A,E12.8,A,E12.8,A,E12.8,A,E12.8)') 'iHyd:',
& ih,'; dzdr: ',dzdr,'; tauray:', tauRay,'; zRay: ',
& zray,'; ampRay: ',realpart(aray),'+j*',
& imagpart(aray),'; qRay: ',qray,'; width :',w
Компилируется нормально, но при запуске программа завершается с:
At line 296 of file calcpr.for (unit = 6, file = 'stdout')
Fortran runtime error: Expected INTEGER for item 15 in formatted transfer, got REAL
(A,I3,A,E12.8,A,E12.8,A,E12.8,A,E12.8,A,E12.8)
^
q0: 1432.3944878270595
nArrayR: 501 nArrayZ: 201
iHyd: 1; dzdr: ************; tauray:************; zRay: ************; ampRay: NaN+j* NaN
; qRay:
Помимо того, что я действительно уродлив, для меня это не имеет особого смысла, поскольку ìh
объявлен как integer*8
, а не как real
.
Так, как я могу решить это?