From ff5115e20368297ec8caac7e249b64601adeee6c Mon Sep 17 00:00:00 2001 From: Thomas Koenig Date: Thu, 1 Nov 2018 11:37:08 +0000 Subject: [PATCH] re PR fortran/54613 ([F08] Add FINDLOC plus support MAXLOC/MINLOC with KIND=/BACK=) 2018-10-28 Thomas Koenig PR fortran/54613 * gfortran.texi (File format of unformatted sequential files): Replace random comma with period. * intrinsic.texi (Intrinsic Procedures): Add FINDLOC to menu. (FINDLOC): Document. (MAXLOC): Add refrence to FINDLOC. (MINLOC): Likewise. From-SVN: r265715 --- gcc/fortran/ChangeLog | 10 ++++++ gcc/fortran/gfortran.texi | 2 +- gcc/fortran/intrinsic.texi | 65 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 74 insertions(+), 3 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a773bbd21fe..4e0869b5abe 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,13 @@ +2018-11-01 Thomas Koenig + + PR fortran/54613 + * gfortran.texi (File format of unformatted sequential files): + Replace random comma with period. + * intrinsic.texi (Intrinsic Procedures): Add FINDLOC to menu. + (FINDLOC): Document. + (MAXLOC): Add refrence to FINDLOC. + (MINLOC): Likewise. + 2018-10-31 Nathan Sidwell * cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call. diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 30934046a49..8654601f4f6 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -1479,7 +1479,7 @@ contains a negative number, then there is a preceding subrecord. In the most simple case, with only one subrecord per logical record, both record markers contain the number of bytes of user data in the -record, +record. The format for unformatted sequential data can be duplicated using unformatted stream, as shown in the example program for an unformatted diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index ca006c96c5f..668888bc5c8 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -148,6 +148,7 @@ Some basic guidelines for editing this document: * @code{FDATE}: FDATE, Subroutine (or function) to get the current time as a string * @code{FGET}: FGET, Read a single character in stream mode from stdin * @code{FGETC}: FGETC, Read a single character in stream mode +* @code{FINDLOC}: FINDLOC, Search an array for a value * @code{FLOOR}: FLOOR, Integer floor function * @code{FLUSH}: FLUSH, Flush I/O unit(s) * @code{FNUM}: FNUM, File number function @@ -6021,7 +6022,67 @@ END PROGRAM @ref{FGET}, @ref{FPUT}, @ref{FPUTC} @end table +@node FINDLOC +@section @code{FINDLOC} --- Search an array for a value +@fnindex FINDLOC +@cindex findloc +@table @asis +@item @emph{Description}: +Determines the location of the element in the array with the value +given in the @var{VALUE} argument, or, if the @var{DIM} argument is +supplied, determines the locations of the maximum element along each +row of the array in the @var{DIM} direction. If @var{MASK} is +present, only the elements for which @var{MASK} is @code{.TRUE.} are +considered. If more than one element in the array has the value +@var{VALUE}, the location returned is that of the first such element +in array element order if the @var{BACK} is not present or if it is +@code{.FALSE.}. If @var{BACK} is true, the location returned is that +of the last such element. If the array has zero size, or all of the +elements of @var{MASK} are @code{.FALSE.}, then the result is an array +of zeroes. Similarly, if @var{DIM} is supplied and all of the +elements of @var{MASK} along a given row are zero, the result value +for that row is zero. + +@item @emph{Standard}: +Fortran 2008 and later. + +@item @emph{Class}: +Transformational function + +@item @emph{Syntax}: +@multitable @columnfractions .80 +@item @code{RESULT = FINDLOC(ARRAY, VALUE, DIM [, MASK] [,KIND] [,BACK])} +@item @code{RESULT = FINDLOC(ARRAY, VALUE, [, MASK] [,KIND] [,BACK])} +@end multitable + +@item @emph{Arguments}: +@multitable @columnfractions .15 .70 +@item @var{ARRAY} @tab Shall be an array of intrinsic type. +@item @var{VALUE} @tab A scalar of intrinsic type which is in type +conformance with @var{ARRAY}. +@item @var{DIM} @tab (Optional) Shall be a scalar of type +@code{INTEGER}, with a value between one and the rank of @var{ARRAY}, +inclusive. It may not be an optional dummy argument. +@item @var{KIND} @tab (Optional) An @code{INTEGER} initialization +expression indicating the kind parameter of the result. +@item @var{BACK} @tab (Optional) A scalar of type @code{LOGICAL}. +@end multitable + +@item @emph{Return value}: +If @var{DIM} is absent, the result is a rank-one array with a length +equal to the rank of @var{ARRAY}. If @var{DIM} is present, the result +is an array with a rank one less than the rank of @var{ARRAY}, and a +size corresponding to the size of @var{ARRAY} with the @var{DIM} +dimension removed. If @var{DIM} is present and @var{ARRAY} has a rank +of one, the result is a scalar. If the optional argument @var{KIND} +is present, the result is an integer of kind @var{KIND}, otherwise it +is of default kind. + +@item @emph{See also}: +@ref{MAXLOC}, @ref{MINLOC} + +@end table @node FLOOR @section @code{FLOOR} --- Integer floor function @@ -10039,7 +10100,7 @@ is present, the result is an integer of kind @var{KIND}, otherwise it is of default kind. @item @emph{See also}: -@ref{MAX}, @ref{MAXVAL} +@ref{FINDLOC}, @ref{MAX}, @ref{MAXVAL} @end table @@ -10395,7 +10456,7 @@ is present, the result is an integer of kind @var{KIND}, otherwise it is of default kind. @item @emph{See also}: -@ref{MIN}, @ref{MINVAL} +@ref{FINDLOC}, @ref{MIN}, @ref{MINVAL} @end table -- 2.30.2