Built-in Function: Changes the form of an actual argument. Passes the argument as an immediate value.
Syntax
%VAL (a)
a
(Input) An expression, record name, procedure name, array, character array section, or array element.
The argument is passed as follows:
You must specify %VAL 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 %VAL:
Actual Argument Data Type | Default | %VAL |
---|---|---|
Expressions: | ||
Logical | REF | Yes1 |
Integer | REF | Yes1 |
REAL(4) | REF | Yes |
REAL(8) | REF | Yes2 |
REAL(16) | REF | No |
COMPLEX(4) | REF | Yes |
COMPLEX(8) | REF | Yes |
COMPLEX(16) | REF | No |
Character | See table note3 | No |
Hollerith | REF | No |
Aggregate4 | REF | No |
Derived | REF | No |
Array Name: | ||
Numeric | REF | No |
Character | See table note3 | No |
Aggregate4 | REF | No |
Derived | REF | No |
Procedure Name: | ||
Numeric | REF | No |
Character | See table note3 | No |
1 If a logical or integer value occupies less than 64 bits of storage on Intel® 64 and IA-64 architectures, or 32 bits of storage on IA-32 architecture, it is converted to the correct size by sign extension. Use the ZEXT intrinsic function if zero extension is desired. 2 i64 only 3 A character argument is passed by address and hidden length. 4 In Intel Fortran record structures |
The %VAL and %REF functions override related cDEC$ ATTRIBUTE settings.
See Also
Example
CALL SUB(2, %VAL(2))
Constant 2 is passed by reference. The second constant 2 is passed by immediate value.