aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrooks Moses <brooks.moses@codesourcery.com>2007-01-19 23:21:34 +0000
committerBrooks Moses <brooks@gcc.gnu.org>2007-01-19 15:21:34 -0800
commitd3dfa1fe697434f74f8d6a4a2220c3870e504b46 (patch)
tree793ffdcda2b8540a01206fa233f8e1382674da70
parentdb02da79174dea480aa4217dbe7afd3d3b8364d1 (diff)
downloadgcc-d3dfa1fe697434f74f8d6a4a2220c3870e504b46.zip
gcc-d3dfa1fe697434f74f8d6a4a2220c3870e504b46.tar.gz
gcc-d3dfa1fe697434f74f8d6a4a2220c3870e504b46.tar.bz2
intrinsic.texi: general whitespace cleanup.
* intrinsic.texi: general whitespace cleanup. (menu): Added TIME8, removed UNMASK. (AINT): Clarified argument requirement. (ANINT): Clarified argument requirement. (CEILING): Clarified argument requirement. (CHAR): Clarified argument requirement. (CMPLX): Clarified argument requirement. (DCMPLX): Clarified argument requirement. (FGET): Line rewrapping. (FLOOR): Clarified argument requirement. (GMTIME): Added documentation. (IAND): Added cross-reference. (IBCLR): Added cross-reference. (IBSET): Added cross-reference. (IEOR): Added cross-reference. (INT): Collapsed examples, clarified argument requirement. (IOR): Added cross-references. (LEN_TRIM): Corrected result kind. (LINK): Added cross-reference. (LLT): Removed "documentation pending". (LOGICAL): Added documentation. (LSHIFT): Added documentation. (LTIME): Added documentation. (MATMUL): Added documentation. (MAX): Added documentation. (MAXLOC): Added documentation. (MAXVAL): Added documentation. (MERGE): Added documentation. (MIN): Added documentation. (MINLOC): Added documentation. (MINVAL): Added documentation. (MVBITS): Moved to correct place, added documentation. (NOT): Added documentation. (PERROR): Added documentation. (RAN): Moved to correct place, added documentation. (REAL): Clarified argument requirement. (RENAME): Added documentation. (RSHIFT): Clarified argument requirement. (SIGN): Corrected table specification. (SYMLNK): Added documentation. (SYSTEM): Added documentation. (TIME): Added documentation. (TIME8): Added section and documentation. (UNMASK): Removed erroneous section. From-SVN: r120980
-rw-r--r--gcc/fortran/ChangeLog47
-rw-r--r--gcc/fortran/intrinsic.texi898
2 files changed, 689 insertions, 256 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 103b259..af49d0c 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,50 @@
+2007-01-19 Brooks Moses <brooks.moses@codesourcery.com>
+
+ * intrinsic.texi: general whitespace cleanup.
+ (menu): Added TIME8, removed UNMASK.
+ (AINT): Clarified argument requirement.
+ (ANINT): Clarified argument requirement.
+ (CEILING): Clarified argument requirement.
+ (CHAR): Clarified argument requirement.
+ (CMPLX): Clarified argument requirement.
+ (DCMPLX): Clarified argument requirement.
+ (FGET): Line rewrapping.
+ (FLOOR): Clarified argument requirement.
+ (GMTIME): Added documentation.
+ (IAND): Added cross-reference.
+ (IBCLR): Added cross-reference.
+ (IBSET): Added cross-reference.
+ (IEOR): Added cross-reference.
+ (INT): Collapsed examples, clarified argument requirement.
+ (IOR): Added cross-references.
+ (LEN_TRIM): Corrected result kind.
+ (LINK): Added cross-reference.
+ (LLT): Removed "documentation pending".
+ (LOGICAL): Added documentation.
+ (LSHIFT): Added documentation.
+ (LTIME): Added documentation.
+ (MATMUL): Added documentation.
+ (MAX): Added documentation.
+ (MAXLOC): Added documentation.
+ (MAXVAL): Added documentation.
+ (MERGE): Added documentation.
+ (MIN): Added documentation.
+ (MINLOC): Added documentation.
+ (MINVAL): Added documentation.
+ (MVBITS): Moved to correct place, added documentation.
+ (NOT): Added documentation.
+ (PERROR): Added documentation.
+ (RAN): Moved to correct place, added documentation.
+ (REAL): Clarified argument requirement.
+ (RENAME): Added documentation.
+ (RSHIFT): Clarified argument requirement.
+ (SIGN): Corrected table specification.
+ (SYMLNK): Added documentation.
+ (SYSTEM): Added documentation.
+ (TIME): Added documentation.
+ (TIME8): Added section and documentation.
+ (UNMASK): Removed erroneous section.
+
2007-01-18 H.J. Lu <hongjiu.lu@intel.com>
* trans-stmt.c (compute_overall_iter_number): Fix a typo.
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index 077fa87..93e5112 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -238,6 +238,7 @@ Some intrinsics have documentation yet to be completed as indicated by 'document
* @code{TAN}: TAN, Tangent function
* @code{TANH}: TANH, Hyperbolic tangent function
* @code{TIME}: TIME, Time function
+* @code{TIME8}: TIME8, Time function (64-bit)
* @code{TINY}: TINY, Smallest positive number of a real kind
* @code{TRANSFER}: TRANSFER, Transfer bit patterns
* @code{TRANSPOSE}: TRANSPOSE, Transpose an array of rank two
@@ -245,7 +246,6 @@ Some intrinsics have documentation yet to be completed as indicated by 'document
* @code{UBOUND}: UBOUND, Upper dimension bounds of an array
* @code{UMASK}: UMASK, Set the file creation mask
* @code{UNLINK}: UNLINK, Remove a file from the file system
-* @code{UNMASK}: UNMASK, (?)
* @code{UNPACK}: UNPACK, Unpack an array of rank one into an array
* @code{VERIFY}: VERIFY, Scan a string for the absence of a set of characters
* @code{XOR}: XOR, Bitwise logical exclusive or
@@ -735,8 +735,9 @@ Elemental function
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
@item @var{X} @tab The type of the argument shall be @code{REAL(*)}.
-@item @var{KIND} @tab (Optional) @var{KIND} shall be a scalar integer
-initialization expression.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
@end multitable
@item @emph{Return value}:
@@ -996,8 +997,9 @@ Elemental function
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
@item @var{X} @tab The type of the argument shall be @code{REAL(*)}.
-@item @var{KIND} @tab (Optional) @var{KIND} shall be a scalar integer
-initialization expression.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
@end multitable
@item @emph{Return value}:
@@ -1785,12 +1787,14 @@ F95 and later
Elemental function
@item @emph{Syntax}:
-@code{I = CEILING(X[,KIND])}
+@code{I = CEILING(X [, KIND])}
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
@item @var{X} @tab The type shall be @code{REAL(*)}.
-@item @var{KIND} @tab (Optional) scalar integer initialization expression.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
@end multitable
@item @emph{Return value}:
@@ -1820,7 +1824,7 @@ end program test_ceiling
@table @asis
@item @emph{Description}:
-@code{CHAR(I,[KIND])} returns the character represented by the integer @var{I}.
+@code{CHAR(I [, KIND])} returns the character represented by the integer @var{I}.
@item @emph{Standard}:
F77 and later
@@ -1829,12 +1833,14 @@ F77 and later
Elemental function
@item @emph{Syntax}:
-@code{C = CHAR(I[,KIND])}
+@code{C = CHAR(I [, KIND])}
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
@item @var{I} @tab The type shall be @code{INTEGER(*)}.
-@item @var{KIND} @tab Optional scaler integer initialization expression.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
@end multitable
@item @emph{Return value}:
@@ -1976,7 +1982,7 @@ end program chmod_test
@table @asis
@item @emph{Description}:
-@code{CMPLX(X[,Y[,KIND]])} returns a complex number where @var{X} is converted to
+@code{CMPLX(X [, Y [, KIND]])} returns a complex number where @var{X} is converted to
the real component. If @var{Y} is present it is converted to the imaginary
component. If @var{Y} is not present then the imaginary component is set to
0.0. If @var{X} is complex then @var{Y} must not be present.
@@ -1988,16 +1994,18 @@ F77 and later
Elemental function
@item @emph{Syntax}:
-@code{C = CMPLX(X[,Y[,KIND]])}
+@code{C = CMPLX(X [, Y [, KIND]])}
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
@item @var{X} @tab The type may be @code{INTEGER(*)}, @code{REAL(*)},
or @code{COMPLEX(*)}.
-@item @var{Y} @tab Optional, allowed if @var{X} is not
- @code{COMPLEX(*)}. May be @code{INTEGER(*)}
- or @code{REAL(*)}.
-@item @var{KIND} @tab Optional scaler integer initialization expression.
+@item @var{Y} @tab (Optional; only allowed if @var{X} is not
+ @code{COMPLEX(*)}.) May be @code{INTEGER(*)}
+ or @code{REAL(*)}.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
@end multitable
@item @emph{Return value}:
@@ -2415,8 +2423,14 @@ program test_ctime
print *, 'Program was started on ', date
end program test_ctime
@end smallexample
+
+@item @emph{See Also}:
+@ref{GMTIME}, @ref{LTIME}, @ref{TIME}, @ref{TIME8}
+
@end table
+
+
@node DATE_AND_TIME
@section @code{DATE_AND_TIME} --- Date and time subroutine
@cindex @code{DATE_AND_TIME} intrinsic
@@ -2556,7 +2570,7 @@ Elemental function
@multitable @columnfractions .15 .80
@item @var{X} @tab The type may be @code{INTEGER(*)}, @code{REAL(*)},
or @code{COMPLEX(*)}.
-@item @var{Y} @tab Optional if @var{X} is not @code{COMPLEX(*)}. May be
+@item @var{Y} @tab (Optional if @var{X} is not @code{COMPLEX(*)}.) May be
@code{INTEGER(*)} or @code{REAL(*)}.
@end multitable
@@ -3454,8 +3468,9 @@ Non-elemental subroutine
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
@item @var{C} @tab The type shall be @code{CHARACTER}.
-@item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}. Returns 0 on success,
- -1 on end-of-file and a system specific positive error code otherwise.
+@item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER}.
+ Returns 0 on success, -1 on end-of-file, and a
+ system specific positive error code otherwise.
@end multitable
@item @emph{Example}:
@@ -3552,12 +3567,14 @@ F95 and later
Elemental function
@item @emph{Syntax}:
-@code{I = FLOOR(X[,KIND])}
+@code{I = FLOOR(X [, KIND])}
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
@item @var{X} @tab The type shall be @code{REAL(*)}.
-@item @var{KIND} @tab Optional scaler integer initialization expression.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
@end multitable
@item @emph{Return value}:
@@ -4392,10 +4409,12 @@ See @code{GETPID} for an example.
@cindex @code{GMTIME} intrinsic
@cindex time, conversion function
-Not yet implemented in GNU Fortran.
-
@table @asis
@item @emph{Description}:
+Given a system time value @var{STIME} (as provided by the @code{TIME8()}
+intrinsic), fills @var{TARRAY} with values extracted from it appropriate
+to the UTC time zone (Universal Coordinated Time, also known in some
+countries as GMT, Greenwich Mean Time), using @code{gmtime(3)}.
@item @emph{Standard}:
GNU extension
@@ -4404,11 +4423,36 @@ GNU extension
Subroutine
@item @emph{Syntax}:
+@code{CALL GMTIME(STIME, TARRAY)}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STIME} @tab An @code{INTEGER(*)} scalar expression
+ corresponding to a system time, with
+ @code{INTENT(IN)}.
+@item @var{TARRAY} @tab A default @code{INTEGER} array with 9 elements,
+ with @code{INTENT(OUT)}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The elements of @var{TARRAY} are assigned as follows:
+@enumerate
+@item Seconds after the minute, range 0--59 or 0--61 to allow for leap
+ seconds
+@item Minutes after the hour, range 0--59
+@item Hours past midnight, range 0--23
+@item Day of month, range 0--31
+@item Number of months since January, range 0--12
+@item Years since 1900
+@item Number of days since Sunday, range 0--6
+@item Days since January 1
+@item Daylight savings indicator: positive if daylight savings is in
+ effect, zero if not, and negative if the information is not
+ available.
+@end enumerate
+
@item @emph{See also}:
+@ref{CTIME}, @ref{LTIME}, @ref{TIME}, @ref{TIME8}
@end table
@@ -4575,7 +4619,8 @@ END PROGRAM
@end smallexample
@item @emph{See also}:
-@ref{IOR}, @ref{IEOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR},
+@ref{IOR}, @ref{IEOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
+
@end table
@@ -4652,7 +4697,8 @@ The return value is of type @code{INTEGER(*)} and of the same kind as
@var{I}.
@item @emph{See also}:
-@ref{IBITS}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
+@ref{IBITS}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}, @ref{MVBITS}
+
@end table
@@ -4726,7 +4772,8 @@ The return value is of type @code{INTEGER(*)} and of the same kind as
@var{I}.
@item @emph{See also}:
-@ref{IBCLR}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
+@ref{IBCLR}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}, @ref{MVBITS}
+
@end table
@@ -4865,7 +4912,7 @@ arguments. (If the argument kinds differ, it is of the same kind as
the larger argument.)
@item @emph{See also}:
-@ref{IOR}, @ref{IAND}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR},
+@ref{IOR}, @ref{IAND}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
@end table
@@ -4959,16 +5006,15 @@ F77 and later
Elemental function
@item @emph{Syntax}:
-@multitable @columnfractions .30 .80
-@item @code{X = INT(X)}
-@item @code{X = INT(X, KIND)}
-@end multitable
+@item @code{X = INT(X [, KIND))}
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab shall be of type @code{INTEGER(*)}, @code{REAL(*)} or
-@code{COMPLEX(*)} @item @var{KIND} @tab (Optional) @var{KIND} shall be
-a scalar integer.
+@item @var{X} @tab shall be of type @code{INTEGER(*)},
+ @code{REAL(*)}, or @code{COMPLEX(*)}.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
@end multitable
@item @emph{Return value}:
@@ -4979,7 +5025,7 @@ the following rules:
@item (A)
If @var{X} is of type @code{INTEGER(*)}, @code{INT(X) = X}
@item (B)
-If @var{X} is of type @code{REAL(*)} and @math{|X| < 1} @code{INT(X)} equals @var{0}.
+If @var{X} is of type @code{REAL(*)} and @math{|X| < 1}, @code{INT(X)} equals @var{0}.
If @math{|X| \geq 1}, then @code{INT(X)} equals the largest integer that does not exceed
the range of @var{X} and whose sign is the same as the sign of @var{X}.
@item (C)
@@ -5041,7 +5087,7 @@ arguments. (If the argument kinds differ, it is of the same kind as
the larger argument.)
@item @emph{See also}:
-@ref{IEOR}, @ref{IAND}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR},
+@ref{IEOR}, @ref{IAND}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
@end table
@@ -5393,7 +5439,7 @@ with @code{INTENT(IN)}
@end multitable
@item @emph{Return value}:
-The return value is of @code{INTEGER(kind=4)} type.
+The return value is an @code{INTEGER} of the default kind.
@item @emph{See also}:
@ref{LEN}, @ref{ADJUSTL}, @ref{ADJUSTR}
@@ -5524,7 +5570,7 @@ Subroutine
@end multitable
@item @emph{See also}:
-@ref{UNLINK}
+@ref{SYMLNK}, @ref{UNLINK}
@end table
@@ -5581,8 +5627,6 @@ otherwise, based on the ASCII ordering.
@cindex comparison (lexical)
@cindex lexical comparison
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
Determines whether one string is lexically less than another string,
@@ -5807,10 +5851,10 @@ end program test_log10
@cindex @code{LOGICAL} intrinsic
@cindex conversion function (logical)
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
+Converts one kind of @code{LOGICAL} variable to another.
+
@item @emph{Standard}:
F95 and later
@@ -5818,11 +5862,23 @@ F95 and later
Elemental function
@item @emph{Syntax}:
+@code{RESULT = LOGICAL(L [, KIND])}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{L} @tab The type shall be @code{LOGICAL(*)}.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The return value is a @code{LOGICAL} value equal to @var{L}, with a
+kind corresponding to @var{KIND}, or of the default logical kind if
+@var{KIND} is not given.
+
@item @emph{See also}:
+@ref{INT}, @ref{REAL}, @ref{CMPLX}
@end table
@@ -5833,23 +5889,38 @@ Elemental function
@cindex @code{LSHIFT} intrinsic
@cindex bit operations
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
+@code{LSHIFT} returns a value corresponding to @var{I} with all of the
+bits shifted left by @var{SHIFT} places. If the absolute value of
+@var{SHIFT} is greater than @code{BIT_SIZE(I)}, the value is undefined.
+Bits shifted out from the left end are lost; zeros are shifted in from
+the opposite end.
+
+This function has been superceded by the @code{ISHFT} intrinsic, which
+is standard in Fortran 95 and later.
@item @emph{Standard}:
GNU extension
@item @emph{Class}:
-Function
+Elemental function
@item @emph{Syntax}:
+@code{RESULT = LSHIFT(I, SHIFT)}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{SHIFT} @tab The type shall be @code{INTEGER(*)}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The return value is of type @code{INTEGER(*)} and of the same kind as
+@var{I}.
+
@item @emph{See also}:
+@ref{ISHFT}, @ref{ISHFTC}, @ref{RSHIFT}
@end table
@@ -5897,10 +5968,11 @@ To stat an open file: @ref{FSTAT}, to stat a file: @ref{STAT}
@cindex @code{LTIME} intrinsic
@cindex time, conversion function
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
+Given a system time value @var{STIME} (as provided by the @code{TIME8()}
+intrinsic), fills @var{TARRAY} with values extracted from it appropriate
+to the local time zone using @code{localtime(3)}.
@item @emph{Standard}:
GNU extension
@@ -5909,11 +5981,36 @@ GNU extension
Subroutine
@item @emph{Syntax}:
+@code{CALL LTIME(STIME, TARRAY)}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STIME} @tab An @code{INTEGER(*)} scalar expression
+ corresponding to a system time, with
+ @code{INTENT(IN)}.
+@item @var{TARRAY} @tab A default @code{INTEGER} array with 9 elements,
+ with @code{INTENT(OUT)}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The elements of @var{TARRAY} are assigned as follows:
+@enumerate
+@item Seconds after the minute, range 0--59 or 0--61 to allow for leap
+ seconds
+@item Minutes after the hour, range 0--59
+@item Hours past midnight, range 0--23
+@item Day of month, range 0--31
+@item Number of months since January, range 0--12
+@item Years since 1900
+@item Number of days since Sunday, range 0--6
+@item Days since January 1
+@item Daylight savings indicator: positive if daylight savings is in
+ effect, zero if not, and negative if the information is not
+ available.
+@end enumerate
+
@item @emph{See also}:
+@ref{CTIME}, @ref{GMTIME}, @ref{TIME}, @ref{TIME8}
@end table
@@ -5984,15 +6081,16 @@ end program test_malloc
@end table
+
@node MATMUL
@section @code{MATMUL} --- matrix multiplication
@cindex @code{MATMUL} intrinsic
@cindex matrix operations
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
+Performs a matrix multiplication on numeric or logical arguments.
+
@item @emph{Standard}:
F95 and later
@@ -6000,22 +6098,42 @@ F95 and later
Transformational function
@item @emph{Syntax}:
+@code{RESULT = MATMUL(MATRIX_A, MATRIX_B)}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{MATRIX_A} @tab An array of @code{INTEGER(*)},
+ @code{REAL(*)}, @code{COMPLEX(*)}, or
+ @code{LOGICAL(*)} type, with a rank of
+ one or two.
+@item @var{MATRIX_B} @tab An array of @code{INTEGER(*)},
+ @code{REAL(*)}, or @code{COMPLEX(*)} type if
+ @var{MATRIX_A} is of a numeric type;
+ otherwise, an array of @code{LOGICAL(*)}
+ type. The rank shall be one or two, and the
+ first (or only) dimension of @var{MATRIX(B)}
+ shall be equal to the last (or only)
+ dimension of @var{MATRIX_A}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
+The matrix product of @var{MATRIX_A} and @var{MATRIX_B}. The type and
+kind of the result follow the usual type and kind promotion rules, as
+for the @code{*} or @code{.AND.} operators.
+
@item @emph{See also}:
@end table
+
@node MAX
@section @code{MAX} --- Maximum value of an argument list
@cindex @code{MAX} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
+Returns the argument with the largest (most positive) value.
+
@item @emph{Standard}:
F77 and later
@@ -6023,9 +6141,21 @@ F77 and later
Elemental function
@item @emph{Syntax}:
+@code{RESULT = MAX(A1, A2 [, A3 [, ...]])}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{A1} @tab The type shall be @code{INTEGER(*)} or
+ @code{REAL(*)}.
+@item @var{A2, A3, ...} @tab An expression of the same type and kind
+ as @var{A1}. (As a GNU extension,
+ arguments of different kinds are
+ permitted.)
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
+The return value corresponds to the maximum value among the arguments,
+and has the same type and kind as the first argument.
@item @emph{Specific names}:
@multitable @columnfractions .20 .20 .20 .40
@@ -6038,10 +6168,12 @@ Elemental function
@end multitable
@item @emph{See also}:
-@ref{MAXLOC} @ref{MAXVAL}
+@ref{MAXLOC} @ref{MAXVAL}, @ref{MIN}
+
@end table
+
@node MAXEXPONENT
@section @code{MAXEXPONENT} --- Maximum exponent of a real kind
@cindex @code{MAXEXPONENT} intrinsic
@@ -6084,15 +6216,25 @@ end program exponents
@end table
+
@node MAXLOC
@section @code{MAXLOC} --- Location of the maximum value within an array
@cindex @code{MAXLOC} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
+Determines the location of the element in the array with the maximum
+value, 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 maximum value, the location returned is
+that of the first such element in array element order. 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}:
F95 and later
@@ -6100,11 +6242,35 @@ F95 and later
Transformational function
@item @emph{Syntax}:
+@multitable @columnfractions .80
+@item @code{RESULT = MAXLOC(ARRAY, DIM [, MASK])}
+@item @code{RESULT = MAXLOC(ARRAY [, MASK])}
+@end multitable
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{ARRAY} @tab Shall be an array of type @code{INTEGER(*)},
+ @code{REAL(*)}, or @code{CHARACTER(*)}.
+@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{MASK} @tab Shall be an array of type @code{LOGICAL(*)},
+ and conformable with @var{ARRAY}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
+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. In all cases, the result is of default
+@code{INTEGER} type.
+
@item @emph{See also}:
@ref{MAX}, @ref{MAXVAL}
+
@end table
@@ -6112,23 +6278,50 @@ Transformational function
@node MAXVAL
@section @code{MAXVAL} --- Maximum value of an array
@cindex @code{MAXVAL} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
-@item @emph{Standard}:
+Determines the maximum value of the elements in an array value, or, if
+the @var{DIM} argument is supplied, determines the maximum value 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 the array has zero size, or all of the elements of
+@var{MASK} are @code{.FALSE.}, then the result is the most negative
+number of the type and kind of @var{ARRAY} if @var{ARRAY} is numeric, or
+a string of nulls if @var{ARRAY} is of character type.
+@item @emph{Standard}:
+F95 and later
@item @emph{Class}:
Transformational function
@item @emph{Syntax}:
+@multitable @columnfractions .80
+@item @code{RESULT = MAXVAL(ARRAY, DIM [, MASK])}
+@item @code{RESULT = MAXVAL(ARRAY [, MASK])}
+@end multitable
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{ARRAY} @tab Shall be an array of type @code{INTEGER(*)},
+ @code{REAL(*)}, or @code{CHARACTER(*)}.
+@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{MASK} @tab Shall be an array of type @code{LOGICAL(*)},
+ and conformable with @var{ARRAY}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+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. In all cases, the result is of the same
+type and kind as @var{ARRAY}.
@item @emph{See also}:
@ref{MAX}, @ref{MAXLOC}
@@ -6136,40 +6329,48 @@ Transformational function
-
@node MERGE
-@section @code{MERGE} --- Merge arrays
+@section @code{MERGE} --- Merge variables
@cindex @code{MERGE} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
+Select values from two arrays according to a logical mask. The result
+is equal to @var{TSOURCE} if @var{MASK} is @code{.TRUE.}, or equal to
+@var{FSOURCE} if it is @code{.FALSE.}.
+
@item @emph{Standard}:
F95 and later
@item @emph{Class}:
-elemental function
+Elemental function
@item @emph{Syntax}:
+@code{RESULT = MERGE(TSOURCE, FSOURCE, MASK)}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{TSOURCE} @tab May be of any type.
+@item @var{FSOURCE} @tab Shall be of the same type and type parameters
+ as @var{TSOURCE}.
+@item @var{MASK} @tab Shall be of type @code{LOGICAL(*)}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
-@item @emph{See also}:
+The result is of the same type and type parameters as @var{TSOURCE}.
+
@end table
+
@node MIN
@section @code{MIN} --- Minimum value of an argument list
@cindex @code{MIN} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
+Returns the argument with the smallest (most negative) value.
+
@item @emph{Standard}:
F77 and later
@@ -6177,9 +6378,21 @@ F77 and later
Elemental function
@item @emph{Syntax}:
+@code{RESULT = MIN(A1, A2 [, A3 [, ...]])}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{A1} @tab The type shall be @code{INTEGER(*)} or
+ @code{REAL(*)}.
+@item @var{A2, A3, ...} @tab An expression of the same type and kind
+ as @var{A1}. (As a GNU extension,
+ arguments of different kinds are
+ permitted.)
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
+The return value corresponds to the maximum value among the arguments,
+and has the same type and kind as the first argument.
@item @emph{Specific names}:
@multitable @columnfractions .20 .20 .20 .40
@@ -6192,7 +6405,7 @@ Elemental function
@end multitable
@item @emph{See also}:
-@ref{MINLOC}, @ref{MINVAL}
+@ref{MAX}, @ref{MINLOC}, @ref{MINVAL}
@end table
@node MINEXPONENT
@@ -6229,15 +6442,25 @@ See @code{MAXEXPONENT} for an example.
@end table
+
@node MINLOC
@section @code{MINLOC} --- Location of the minimum value within an array
@cindex @code{MINLOC} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
+Determines the location of the element in the array with the minimum
+value, or, if the @var{DIM} argument is supplied, determines the
+locations of the minimum 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 minimum value, the location returned is
+that of the first such element in array element order. 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}:
F95 and later
@@ -6245,9 +6468,31 @@ F95 and later
Transformational function
@item @emph{Syntax}:
+@multitable @columnfractions .80
+@item @code{RESULT = MINLOC(ARRAY, DIM [, MASK])}
+@item @code{RESULT = MINLOC(ARRAY [, MASK])}
+@end multitable
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{ARRAY} @tab Shall be an array of type @code{INTEGER(*)},
+ @code{REAL(*)}, or @code{CHARACTER(*)}.
+@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{MASK} @tab Shall be an array of type @code{LOGICAL(*)},
+ and conformable with @var{ARRAY}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
+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. In all cases, the result is of default
+@code{INTEGER} type.
@item @emph{See also}:
@ref{MIN}, @ref{MINVAL}
@@ -6255,15 +6500,22 @@ Transformational function
@end table
+
@node MINVAL
@section @code{MINVAL} --- Minimum value of an array
@cindex @code{MINVAL} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
+Determines the minimum value of the elements in an array value, or, if
+the @var{DIM} argument is supplied, determines the minimum value 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 the array has zero size, or all of the elements of
+@var{MASK} are @code{.FALSE.}, then the result is @code{HUGE(ARRAY)} if
+@var{ARRAY} is numeric, or a string of @code{CHAR(255)} characters if
+@var{ARRAY} is of character type.
+
@item @emph{Standard}:
F95 and later
@@ -6271,14 +6523,36 @@ F95 and later
Transformational function
@item @emph{Syntax}:
+@multitable @columnfractions .80
+@item @code{RESULT = MINVAL(ARRAY, DIM [, MASK])}
+@item @code{RESULT = MINVAL(ARRAY [, MASK])}
+@end multitable
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{ARRAY} @tab Shall be an array of type @code{INTEGER(*)},
+ @code{REAL(*)}, or @code{CHARACTER(*)}.
+@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{MASK} @tab Shall be an array of type @code{LOGICAL(*)},
+ and conformable with @var{ARRAY}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
+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. In all cases, the result is of the same
+type and kind as @var{ARRAY}.
@item @emph{See also}:
@ref{MIN}, @ref{MINLOC}
-@end table
+@end table
@@ -6398,31 +6672,6 @@ end program test_mod
-@node MVBITS
-@section @code{MVBITS} --- Move bits from one integer to another
-@cindex @code{MVBITS} intrinsic
-@cindex bit operations
-
-Intrinsic implemented, documentation pending.
-
-@table @asis
-@item @emph{Description}:
-@item @emph{Standard}:
-F95 and later
-
-@item @emph{Class}:
-Elemental subroutine
-
-@item @emph{Syntax}:
-@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{See also}:
-@end table
-
-
-
-
@node MOVE_ALLOC
@section @code{MOVE_ALLOC} --- Move allocation from one object to another
@cindex @code{MOVE_ALLOC} intrinsic
@@ -6470,6 +6719,50 @@ end program test_move_alloc
+@node MVBITS
+@section @code{MVBITS} --- Move bits from one integer to another
+@cindex @code{MVBITS} intrinsic
+@cindex bit operations
+
+@table @asis
+@item @emph{Description}:
+Moves @var{LEN} bits from positions @var{FROMPOS} through
+@code{FROMPOS+LEN-1} of @var{FROM} to positions @var{TOPOS} through
+@code{TOPOS+LEN-1} of @var{TO}. The portion of argument @var{TO} not
+affected by the movement of bits is unchanged. The values of
+@code{FROMPOS+LEN-1} and @code{TOPOS+LEN-1} must be less than
+@code{BIT_SIZE(FROM)}.
+
+@item @emph{Standard}:
+F95 and later
+
+@item @emph{Class}:
+Elemental function
+
+@item @emph{Syntax}:
+@code{RESULT = MVBITS(FROM, FROMPOS, LEN, TO, TOPOS)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{FROM} @tab The type shall be @code{INTEGER(*)}.
+@item @var{FROMPOS} @tab The type shall be @code{INTEGER(*)}.
+@item @var{LEN} @tab The type shall be @code{INTEGER(*)}.
+@item @var{TO} @tab The type shall be @code{INTEGER(*)}, of the
+ same kind as @var{FROM}.
+@item @var{TOPOS} @tab The type shall be @code{INTEGER(*)}.
+@end multitable
+
+@item @emph{Return value}:
+The return value is of type @code{INTEGER(*)} and of the same kind as
+@var{FROM}.
+
+@item @emph{See also}:
+@ref{IBCLR}, @ref{IBSET}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
+
+@end table
+
+
+
@node NEAREST
@section @code{NEAREST} --- Nearest representable number
@cindex @code{NEAREST} intrinsic
@@ -6523,7 +6816,7 @@ end program test_nearest
@table @asis
@item @emph{Description}:
-@code{NEW_LINE(C)} returns the new-line character
+@code{NEW_LINE(C)} returns the new-line character.
@item @emph{Standard}:
F2003 and later
@@ -6610,23 +6903,33 @@ end program test_nint
@node NOT
@section @code{NOT} --- Logical negation
@cindex @code{NOT} intrinsic
-@cindex logical operations
-
-Intrinsic implemented, documentation pending.
+@cindex bit operations
@table @asis
@item @emph{Description}:
+@code{NOT} returns the bitwise boolean inverse of @var{I}.
+
@item @emph{Standard}:
-F77 and later
+F95 and later
@item @emph{Class}:
Elemental function
@item @emph{Syntax}:
+@code{RESULT = NOT(I)}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
+The return type is @code{INTEGER(*)}, of the same kind as the
+argument.
+
@item @emph{See also}:
+@ref{IAND}, @ref{IEOR}, @ref{IOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}
+
@end table
@@ -6735,16 +7038,16 @@ Transformational function
-
@node PERROR
@section @code{PERROR} --- Print system error message
@cindex @code{PERROR} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
+Prints (on the C @code{stderr} stream) a newline-terminated error
+message corresponding to the last system error. This is prefixed by
+@var{STRING}, a colon and a space. See @code{perror(3)}.
+
@item @emph{Standard}:
GNU extension
@@ -6752,17 +7055,19 @@ GNU extension
Subroutine
@item @emph{Syntax}:
+@code{CALL PERROR(STRING)}
+
@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+@multitable @columnfractions .15 .80
+@item @var{STRING} @tab A scalar of default @code{CHARACTER} type.
+@end multitable
+
@item @emph{See also}:
@ref{IERRNO}
@end table
-
@node PRECISION
@section @code{PRECISION} --- Decimal precision of a real kind
@cindex @code{PRECISION} intrinsic
@@ -6829,7 +7134,6 @@ Inquiry function
-
@node PRODUCT
@section @code{PRODUCT} --- Product of array elements
@cindex @code{PRODUCT} intrinsic
@@ -6856,7 +7160,6 @@ Transformational function
-
@node RADIX
@section @code{RADIX} --- Base of a model number
@cindex @code{RADIX} intrinsic
@@ -6896,62 +7199,32 @@ end program test_radix
-@node RANDOM_NUMBER
-@section @code{RANDOM_NUMBER} --- Pseudo-random number
-@cindex @code{RANDOM_NUMBER} intrinsic
+@node RAN
+@section @code{RAN} --- Real pseudo-random number
+@cindex @code{RAN} intrinsic
@cindex random numbers
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
-@item @emph{Standard}:
-F95 and later
-
-@item @emph{Class}:
-Elemental subroutine
-
-@item @emph{Syntax}:
-@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{See also}:
-@ref{RANDOM_SEED}
-@end table
-
-
-
-
-@node RANDOM_SEED
-@section @code{RANDOM_SEED} --- Initialize a pseudo-random number sequence
-@cindex @code{RANDOM_SEED} intrinsic
-@cindex random numbers
-
-Intrinsic implemented, documentation pending.
+For compatibility with HP FORTRAN 77/iX, the @code{RAN} intrinsic is
+provided as an alias for @code{RAND}. See @ref{RAND} for complete
+documentation.
-@table @asis
-@item @emph{Description}:
@item @emph{Standard}:
-F95 and later
+GNU extension
@item @emph{Class}:
-Subroutine
+Non-elemental function
-@item @emph{Syntax}:
-@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
@item @emph{See also}:
-@ref{RANDOM_NUMBER}
+@ref{RAND}, @ref{RANDOM_NUMBER}
@end table
-
@node RAND
@section @code{RAND} --- Real pseudo-random number
@cindex @code{RAND} intrinsic
-@cindex @code{RAN} intrinsic
@cindex random numbers
@table @asis
@@ -6966,7 +7239,7 @@ it is used as a new seed with @code{SRAND}.
GNU extension
@item @emph{Class}:
-non-elemental function
+Non-elemental function
@item @emph{Syntax}:
@code{X = RAND(FLAG)}
@@ -6990,10 +7263,6 @@ program test_rand
end program test_rand
@end smallexample
-@item @emph{Note}:
-For compatibility with HP FORTRAN 77/iX, the @code{RAN} intrinsic is
-provided as an alias for @code{RAND}.
-
@item @emph{See also}:
@ref{SRAND}, @ref{RANDOM_NUMBER}
@@ -7001,6 +7270,56 @@ provided as an alias for @code{RAND}.
+@node RANDOM_NUMBER
+@section @code{RANDOM_NUMBER} --- Pseudo-random number
+@cindex @code{RANDOM_NUMBER} intrinsic
+@cindex random numbers
+
+Intrinsic implemented, documentation pending.
+
+@table @asis
+@item @emph{Description}:
+@item @emph{Standard}:
+F95 and later
+
+@item @emph{Class}:
+Elemental subroutine
+
+@item @emph{Syntax}:
+@item @emph{Arguments}:
+@item @emph{Return value}:
+@item @emph{Example}:
+@item @emph{See also}:
+@ref{RANDOM_SEED}
+@end table
+
+
+
+@node RANDOM_SEED
+@section @code{RANDOM_SEED} --- Initialize a pseudo-random number sequence
+@cindex @code{RANDOM_SEED} intrinsic
+@cindex random numbers
+
+Intrinsic implemented, documentation pending.
+
+@table @asis
+@item @emph{Description}:
+@item @emph{Standard}:
+F95 and later
+
+@item @emph{Class}:
+Subroutine
+
+@item @emph{Syntax}:
+@item @emph{Arguments}:
+@item @emph{Return value}:
+@item @emph{Example}:
+@item @emph{See also}:
+@ref{RANDOM_NUMBER}
+@end table
+
+
+
@node RANGE
@section @code{RANGE} --- Decimal exponent range of a real kind
@cindex @code{RANGE} intrinsic
@@ -7035,21 +7354,6 @@ See @code{PRECISION} for an example.
-@node RAN
-@section @code{RAN} --- Real pseudo-random number
-@cindex @code{RAN} intrinsic
-@cindex random numbers
-
-@table @asis
-@item @emph{Standard}:
-GNU extension
-
-@item @emph{See also}:
-@ref{RAND}, @ref{RANDOM_NUMBER}
-@end table
-
-
-
@node REAL
@section @code{REAL} --- Convert to real type
@cindex @code{REAL} intrinsic
@@ -7077,9 +7381,11 @@ Elemental function
@item @emph{Arguments}:
@multitable @columnfractions .15 .80
-@item @var{X} @tab shall be @code{INTEGER(*)}, @code{REAL(*)}, or
-@code{COMPLEX(*)}.
-@item @var{KIND} @tab (Optional) @var{KIND} shall be a scalar integer.
+@item @var{X} @tab shall be @code{INTEGER(*)}, @code{REAL(*)}, or
+ @code{COMPLEX(*)}.
+@item @var{KIND} @tab (Optional) An @code{INTEGER(*)} initialization
+ expression indicating the kind parameter of
+ the result.
@end multitable
@item @emph{Return value}:
@@ -7113,15 +7419,21 @@ end program test_real
@end table
+
@node RENAME
@section @code{RENAME} --- Rename a file
@cindex @code{RENAME} intrinsic
@cindex file system operations
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
+Renames a file from file @var{PATH1} to @var{PATH2}. A null
+character (@code{CHAR(0)}) can be used to mark the end of the names in
+@var{PATH1} and @var{PATH2}; otherwise, trailing blanks in the file
+names are ignored. If the @var{STATUS} argument is supplied, it
+contains 0 on success or a nonzero error code upon return; see
+@code{rename(2)}.
+
@item @emph{Standard}:
GNU extension
@@ -7129,12 +7441,19 @@ GNU extension
Subroutine
@item @emph{Syntax}:
+@code{CALL RENAME(PATH1, PATH2 [, STATUS])}
+
@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
+@multitable @columnfractions .15 .80
+@item @var{PATH1} @tab Shall be of default @code{CHARACTER} type.
+@item @var{PATH2} @tab Shall be of default @code{CHARACTER} type.
+@item @var{STATUS} @tab (Optional) Shall be of default @code{INTEGER} type.
+@end multitable
+
@item @emph{See also}:
-@end table
+@ref{LINK}
+@end table
@@ -7225,22 +7544,38 @@ The value returned is equal to
@cindex @code{RSHIFT} intrinsic
@cindex bit operations
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
+@code{RSHIFT} returns a value corresponding to @var{I} with all of the
+bits shifted right by @var{SHIFT} places. If the absolute value of
+@var{SHIFT} is greater than @code{BIT_SIZE(I)}, the value is undefined.
+Bits shifted out from the left end are lost; zeros are shifted in from
+the opposite end.
+
+This function has been superceded by the @code{ISHFT} intrinsic, which
+is standard in Fortran 95 and later.
@item @emph{Standard}:
GNU extension
@item @emph{Class}:
-Function
+Elemental function
@item @emph{Syntax}:
+@code{RESULT = RSHIFT(I, SHIFT)}
+
@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{SHIFT} @tab The type shall be @code{INTEGER(*)}.
+@end multitable
+
@item @emph{Return value}:
-@item @emph{Example}:
+The return value is of type @code{INTEGER(*)} and of the same kind as
+@var{I}.
+
@item @emph{See also}:
+@ref{ISHFT}, @ref{ISHFTC}, @ref{LSHIFT}
@end table
@@ -7377,7 +7712,7 @@ F95 and later
Transformational function
@item @emph{Syntax}:
-@multitable @columnfractions .30 .80
+@multitable @columnfractions .80
@item @code{J = SELECTED_INT_KIND(I)}
@end multitable
@@ -7423,7 +7758,7 @@ F95 and later
Transformational function
@item @emph{Syntax}:
-@multitable @columnfractions .30 .80
+@multitable @columnfractions .80
@item @code{I = SELECTED_REAL_KIND(P,R)}
@end multitable
@@ -7538,7 +7873,6 @@ Inquiry function
-
@node SIGN
@section @code{SIGN} --- Sign copying function
@cindex @code{SIGN} intrinsic
@@ -7616,7 +7950,7 @@ GNU extension
subroutine, non-elemental function
@item @emph{Syntax}:
-@multitable @columnfractions .30 .80
+@multitable @columnfractions .80
@item @code{CALL SIGNAL(NUMBER, HANDLER)}
@item @code{CALL SIGNAL(NUMBER, HANDLER, STATUS)}
@item @code{STATUS = SIGNAL(NUMBER, HANDLER)}
@@ -7651,7 +7985,6 @@ end program test_signal
-
@node SIN
@section @code{SIN} --- Sine function
@cindex @code{SIN} intrinsic
@@ -7960,6 +8293,7 @@ pseudo-random number generators.
@end table
+
@node STAT
@section @code{STAT} --- Get file status
@cindex @code{STAT} intrinsic
@@ -8066,39 +8400,56 @@ Transformational function
-
@node SYMLNK
@section @code{SYMLNK} --- Create a symbolic link
@cindex @code{SYMLNK} intrinsic
@cindex file system operations
-Intrinsic implemented, documentation pending.
-
@table @asis
@item @emph{Description}:
+Makes a symbolic link from file @var{PATH1} to @var{PATH2}. A null
+character (@code{CHAR(0)}) can be used to mark the end of the names in
+@var{PATH1} and @var{PATH2}; otherwise, trailing blanks in the file
+names are ignored. If the @var{STATUS} argument is supplied, it
+contains 0 on success or a nonzero error code upon return; see
+@code{symlink(2)}. If the system does not supply @code{symlink(2)},
+@code{ENOSYS} is returned.
+
@item @emph{Standard}:
-@item @emph{Class}:
GNU extension
+@item @emph{Class}:
+Subroutine
+
@item @emph{Syntax}:
+@code{CALL SYMLNK(PATH1, PATH2 [, STATUS])}
+
@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
+@multitable @columnfractions .15 .80
+@item @var{PATH1} @tab Shall be of default @code{CHARACTER} type.
+@item @var{PATH2} @tab Shall be of default @code{CHARACTER} type.
+@item @var{STATUS} @tab (Optional) Shall be of default @code{INTEGER} type.
+@end multitable
+
@item @emph{See also}:
-@end table
+@ref{LINK}, @ref{UNLINK}
+@end table
@node SYSTEM
@section @code{SYSTEM} --- Execute a shell command
@cindex @code{SYSTEM} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
@table @asis
@item @emph{Description}:
+Passes the command @var{COMMAND} to a shell (see @code{system(3)}). If
+argument @var{STATUS} is present, it contains the value returned by
+@code{system(3)}, which is presumably 0 if the shell command succeeded.
+Note that which shell is used to invoke the command is system-dependent
+and environment-dependent.
+
@item @emph{Standard}:
GNU extension
@@ -8106,15 +8457,19 @@ GNU extension
Subroutine
@item @emph{Syntax}:
+@code{CALL SYSTEM(COMMAND [, STATUS])}
+
@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
+@multitable @columnfractions .15 .80
+@item @var{COMMAND} @tab Shall be of default @code{CHARACTER} type.
+@item @var{STATUS} @tab (Optional) Shall be of default @code{INTEGER} type.
+@end multitable
+
@item @emph{See also}:
@end table
-
@node SYSTEM_CLOCK
@section @code{SYSTEM_CLOCK} --- Time function
@cindex @code{SYSTEM_CLOCK} intrinsic
@@ -8242,10 +8597,61 @@ end program test_tanh
@cindex time, current
@cindex current time
-Intrinsic implemented, documentation pending.
+@table @asis
+@item @emph{Description}:
+Returns the current time encoded as an integer (in the manner of the
+UNIX function @code{time(3)}). This value is suitable for passing to
+@code{CTIME()}, @code{GMTIME()}, and @code{LTIME()}.
+
+This intrinsic is not fully portable, such as to systems with 32-bit
+@code{INTEGER} types but supporting times wider than 32 bits. Therefore,
+the values returned by this intrinsic might be, or become, negative, or
+numerically less than previous values, during a single run of the
+compiled program.
+
+See @ref{TIME8}, for information on a similar intrinsic that might be
+portable to more GNU Fortran implementations, though to fewer Fortran
+compilers.
+
+@item @emph{Standard}:
+GNU extension
+
+@item @emph{Class}:
+Non-elemental function
+
+@item @emph{Syntax}:
+@code{RESULT = TIME()}
+
+@item @emph{Return value}:
+The return value is a scalar of type @code{INTEGER(4)}.
+
+@item @emph{See also}:
+@ref{CTIME}, @ref{GMTIME}, @ref{LTIME}, @ref{TIME8}
+
+@end table
+
+
+
+@node TIME8
+@section @code{TIME8} --- Time function (64-bit)
+@cindex @code{TIME8} intrinsic
+@cindex time, current
+@cindex current time
@table @asis
@item @emph{Description}:
+Returns the current time encoded as an integer (in the manner of the
+UNIX function @code{time(3)}). This value is suitable for passing to
+@code{CTIME()}, @code{GMTIME()}, and @code{LTIME()}.
+
+@emph{Warning:} this intrinsic does not increase the range of the timing
+values over that returned by @code{time(3)}. On a system with a 32-bit
+@code{time(3)}, @code{TIME8()} will return a 32-bit value, even though
+it is converted to a 64-bit @code{INTEGER(8)} value. That means
+overflows of the 32-bit value can still occur. Therefore, the values
+returned by this intrinsic might be or become negative or numerically
+less than previous values during a single run of the compiled program.
+
@item @emph{Standard}:
GNU extension
@@ -8253,10 +8659,14 @@ GNU extension
Non-elemental function
@item @emph{Syntax}:
-@item @emph{Arguments}:
+@code{RESULT = TIME8()}
+
@item @emph{Return value}:
-@item @emph{Example}:
+The return value is a scalar of type @code{INTEGER(8)}.
+
@item @emph{See also}:
+@ref{CTIME}, @ref{GMTIME}, @ref{LTIME}, @ref{TIME}
+
@end table
@@ -8318,7 +8728,6 @@ Transformational function
-
@node TRANSPOSE
@section @code{TRANSPOSE} --- Transpose an array of rank two
@cindex @code{TRANSPOSE} intrinsic
@@ -8343,7 +8752,6 @@ Transformational function
-
@node TRIM
@section @code{TRIM} --- Function to remove trailing blank characters of a string
@cindex @code{TRIM} intrinsic
@@ -8442,7 +8850,7 @@ Unlinks the file @var{PATH}. A null character (@code{CHAR(0)}) can be
used to mark the end of the name in @var{PATH}; otherwise, trailing
blanks in the file name are ignored. If the @var{STATUS} argument is
supplied, it contains 0 on success or a nonzero error code upon return;
-see @code{link(2)}.
+see @code{unlink(2)}.
@item @emph{Standard}:
GNU extension
@@ -8460,33 +8868,11 @@ Subroutine
@end multitable
@item @emph{See also}:
-@ref{LINK}
-@end table
-
-
-
-@node UNMASK
-@section @code{UNMASK} --- (?)
-@cindex @code{UNMASK} intrinsic
-@cindex undocumented intrinsic
-
-Intrinsic implemented, documentation pending.
-
-@table @asis
-@item @emph{Description}:
-@item @emph{Standard}:
-@item @emph{Class}:
-@item @emph{Syntax}:
-@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
-@item @emph{See also}:
+@ref{LINK}, @ref{SYMLNK}
@end table
-
@node UNPACK
@section @code{UNPACK} --- Unpack an array of rank one into an array
@cindex @code{UNPACK} intrinsic
@@ -8513,7 +8899,6 @@ Transformational function
-
@node VERIFY
@section @code{VERIFY} --- Scan a string for the absence of a set of characters
@cindex @code{VERIFY} intrinsic
@@ -8538,6 +8923,7 @@ Elemental function
@end table
+
@node XOR
@section @code{XOR} --- Bitwise logical exclusive OR
@cindex @code{XOR} intrinsic