Я пытаюсь заставить работать старый код FORTRAN, собирая его из исходного кода с помощью gfortran.Я наконец-то смог успешно его построить, но теперь я получаю ошибку за гранью, когда она запускается.Я использовал gdb и отследил ошибку до функции, которая использует встроенную функцию loc ().Когда я пытаюсь напечатать значение loc(ae)
, где ae - мое переданное целочисленное значение, я получаю ошибку «Нет символа« loc »в текущем контексте».Я попытался скомпилировать с ifort 11.x и отладил с помощью DDT и получил ту же ошибку.Для меня это означает, что компилятор ничего не знает о внутреннем.
Небольшое чтение показало, что loc intrinsic не является частью стандарта F77, так что, возможно, это часть проблемы.Я опубликовал определение встроенной функции ниже, но я не знаю, как я могу внедрить это в свой код, чтобы можно было использовать loc ().
Любой совет или я неправильно понимаю мою проблему?Потому что и gfortran, и ifort аварийно завершают работу в одном и том же месте из-за ошибки за границами, но функция, использующая loc (), возвращает одинаковое большое число между обоими компиляторами.Кажется немного странным, что loc () не будет работать, если оба компилятора отыграют одинаковое значение для loc.
Использование:
iaddr = loc (obj)
Где:
obj - переменная, массив, функция или подпрограмма, чей адрес требуется.iaddr - это целое число с адресом «obj».Адрес находится в том же формате, который хранится в инструкции LARn.
Описание:
LOC используется для получения адреса чего-либо.Возвращаемое значение не очень полезно в Fortran, но может быть необходимо для подпрограмм GMAP или для специальной отладки.