Понимание кода fortran 77

Каков наилучший способ разобрать код fortran 77, который использует неявные объявления и перейти к операторам? Я привык работать с f95 или выше с явными объявлениями, модулями, типами данных и т. д. Этот материал f77 вызывает у меня головную боль.

Будем очень признательны за любые советы из чужого опыта о том, как разобрать такой древний код.


person toylas    schedule 13.09.2013    source источник
comment
не уверен, что вы спрашиваете, кроме очевидного - поставьте неявный none и позвольте компилятору сказать, что вам нужно объявить. Обновите все конструкции на основе goto до современной формы. Может быть много работы только для удовлетворения, если это большой код, который работает.   -  person agentp    schedule 13.09.2013
comment
Мне никогда не приходилось его использовать, но я слышал, что SPAG неплохо конвертирует F77 с goto в F90+ синтаксис.   -  person Kyle Kanos    schedule 14.09.2013
comment
Просто нарисуйте блок-схему, представьте, что коробки связаны ниткой, и потяните ее прямо. Затем перерисуйте блок-схему, и у вас будет логика. Переменные - если вы не можете вспомнить I-N=integer, а все остальное реально, у вас проблема. Вы можете указать IMPLICIT NONE(A-Z): некоторые компиляторы F77 принимают это. Тогда все, что не было объявлено, вызовет ошибку. Это даст вам возможность добавить объявления. Общие блоки — список содержимого каждого блока в алфавитном порядке. Всякий раз, когда вы получаете переменную, ищите ее на разных карточках.   -  person cup    schedule 14.09.2013


Ответы (1)


код fortran77 может быть грубым. Полезно сделать модернизацию с помощью некоторых инструментов:

to_f90 Алана Миллера или «конверт» Меткалфа

Инструмент "spag" в Polyhedron для удаления ~ двух третей перехода

Иногда do/cycle/exit - единственный способ справиться с fortran goto. Подробнее об исправлении goto можно найти здесь:

http://engineering.dartmouth.edu/~d30574x/consulting/consulting_gotorefactor.html http://engineering.dartmouth.edu/~d30574x/consulting/consultingIndex.html

Кроме того, если вы хотите, чтобы это было в матлабе, вы можете использовать f2matlab при обмене файлами.

Удачи!

person Ben Barrowes    schedule 25.09.2013