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

Andrey Liakhovets liakh на dol.ru
Пн Июн 27 08:19:07 UTC 2011


On Mon, 27 Jun 2011 09:53:32 +0200 vx8400 wrote:
>upd:
>
>27 июня 2011 г. 9:38 vx8400:
>>
>> 'DO I=400' gfortran 4.4.5 съедает, цикл прокручивается 1 раз,
>
>Цикл не прокручивается. 'DO 1 I=400' побочных эффектов не имеет, метка
>'1' перед write игнорируется.
>Ее можно вообще убрать.
>I инициализировано 0, поэтому печатается 0.
>
>btw, DEC Fortran это тоже съедает без предупреждений, если перед 'DO 1
>I=400' поставить, например, I=1
>
>В каком стандарте есть такое 'DO'?

По крайней мере, в Fortran 90 и в Fortran 2008 здесь должны быть
как минимум 2 выражения через запятую. Например, в 2008:

loop-control is [ , ] do-variable = scalar-int-expr , scalar-int-expr [ , scalar-int-expr ]
or [ , ] WHILE ( scalar-logical-expr )
or [ , ] CONCURRENT forall-header

Так что гораздо интереснее, почему такое иногда таки транслируется :)

Андрей Ляховец


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