2.12. Общие области, подпрограмма BLOCK DATA. Оператор EQUIVALENCE

В языке FORTRAN отсутствует возможность описания глобальных имен, все имена переменных и массивов являются локальными и определены только в той подпрограмме, где они описаны. Взамен FORTRAN предоставляет аппарат об­щих областей. Общая область описывается в виде:

COMMON [/имя/] список где имя - имя общей области, которое может быть опущено (но в программе мо­жет быть только одна неименованная общая область), список - это разделенные запятыми имена переменных и массивов. Для массивов можно задавать описате­ли измерений. Общие области используются в программе для передачи инфор­мации между подпрограммами, минуя списки параметров. Общая область имеет смысл, если она описана более чем в одной подпрограмме, при этом имена пере­менных, входящих в общую область, совпадать не обязаны. Любая именованная общая область должна иметь одинаковый размер во всех подпрограммах, для неименованной общей области это необязательно.

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

BLOCK DATA [имя]

описания общих областей операторы DATA

END

К подпрограммам BLOCK DATA не нужно специально обращаться, они выпол­няются автоматически. В программе может быть сколько угодно подпрограмм BLOCK DATA, но только одна неименованная.

Оператор EQUIVALENCE позволяет совмещать по памяти различные пере­менные и массивы, в том числе и данные разных типов. Оператор записывается в виде:

EQUIVALENCE (список объектов)[,... ] Здесь список объектов - это разделенные запятыми имена переменных, имена массивов и элементы массивов. Количество совмещаемых объектов не ограниче­но.    Существует   несколько    ограничений   на   использование оператора

EQUIVALENCE :

1) совмещения не должны противоречить друг другу;

2) совмещаемые переменные и массивы нельзя инициализировать в операто­ре описания типа, но только в операторе DATA;

3) нельзя совмещать два объекта, если оба они входят в общие области;

4) не рекомендуется совмещать символьные и несимвольные объекты.