Vskazka
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору TeXpert Цитата: Я вижу, мой вопрос вызвал весьма оживленную дискуссию, что, несомненно, всем на пользу. Однако, вернемся к нашим баранам. Я, извиняюсь, фигею: код Код: F = FUNC(I,DBLE(J)) работал неправильно, а вот Код: Z = DBLE(J) F = FUNC(I,Z) работает. Компилятор --- Intel Fortran (Linux). Тут писали про тонкости стандарта (я пока его не знаток), но вот такого кидка не ожидал(. Ну да ладно | В моем примере, который я приводил ранее, такая конструкция работает. Попробуйте его откомпилировать и посмотреть что у Вас получится. Но, навскидку, такого сорта поведение (когда вроде бы одинаковое что-то , написанное по-разному, дает разные результаты) бывает при ошибках, типа нарушений памяти - выход за границы массивов, несоответствие между подпрограммами и их вызовами, неполадки в common'ах и тп. Тут даже вставка Write(*,*) может все изменить. Причем ошибка может быть совсем в другом месте. И близко не лежащем к этому куску кода. Попробуйте откомпилировать текст на других компиляторах. Например через Silverfrost FTN95. Мне он, как-то помог выловить такого сорта неясную ошибку. Там у них собственный отслеживатель runtime errors. И хорошо отлавливается использование не инициализированных переменных, например. PS - без интерфейсов, конечно, можно. Стандарт 77 еще никто не отменял. До сих пор все, что написано в 77, ДОЛЖНО компилироваться на любом трансляторе. | Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 07:57 20-11-2010 | Исправлено: Vskazka, 08:06 20-11-2010 |
|