Next: ATAN, Previous: ASINH, Up: Intrinsic Procedures [Contents][Index]
9.22 ASSOCIATED
— Status of a pointer or pointer/target pair
- Description:
ASSOCIATED(POINTER [, TARGET])
determines the status of the pointer POINTER or if POINTER is associated with the target TARGET.- Standard:
Fortran 90 and later
- Class:
Inquiry function
- Syntax:
RESULT = ASSOCIATED(POINTER [, TARGET])
- Arguments:
POINTER POINTER shall have the POINTER
attribute and it can be of any type.TARGET (Optional) TARGET shall be a pointer or a target. It must have the same type, kind type parameter, and array rank as POINTER. The association status of neither POINTER nor TARGET shall be undefined.
- Return value:
ASSOCIATED(POINTER)
returns a scalar value of typeLOGICAL(4)
. There are several cases:- (A) When the optional TARGET is not present then
ASSOCIATED(POINTER)
is true if POINTER is associated with a target; otherwise, it returns false.- (B) If TARGET is present and a scalar target, the result is true if
TARGET is not a zero-sized storage sequence and the target associated with POINTER occupies the same storage units. If POINTER is disassociated, the result is false.
- (C) If TARGET is present and an array target, the result is true if
TARGET and POINTER have the same shape, are not zero-sized arrays, are arrays whose elements are not zero-sized storage sequences, and TARGET and POINTER occupy the same storage units in array element order. As in case(B), the result is false, if POINTER is disassociated.
- (D) If TARGET is present and an scalar pointer, the result is true
if TARGET is associated with POINTER, the target associated with TARGET are not zero-sized storage sequences and occupy the same storage units. The result is false, if either TARGET or POINTER is disassociated.
- (E) If TARGET is present and an array pointer, the result is true if
target associated with POINTER and the target associated with TARGET have the same shape, are not zero-sized arrays, are arrays whose elements are not zero-sized storage sequences, and TARGET and POINTER occupy the same storage units in array element order. The result is false, if either TARGET or POINTER is disassociated.
- Example:
program test_associated implicit none real, target :: tgt(2) = (/1., 2./) real, pointer :: ptr(:) ptr => tgt if (associated(ptr) .eqv. .false.) call abort if (associated(ptr,tgt) .eqv. .false.) call abort end program test_associated
- See also:
Next: ATAN, Previous: ASINH, Up: Intrinsic Procedures [Contents][Index]