FORTRAN: Перекрытие common-блоков
фортрановские коммон- блоки в оригинальной проге и доп. функционале частично перекрываются.Исправлять все переменные, которые перекрываются- не вариант.
Зачем исправлять переменные?
Что мешает переименовать перекрывающиеся комонблоки (все равно в какой части)?
То есть достаточно в одной из прог поставить /atoms1/ и все окей в этом плане станет? ( там на самом деле туча этих блоков, несколько десятков, переменных порядка сотни думаю одинаковых) Еще раз сорри, но в фортране я ламо полное.
Вижу, например, в этих прогах блок /atoms/ а там массивы x, y и z, при компилляции на атомс он ругался.
Это и есть имя комонблока.
То есть достаточно в одной из прог поставить /atoms1/ и все окей в этом плане станет?
Должно.
Спасибо, сейчас грепну их и перепишу!
1. Объявляте переменные в common'е нужно в порядке убывания их размера (в байтах). В противном случае g77 переупорядочит переменные в памяти, и при их чтении возникнет баальшой сурприз.
2. в common блоках можно отбрасывать последние переменные, например, неиспользуемые в данной подпрограмме. Будет предупреждение о разных размерах common'ов, но работать будет. Так могут возникать "перекрывающиеся" common'ы — с одинаковым именем, но разным набором переменных. Насколько это переносимо — не знаю.
Греп затянулся?
Оставить комментарий
loki69
Есть одна прога- написана частично на фортране, частично на С, все это дело компиллируется частично ваткомовским компилером, частично интеловским, собирается ваткомовским линковщиком.Собирается все под вендой, но можно исхитриться и собрать под вендой, так чтобы работало под линуксом. К этой проге есть доп. функционал сделанный через dll, но с этим возникает на данном этапе проблема в плане работы такой фигни под линуксом+ интересует именно параллельный режим работы (через mpi).dll собрана из фортрановских исходников ваткомовскими средствами. не особо сложно было это все дело собрать в итоге вместе в 1 прогу без использования dll, но есть при этом проблемы - фортрановские коммон- блоки в оригинальной проге и доп. функционале частично перекрываются.Исправлять все переменные, которые перекрываются- не вариант. Есть ли какие-то хитрые средства, чтобы с одной стороны избежать перекрывания коммон- блоков, с другой стороны прогу собрать как 1 целое?Сорри, возможно вопрос ламерский, но я не большой спец в проганье, а фортран я вообще знаю лишь очень поверхностно.