next up previous contents
След.: Взаимодействие глобальных данных Выше: Средства взаимодействия с C Пред.: Взаимодействующие переменные   Содержание


Взаимодействующие процедуры

Атрибут VALUE введен, в частности, для взаимодействия с C. Это атрибут скалярных формальных аргументов процедур. При вызове передается копия фактического аргумента.

Процедура Фортрана взаимодействующая, если она имеет явный интерфейс и объявлена с атрибутом BIND:

FUNCTION F(X,Y), BIND(C)

Формальные аргументы должны быть взаимодействующими. Результат функции должен быть скаляром и притом взаимодействующим. Процедура имеет «внешнее имя», которое относится к глобальной области видимости и под этим именем она известна компилятору C. По умолчанию внешнее имя -- это имя процедуры в нижнем регистре. Так, указанная выше функция имеет внешнее имя f. Есть возможность указать иное имя при задании атрибута BIND:

FUNCTION F(X,Y), BIND(C, NAME = 'func')

Такая процедура соответствует прототипу функции C с тем же внешним именем. Результат функций должен соответствовать результату прототипа. Для подпрограмм результат прототипа void. Формальный аргумент с атрибутом VALUE и с типом, отличным от C_PTR, должен соответствовать формальному аргументу прототипа, который не является указателем. Если аргумент не имеет атрибута VALUE или имеет, но его тип C_PTR, то формальный аргумент прототипа -- указатель.



Ilya A. Chernov 2012-12-19
X