Intel® Fortran Compiler Classic and Intel® Fortran Compiler Developer Guide and Reference

ID 767251
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

ATOMIC_FETCH_AND

Atomic Intrinsic Subroutine (Generic): Performs atomic fetch and bitwise AND.

CALL ATOMIC_FETCH_AND (atom, value, old [, stat])

atom

(Input; output) Must be a scalar coarray or coindexed object and of type integer with kind ATOMIC_INT_KIND. It becomes defined with the value of iand (atom, int (value, ATOMIC_INT_KIND)) if no error occurs. Otherwise, it becomes undefined.

ATOMIC_INT_KIND is a named constant in the intrinsic module ISO_FORTRAN_ENV.

value

(Input) Must be a scalar integer. The value of value must be representable as an integer with kind ATOMIC_INT_KIND.

old

(Output) Must be a scalar of the same type as atom. It becomes undefined if an error occurs. Otherwise, it becomes defined with the value atom has at the beginning of the atomic operation.

stat

(Output; optional) Must be a non-coindexed integer scalar with a decimal exponent range of at least four (KIND=2 or greater). The value assigned to stat is specified in Overview of Atomic Subroutines. If stat is not present and an error condition occurs, error termination is initiated.

Example

Consider the following:

CALL ATOMIC_FETCH_AND (N[4], 29, M) 

If the value of N on image 4 was 23 when the atomic operation is initiated, N on image 4 is defined with the value 21, and M is defined with the value 23 when the operation completes and no error occurs during the subroutine reference.