Intel® Fortran Compiler 17.0 Developer Guide and Reference
Built-in Function: Changes the form of an actual argument. Passes the argument by reference. In Intel® Fortran, passing by reference is the default.
%REF (a)
a |
(Input) An expression, record name, procedure name, array, character array section, or array element. |
You must specify %REF in the actual argument list of a CALL statement or function reference. You cannot use it in any other context.
The following table lists the Intel® Fortran defaults for argument passing, and the allowed uses of %REF:
Actual Argument Data Type |
Default |
%REF |
---|---|---|
Expressions: |
||
Logical |
REF |
Yes |
Integer |
REF |
Yes |
REAL(4) |
REF |
Yes |
REAL(8) |
REF |
Yes |
REAL(16) |
REF |
Yes |
COMPLEX(4) |
REF |
Yes |
COMPLEX(8) |
REF |
Yes |
COMPLEX(16) |
REF |
Yes |
Character |
See table note 1 |
Yes |
Hollerith |
REF |
No |
Aggregate2 |
REF |
Yes |
Derived |
REF |
Yes |
Array Name: |
||
Numeric |
REF |
Yes |
Character |
See table note 1 |
Yes |
Aggregate2 |
REF |
Yes |
Derived |
REF |
Yes |
Procedure Name: |
||
Numeric |
REF |
Yes |
Character |
See table note 1 |
Yes |
1A character argument is passed by address and hidden length. 2In Intel® Fortran record structures |
The %REF and %VAL functions override related !DIR$ ATTRIBUTE settings.
CHARACTER(LEN=10) A, B
CALL SUB(A, %REF(B))
Variable A is passed by address and hidden length. Variable B is passed by reference.
Note that on Windows* systems, compiler option iface determines how the character argument for variable B is passed.