2015-07-31 1 views
3

Когда функция имеет альтернативный элемент, необходимо ли установить возвращаемое значение для имени записи или будет ли основное имя всегда работать, если альтернативное имя не установлено? Например,Возвращаемое значение из функции с альтернативной записью

 INTEGER FUNCTION MYFUNC(ARG) 
     INTEGER ARG 
     INTEGER MYFUNC2 
C   ... do something here... 
     GOTO 100 
     ENTRY MYFUNC2(ARG) 
C   ... do something else here 
    100 CONTINUE 
     MYFUNC = <some value> 
C   .. is the next line needed, of can it be omitted? 
     myfunc2 = myfunc 
     RETURN 
     END 

ответ

2

Ссылаясь на стандарт Fortran 2008, Cl. 12.6.2.6 ENTRY заявление:

[...]

3 Если оператор ENTRY в функции подпрограммы, дополнительный функция определяется тем, что подпрограмма. Имя функции: имя записи, а имя ее переменной результата - имя-результат или имя входа, если не указано имя результата. [...] Если характеристики результата функции имени в операторе ENTRY такие же, как и характеристики результата функции, указанной в операторе FUNCTION , их результат переменных определить ту же переменную , хотя их имена не обязательно совпадают. В противном случае это хранилище , связанное и должно быть неизменным, нераспределяемыми скалярами, которые являются значениями по умолчанию integer, по умолчанию real, double precision real, default сложным или логическим по умолчанию.

Как я прочитал выделенный канал, что линия

myfunc2 = myfunc 

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


Поскольку ни result задается либо функцией заявления, ни заявления входа, имя функции становится результатом имя. Это указано в Cl. 12.6.2.2 Функция подпрограмма

[...]

4 Если появляется РЕЗУЛЬТАТ, имя результата переменной функции является результат имя и все вхождения имени функции в инструкции выполнения в своей области относятся к самой функции. Если RESULT не отображается, имя переменной результата: имя-функции, а все вхождения имени функции в оператора выполнения в своей области являются ссылками на переменную . [...]

+3

О единственном, чего не хватает в этом ответе, является: «Не используйте инструкцию' entry' ». – francescalus

Смежные вопросы