the chain. Component and array refs can be arbitrarily mixed as long as they
comply to the Fortran standard.
-@emph{NOTES}
+@emph{Notes}:
The member @code{STATIC_ARRAY_TYPE} is used only when the @code{TYPE} is
@code{CAF_REF_STATIC_ARRAY}. The member gives the type of the data referenced.
Because no array descriptor is available for a descriptorless array and
command-line arguments or @code{NULL}.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
The function is modelled after the initialization function of the Message
Passing Interface (MPI) specification. Due to the way coarray registration
works, it might not be the first call to the library. If the main program is
@item @emph{Syntax}:
@code{void _gfortran_caf_finish (void)}
-@item @emph{NOTES}
+@item @emph{Notes}:
For non-Fortran programs, it is recommended to call the function at the end
of the main program. To ensure that the shutdown is also performed for
programs where this function is not explicitly invoked, for instance
in TS18508. Shall be a nonnegative number.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
If the Fortran intrinsic @code{this_image} is invoked without an argument, which
is the only permitted form in Fortran 2008, GCC passes @code{0} as
first argument.
@item @var{failed} @tab shall be -1, 0, or 1
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This function follows TS18508. If the num_image intrinsic has no arguments,
then the compiler passes @code{distance=0} and @code{failed=-1} to the function.
@end table
performed.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This function follows TS18508. Because team-functionality is not yet
implemented a null pointer is passed for the @var{team} argument at the moment.
@end table
@item @var{image} @tab optional; the kind of the resulting integer array.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This function follows TS18508. Because team-functionality is not yet
implemented a null pointer is passed for the @var{team} argument at the moment.
@end table
@item @var{image} @tab optional; the kind of the resulting integer array.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This function follows TS18508. Because team-functionality is not yet
implemented a null pointer is passed for the @var{team} argument at the moment.
@end table
@item @var{errmsg_len} @tab the buffer size of errmsg.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
Nonallocatable coarrays have to be registered prior use from remote images.
In order to guarantee this, they have to be registered before the main
program. This can be achieved by creating constructor functions. That is what
@item @var{errmsg_len} @tab the buffer size of errmsg.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
For nonallocatable coarrays this function is never called. If a cleanup is
required, it has to be handled via the finish, stop and error stop functions,
and via destructors.
@code{_gfortran_caf_register_accessor} adhere to this interface.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This function is required to have a nearly constant runtime complexity, because
it will be called to register multiple accessor in a sequence. GFortran ensures
that before the first remote accesses commences
@item @emph{Arguments}:
No arguments.
-@item @emph{NOTES}
+@item @emph{Notes}:
This function may be called multiple times with and without new hash-accessors-
pairs being added. The post-condition after each call has to be that hashes
can be looked up quickly and indexing on the lookup table of hash-accessor-pairs
The zero based index to access the accessor funtion in a lookup table.
On error, @code{-1} can be returned.
-@item @emph{NOTES}
+@item @emph{Notes}:
The function's complexity is expected to be significantly smaller than N,
where N is the number of all accessors registered. Although returning @code{-1}
is valid, will this most likely crash the Fortran program when accessing the
to be part of. Unused at the moment.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
It is permitted to have @code{image_index} equal the current image; the memory
to get and the memory to store the data may (partially) overlap. The
implementation has to take care that it handles this case, e.g. using
to be part of. Unused at the moment.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
It is permitted to have @code{image_index} equal the current image; the memory
to send the data to and the memory to read for the data may (partially) overlap.
The implementation has to take care that it handles this case, e.g. using
is to be part of. Unused at the moment.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
It is permitted to have both @code{dst_image_index} and @code{src_image_index}
equal the current image; the memory to send the data to and the memory to read
for the data may (partially) overlap. The implementation has to take care that
derived type, is not known, but provided here.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
It is permitted to have the same image index for both @var{src_image_index} and
@var{dst_image_index}; the memory of the send-to and the send-from might
(partially) overlap in that case. The implementation has to take care that it
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This function is also called for critical blocks; for those, the array index
is always zero and the image index is one. Libraries are permitted to use other
images for critical-block locking variables.
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This function is also called for critical block; for those, the array index
is always zero and the image index is one. Libraries are permitted to use other
images for critical-block locking variables.
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This acts like an atomic add of one to the remote image's event variable.
The statement is an image-control statement but does not imply sync memory.
Still, all preceding push communications of this image to the specified
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
This function only operates on a local coarray. It acts like a loop checking
atomically the value of the event variable, breaking if the value is greater
or equal the requested number of counts. Before the function returns, the
@item @var{stat} @tab intent(out) Stores the STAT=; may be NULL.
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
The typical use is to check the local event variable to only call
@code{event_wait} when the data is available. However, a coindexed variable
is permitted; there is no ordering or synchronization implied. It acts like
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTE} A simple implementation could be
+@item @emph{Notes}:
+A simple implementation could be
@code{__asm__ __volatile__ ("":::"memory")} to prevent code movements.
@end table
@item @emph{Syntax}:
@code{void _gfortran_caf_fail_image ()}
-@item @emph{NOTES}
+@item @emph{Notes}:
This function follows TS18508.
@end table
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
If @var{result_image} is nonzero, the data in the array descriptor @var{a} on
all images except of the specified one become undefined; hence, the library may
make use of this.
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
If @var{result_image} is nonzero, the data in the array descriptor @var{a} on
all images except of the specified one become undefined; hence, the library may
make use of this.
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
If @var{result_image} is nonzero, the data in the array descriptor @var{a} on
all images except of the specified one become undefined; hence, the library may
make use of this.
@item @var{errmsg_len} @tab intent(in) the buffer size of errmsg
@end multitable
-@item @emph{NOTES}
+@item @emph{Notes}:
If @var{result_image} is nonzero, the data in the array descriptor @var{a} on
all images except of the specified one become undefined; hence, the library may
make use of this.
end program test_achar
@end smallexample
-@item @emph{Note}:
+@item @emph{Notes}:
See @ref{ICHAR} for a discussion of converting between numerical values
and formatted string representations.
The return value is a scalar of type @code{REAL}. It has the same
kind as @var{X}.
-@item @emph{Note}:
+@item @emph{Notes}:
The transformational function uses a recurrence algorithm which might,
for some values of @var{X}, lead to different results than calls to
the elemental function.
The return value is a scalar of type @code{REAL}. It has the same
kind as @var{X}.
-@item @emph{Note}:
+@item @emph{Notes}:
The transformational function uses a recurrence algorithm which might,
for some values of @var{X}, lead to different results than calls to
the elemental function.
@item @emph{Return value}:
The return value is of type @code{LOGICAL} and of the default kind.
-@item @emph{Note}:
+@item @emph{Notes}:
For @code{UNSIGNED} arguments, this function is identical to the
@code{.GE.} and @code{>=} operators.
@item @emph{Return value}:
The return value is of type @code{LOGICAL} and of the default kind.
-@item @emph{Note}:
+@item @emph{Notes}:
For @code{UNSIGNED} arguments, this function is identical to the
@code{.GT.} and @code{>} operators.
@item @emph{Return value}:
The return value is of type @code{LOGICAL} and of the default kind.
-@item @emph{Note}:
+@item @emph{Notes}:
For @code{UNSIGNED} arguments, this function is identical to the
@code{.LE.} and @code{<=} operators.
@item @emph{Return value}:
The return value is of type @code{LOGICAL} and of the default kind.
-@item @emph{Note}:
+@item @emph{Notes}:
For @code{UNSIGNED} arguments, this function is identical to the
@code{.LT.} and @code{<} operators.
@item @code{CHAR(I)} @tab @code{INTEGER I} @tab @code{CHARACTER(LEN=1)} @tab Fortran 77 and later
@end multitable
-@item @emph{Note}:
+@item @emph{Notes}:
See @ref{ICHAR} for a discussion of converting between numerical values
and formatted string representations.
end program test
@end smallexample
-@item @emph{Note}:
+@item @emph{Notes}:
While the rules permit in principle an intrinsic function, none of the
intrinsics in the standard fulfill the criteria of having a specific
function, which takes two arguments of the same type and returning that
@item @var{DIM} @tab The type shall be @code{INTEGER}.
@end multitable
-@item @emph{Note}:
+@item @emph{Notes}:
@var{ARRAY} can also be @code{UNSIGNED}.
@item @emph{Return value}:
end program test_ctime
@end smallexample
-@item @emph{See Also}:
+@item @emph{See also}:
@ref{DATE_AND_TIME}, @*
@ref{GMTIME}, @*
@ref{LTIME}, @*
@item @var{DIM} @tab The type shall be @code{INTEGER}.
@end multitable
-@item @emph{Note}:
+@item @emph{Notes}:
@var{ARRAY} can also be @code{UNSIGNED}.
@item @emph{Return value}:
@end smallexample
-@item @emph{Note}:
+@item @emph{Notes}:
Because this intrinsic is implemented in terms of the @code{system}
function call, its behavior with respect to signaling is processor
@item @var{BACK} @tab (Optional) A scalar of type @code{LOGICAL}.
@end multitable
-@item @emph{Note}:
+@item @emph{Notes}:
@var{ARRAY} can also be @code{UNSIGNED}.
@item @emph{Return value}:
@item @var{UNIT} @tab (Optional) The type shall be @code{INTEGER}.
@end multitable
-@item @emph{Note}:
+@item @emph{Notes}:
Beginning with the Fortran 2003 standard, there is a @code{FLUSH}
statement that should be preferred over the @code{FLUSH} intrinsic.
end program test_iachar
@end smallexample
-@item @emph{Note}:
+@item @emph{Notes}:
See @ref{ICHAR} for a discussion of converting between numerical values
and formatted string representations.
@item @code{ICHAR(C)} @tab @code{CHARACTER C} @tab @code{INTEGER(4)} @tab Fortran 77 and later
@end multitable
-@item @emph{Note}:
+@item @emph{Notes}:
No intrinsic exists to convert between a numeric value and a formatted
character string representation -- for instance, given the
@code{CHARACTER} value @code{'154'}, obtaining an @code{INTEGER} or
This intrinsic is provided in both subroutine and function forms;
however, only one form can be used in any given program unit.
-@item @emph{Standard}:
-GNU extension
@item @emph{Standard}:
GNU extension
magnitude of P. (As a GNU extension, kind is the largest kind of the actual
arguments.)
-@item @emph{Note}:
+@item @emph{Notes}:
@code{MOD} and @code{MODULO} yield identical results if their arguments
are @code{UNSIGNED}.
The returned value has the same sign as P and a magnitude less than
the magnitude of P.
-@item @emph{Note}:
+@item @emph{Notes}:
@code{MOD} and @code{MODULO} yield identical results if their arguments
are @code{UNSIGNED}.