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

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

следует избегать смешения в одном common-блоке разнотипных единиц памяти (из-за описанных выше проблем выравнивания).

program gocom

! Допустимое, но нерекомендуемое различие

complex (4) z

! описаний common-блока в разных

common /vab/ z

! программных единицах

call chaco ( )

 

 

print *, z

!

(5.000000, -5.000000)

end program gocom

 

 

subroutine chaco ( )

 

 

real(4) x, y

! Вещественные переменные x и y вместо

common /vab/ x, y

x = 5.0; y = -5.0

! комплексной переменной z

end subroutine

 

 

Замечание. В современном Фортране common-блоки могут быть полностью заменены модулями.

8.16.3. Программная единица BLOCK DATA

При необходимости начальные значения элементов именованного com- mon-блока можно задать, используя программную единицу BLOCK DATA. Ее общий вид:

BLOCK DATA [имя блока данных] раздел объявлений

операторы DATA задания начальных значений элементов & общей области

END [BLOCK DATA [имя блока данных]]

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

Впрограмме может быть определено несколько программных единиц BLOCK DATA, имеющих различные имена и выполняющих инициализацию элементов разных именованных common-блоков. Причем в программе может быть задана только одна неименованная программная единица BLOCK DATA.

Водной программной единице BLOCK DATA может появляться несколько разных именованных common-блоков. Один и тот же common- блок не может появляться в разных программных единицах BLOCK DATA. Не могут быть инициализированы в BLOCK DATA объекты с атрибутом

POINTER.

ВBLOCK DATA могут быть использованы только следующие операторы: USE, IMPLICIT, COMMON, DATA, END, DIMENSION, EQUIVALENCE, POINTER, TARGET, MAP, PARAMETER, RECORD,

264