Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
современный фортран , Бортеньев.pdf
Скачиваний:
242
Добавлен:
26.03.2015
Размер:
2.34 Mб
Скачать

О. В. Бартеньев. Современный ФОРТРАН

8.28. Строка INCLUDE

В больших программах исходный код целесообразно хранить в разных файлах. Это упрощает работу над фрагментами программы и над программой в целом. Включение исходного кода одного файла в код другого можно выполнить при помощи директивы $INCLUDE или строки INCLUDE, имеющей вид:

INCLUDE 'имя файла'

имя файла - заключенное в апострофы или двойные кавычки имя текстового файла с исходным кодом фрагмента Фортран-программы. При необходимости имя файла должно содержать и путь к файлу.

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

Включаемый файл может содержать другие строки INCLUDE, но не должен прямо или косвенно ссылаться сам на себя. Такие включаемые файлы называются вложенными. Компилятор позволяет создавать вложенные включаемые файлы, содержащие до 10 уровней вложения с любым набором строк INCLUDE.

Первая строка включаемого файла не должна быть строкой продолжения, а его последняя строка не должна содержать перенос. Перед оператором не может быть поставлена метка.

В Фортране include-файлы рассматриваются как избыточное средство языка и могут быть практически полностью и с большим эффектом заменены модулями. Модули не только обеспечивают доступ к расположенным в модуле операторам объявления и описания и размещенным после оператора CONTAINS модульным процедурам, но и позволяют выполнять (за счет use-ассоциирования) обмен данными между использующими модули программными единицами.

8.29. Порядок операторов и директив

Операторы и директивы в программных единицах должны появляться в приведенном в табл. 8.5 порядке.

288

8. Программные единицы

Таблица 8.5. Последовательность операторов и директив

$INTEGER, $REAL, $[NO]SRICT, $OPTIMIZE

BLOCK DATA, FUNCTION, MODULE, PROGRAM, SUBROUTINE

USE-операторы

IMPLICIT NONE

PARAMETER

 

 

 

 

IMPLICIT

 

 

 

 

 

Определения производных типов

 

 

Интерфейсные блоки

 

 

Операторы объявления типа

PARAMETER

ENTRY

Операторы объявления

DATA

FORMAT

Операторные функции

 

 

 

 

 

Исполняемые операторы

DATA

 

 

 

 

CONTAINS

 

 

Внутренние и модульные процедуры

END

$ATTRIBUTES $[NO]DEBUG $[NO]DECLARE $DEFINE, $UNDEFINE $IF, $IF DEFINED $ELSE, $ELSEIF, $END IF $FIXFORMLINESIZE $[NO]FREEFORM $INCLUDE, $LINE $LINESIZE, $[NO]LIST $MESSAGE $OBJCOMMENT, $PACK $PAGE, $PAGESIZE $SUBTITLE, $TITLE

В табл. 8.6 для разных программных компонентов указаны операторы, которые могут в них появляться. Строка "Объявления" подразумевает операторы PARAMETER, IMPLICIT, объявления типов данных и их атрибутов.

Таблица 8.6. Операторы программных компонентов

Операторы

Главная

Модуль

BLOCK

Внешняя

Модульная

Внутренняя

Тело

 

программа

 

DATA

процедура

процедура

процедура

интерфейса

 

 

 

 

 

 

 

 

USE

Да

Да

Да

Да

Да

Да

Да

ENTRY

Нет

Нет

Нет

Да

Да

Нет

Нет

FORMAT

Да

Нет

Нет

Да

Да

Да

Нет

Объявления

Да

Да

Да

Да

Да

Да

Да

DATA

Да

Да

Да

Да

Да

Да

Нет

Определения

 

 

 

 

 

 

 

производных

Да

Да

Да

Да

Да

Да

Да

типов

Интерфейсные

Да

Да

Нет

Да

Да

Да

Да

блоки

Операторные

Да

Нет

Нет

Да

Да

Да

Нет

функции

Исполняемые

Да

Нет

Нет

Да

Да

Да

Нет

операторы

CONTAINS

Да

Да

Нет

Да

Да

Нет

Нет

 

 

 

 

 

 

 

 

289