[sisyphus] Сборка FORTRAN-программ

Sergey Vlasov vsu на altlinux.ru
Пн Июн 27 09:49:08 UTC 2011


On Mon, Jun 27, 2011 at 11:18:05AM +0400, Sergei Epiphanov wrote:
> В одной из программ нашёл интересный кусок, который перестал собираться. Решил 
> проверить такой программой:
> 
> test.for:
>         PROGRAM test
>         INTEGER(4) I
>         DO 1 I=400

В "древнем" варианте FORTRAN пробелы фактически игнорируются, и этот
оператор рассматривается как присваивание переменной DO1I значения 400;
переменная I остаётся неинициализированной.  Вообще классический вариант
подобной ошибки - точка вместо запятой.

Можно ещё добавить опцию -fdump-parse-tree, чтобы увидеть, во что именно
этот код превращается в компиляторе.

>  1      WRITE(*,*)I
>         END PROGRAM
> 
> 
> Программа командой 'gfortran -ffixed-form test.for -o test' компилируется и 
> запускается, но вывод непонятно какой: каждый раз выпадает случайное число (к 
> примеру -1081112844, -1074562380 и другие подобные). Глюк компилятора или как? 
> Система - Сизиф прошлопятничный. gcc4.5-fortran-4.5.1-alt8. Из gcc стоит 
> только версия 4.5.1-alt8 (пересечений с другими версиями нет).
> 
> При компиляции с опцией -ffree-form вместо -ffixed-form компилятор выдаёт ошибку 
> "Syntax error".

Действительно, в варианте free form этот изврат с игнорированием пробелов
наконец-то убрали.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/sisyphus/attachments/20110627/b6fea1e1/attachment-0001.bin>


Подробная информация о списке рассылки Sisyphus