8.20 ASSOCIATED — Статус указателя или пары указатель/цель
- Описание:
-
ASSOCIATED(POINTER [, TARGET])определяет статус указателя POINTER или если POINTER связан с целью TARGET. - Стандарт:
- Fortran 95 и более поздние версии
- Класс:
- Функция запроса
- Синтаксис:
-
RESULT = ASSOCIATED(POINTER [, TARGET]) - Аргументы:
-
Статус ассоциации ни POINTER, ни TARGET не должен быть неопределённым.POINTER POINTER должен иметь атрибут POINTERи может быть любого типа.TARGET (Необязательно) TARGET должен быть указателем или целью. Он должен иметь тот же тип, тип параметра kind и ранг массива, что и POINTER. - Значение результата:
-
ASSOCIATED(POINTER)возвращает скалярное значение типаLOGICAL(4). Существует несколько случаев:- (А) Если необязательный TARGET отсутствует, то
-
ASSOCIATED(POINTER)истинно, если POINTER связан с целью; в противном случае возвращает ложь. - (Б) Если TARGET присутствует и является скалярной целью, результат истинен, если
- TARGET не является нулевым массивом и цель, связанная с POINTER, занимает те же ячейки памяти. Если POINTER разъединён, результат ложен.
- (В) Если TARGET присутствует и является массивом целей, результат истинен, если
- TARGET и POINTER имеют одинаковую форму, не являются нулевыми массивами, являются массивами, элементы которых не являются нулевыми массивами, и TARGET и POINTER занимают те же ячейки памяти в порядке элементов массива. Как и в случае (Б), результат ложен, если POINTER разъединён.
- (Г) Если TARGET присутствует и является скалярным указателем, результат истинен
- если TARGET связан с POINTER, цель, связанная с TARGET, не является нулевым массивом и занимает те же ячейки памяти. Результат ложен, если либо TARGET, либо POINTER разъединены.
- (Д) Если TARGET присутствует и является массивом указателей, результат истинен, если
- цель, связанная с POINTER, и цель, связанная с TARGET, имеют одинаковую форму, не являются нулевыми массивами, являются массивами, элементы которых не являются нулевыми массивами, и TARGET и POINTER занимают те же ячейки памяти в порядке элементов массива. Результат ложен, если либо TARGET, либо POINTER разъединены.
- Пример:
-
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
- См. также:
- NULL
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.3/gfortran/ASSOCIATED.html