next up previous contents
След.: Встроенные модули Выше: Стандартные процедуры и модули Пред.: Некоторые процедуры   Содержание

Нестандартные процедуры

Есть некоторые функции, которые не входят в стандарт, но реализованы во многих компиляторах. Например, функции SIND и COSD, вычисляющие синус и косинус от выраженного в градусах аргумента (отсутствуют в GNU Fortran, но есть в ряде других, включая компилятор Intel), или GETARG, тождественная стандартной функции GET_COMMAND_ARGUMENT (есть в обоих упомянутых компиляторах). В случаях, аналогичных второму -- при наличии аналогичной стандартной функции -- следует пользоваться только средствами Стандарта. Если же Стандарт не предоставляет аналога (например, синус угла в градусах), использование нестандартных функций допустимо, но оценка риска от снижения переносимости целиком ложится на программиста. В случае с синусом риск невелик: соответствующая функция легко реализуется и внедряется в программу. Чем более труднореализуемо нестандартное средство, тем менее желательно его использование.

Следует иметь в виду, что разработчики компилятора вольны включать в язык нестандартные процедуры. Как уже отмечалось выше, для повышения переносимости разумно снабжать свои внешние процедуры атрибутом EXTERNAL, гарантирующим отсутствие проблем переносимости, если одноименная функция существует на другой системе. Особенно это касается процедур с короткими именами.

Возможны и многие другие расширения языка, выходящие за пределы Стандарта. Например, компилятор Intel поддерживает массивы с рангом до 31 (стандарт Fortran-2008 ограничивает их число 15, а более ранние -- 7). Пользоваться этими расширениями без острой необходимости нежелательно.



Ilya A. Chernov 2012-12-19
X