OSDN Git Service

* intrinsic.texi (ACHAR): Added cross-references.
[pf3gnuchains/gcc-fork.git] / gcc / fortran / intrinsic.texi
index 45bb547..decb4dd 100644 (file)
@@ -1,5 +1,5 @@
 @ignore
-Copyright (C) 2005, 2006
+Copyright (C) 2005, 2006, 2007
 Free Software Foundation, Inc.
 This is part of the GNU Fortran manual.   
 For copying conditions, see the file gfortran.texi.
@@ -16,7 +16,7 @@ included in the gfdl(7) man page.
 Some basic guidelines for editing this document:
 
   (1) The intrinsic procedures are to be listed in alphabetical order.
-  (2) The generic name is to be use.
+  (2) The generic name is to be used.
   (3) The specific names are included in the function index and in a
       table at the end of the node (See ABS entry).
   (4) Try to maintain the same style for each entry.
@@ -36,7 +36,7 @@ Some basic guidelines for editing this document:
 
 @node Intrinsic Procedures
 @chapter Intrinsic Procedures
-@cindex Intrinsic Procedures
+@cindex intrinsic procedures
 
 This portion of the document is incomplete and undergoing massive expansion 
 and editing.  All contributions and corrections are strongly encouraged. 
@@ -49,10 +49,10 @@ Some intrinsics have documentation yet to be completed as indicated by 'document
 @comment  - Short
 
 @menu
-* Introduction:         Introduction
+* Introduction:         Introduction to Intrinsics
 * @code{ABORT}:         ABORT,     Abort the program     
 * @code{ABS}:           ABS,       Absolute value     
-* @code{ACCESS}:        ACCESS,    Checks file access method
+* @code{ACCESS}:        ACCESS,    Checks file access modes
 * @code{ACHAR}:         ACHAR,     Character in @acronym{ASCII} collating sequence
 * @code{ACOS}:          ACOS,      Arccosine function
 * @code{ACOSH}:         ACOSH,     Hyperbolic arccosine function
@@ -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,22 +246,21 @@ 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
 @end menu
 
-@node Introduction
+@node Introduction to Intrinsics
 @section Introduction to intrinsic procedures
 
-GNU Fortran provides a rich set of intrinsic procedures that includes all
-the intrinsic procedures required by the Fortran 95 standard, a set of
-intrinsic procedures for backwards compatibility with Gnu Fortran 77
-(i.e., @command{g77}), and a small selection of intrinsic procedures
-from the Fortran 2003 standard.  Any description here, which conflicts with a 
-description in either the Fortran 95 standard or the Fortran 2003 standard,
-is unintentional and the standard(s) should be considered authoritative.
+The intrinsic procedures provided by GNU Fortran include all of the
+intrinsic procedures required by the Fortran 95 standard, a set of
+intrinsic procedures for backwards compatibility with G77, and a small
+selection of intrinsic procedures from the Fortran 2003 standard.  Any
+conflict between a description here and a description in either the
+Fortran 95 standard or the Fortran 2003 standard is unintentional, and
+the standard(s) should be considered authoritative.
 
 The enumeration of the @code{KIND} type parameter is processor defined in
 the Fortran 95 standard.  GNU Fortran defines the default integer type and
@@ -275,7 +275,7 @@ names for an intrinsic procedure the kind type parameter will be explicitly
 given (e.g., @code{REAL(KIND=4)} or @code{REAL(KIND=8)}).  Finally, for
 brevity the optional @code{KIND=} syntax will be omitted.
 
-Many of the intrinsics procedures take one or more optional arguments.
+Many of the intrinsic procedures take one or more optional arguments.
 This document follows the convention used in the Fortran 95 standard,
 and denotes such arguments by square brackets.
 
@@ -288,13 +288,13 @@ implemented both a function and a subroutine.  Both classes
 have been implemented in @command{gfortran} for backwards compatibility
 with @command{g77}.  It is noted here that these functions and subroutines
 cannot be intermixed in a given subprogram.  In the descriptions that follow,
-the applicable option(s) is noted.
+the applicable standard for each intrinsic procedure is noted.
 
 
 
 @node ABORT
 @section @code{ABORT} --- Abort the program  
-@findex @code{ABORT} intrinsic
+@cindex @code{ABORT} intrinsic
 @cindex abort
 
 @table @asis
@@ -329,15 +329,14 @@ end program test_abort
 @end table
 
 
-
 @node ABS
 @section @code{ABS} --- Absolute value  
-@findex @code{ABS} intrinsic
-@findex @code{CABS} intrinsic
-@findex @code{DABS} intrinsic
-@findex @code{IABS} intrinsic
-@findex @code{ZABS} intrinsic
-@findex @code{CDABS} intrinsic
+@cindex @code{ABS} intrinsic
+@cindex @code{CABS} intrinsic
+@cindex @code{DABS} intrinsic
+@cindex @code{IABS} intrinsic
+@cindex @code{ZABS} intrinsic
+@cindex @code{CDABS} intrinsic
 @cindex absolute value
 
 @table @asis
@@ -351,7 +350,7 @@ F77 and later, has overloads that are GNU extensions
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ABS(X)}
+@code{RESULT = ABS(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -389,23 +388,56 @@ end program test_abs
 
 
 @node ACCESS
-@section @code{ACCESS} --- Checks file access method
-@findex @code{ACCESS} 
-@cindex file system functions
-
-Not yet implemented in GNU Fortran.
+@section @code{ACCESS} --- Checks file access modes
+@cindex @code{ACCESS} 
+@cindex file system operations
 
 @table @asis
 @item @emph{Description}:
+@code{ACCESS(NAME, MODE)} checks whether the file @var{NAME} 
+exists, is readable, writable or executable. Except for the
+executable check, @code{ACCESS} can be replaced by
+Fortran 95's @code{INQUIRE}.
 
 @item @emph{Standard}:
 GNU extension
 
 @item @emph{Class}:
+Inquiry function
+
 @item @emph{Syntax}:
+@code{RESULT = ACCESS(NAME, MODE)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{NAME} @tab Scalar @code{CHARACTER} with the file name.
+Tailing blank are ignored unless the character @code{achar(0)} is
+present, then all characters up to and excluding @code{achar(0)} are
+used as file name.
+@item @var{MODE} @tab Scalar @code{CHARACTER} with the file access mode,
+may be any concatenation of @code{"r"} (readable), @code{"w"} (writable)
+and @code{"x"} (executable), or @code{" "} to check for existence.
+@end multitable
+
 @item @emph{Return value}:
+Returns a scalar @code{INTEGER}, which is @code{0} if the file is
+accessable in the given mode; otherwise or if an invalid argument
+has been given for @code{MODE} the value @code{1} is returned.
+
 @item @emph{Example}:
+@smallexample
+program access_test
+  implicit none
+  character(len=*), parameter :: file  = 'test.dat'
+  character(len=*), parameter :: file2 = 'test.dat  '//achar(0)
+  if(access(file,' ') == 0) print *, trim(file),' is exists'
+  if(access(file,'r') == 0) print *, trim(file),' is readable'
+  if(access(file,'w') == 0) print *, trim(file),' is writable'
+  if(access(file,'x') == 0) print *, trim(file),' is executable'
+  if(access(file2,'rwx') == 0) &
+    print *, trim(file2),' is readable, writable and executable'
+end program access_test
+@end smallexample
 @item @emph{Specific names}:
 @item @emph{See also}:
 
@@ -414,7 +446,7 @@ GNU extension
 
 @node ACHAR
 @section @code{ACHAR} --- Character in @acronym{ASCII} collating sequence 
-@findex @code{ACHAR} intrinsic
+@cindex @code{ACHAR} intrinsic
 @cindex @acronym{ASCII} collating sequence
 
 @table @asis
@@ -429,7 +461,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{C = ACHAR(I)}
+@code{RESULT = ACHAR(I)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -447,14 +479,18 @@ program test_achar
   c = achar(32)
 end program test_achar
 @end smallexample
+
+@item @emph{See also}:
+@ref{CHAR}, @ref{IACHAR}, @ref{ICHAR}
+
 @end table
 
 
 
 @node ACOS
 @section @code{ACOS} --- Arccosine function 
-@findex @code{ACOS} intrinsic
-@findex @code{DACOS} intrinsic
+@cindex @code{ACOS} intrinsic
+@cindex @code{DACOS} intrinsic
 @cindex trigonometric functions (inverse)
 
 @table @asis
@@ -468,7 +504,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ACOS(X)}
+@code{RESULT = ACOS(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -503,7 +539,7 @@ Inverse function: @ref{COS}
 
 @node ACOSH
 @section @code{ACOSH} --- Hyperbolic arccosine function
-@findex @code{ACOSH} intrinsic
+@cindex @code{ACOSH} intrinsic
 @cindex hyperbolic arccosine
 @cindex hyperbolic cosine (inverse)
 
@@ -518,7 +554,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ACOSH(X)}
+@code{RESULT = ACOSH(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -546,7 +582,7 @@ Inverse function: @ref{COSH}
 
 @node ADJUSTL
 @section @code{ADJUSTL} --- Left adjust a string 
-@findex @code{ADJUSTL} intrinsic
+@cindex @code{ADJUSTL} intrinsic
 @cindex adjust string
 
 @table @asis
@@ -561,7 +597,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{STR = ADJUSTL(STR)}
+@code{RESULT = ADJUSTL(STR)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -587,7 +623,7 @@ end program test_adjustl
 
 @node ADJUSTR
 @section @code{ADJUSTR} --- Right adjust a string 
-@findex @code{ADJUSTR} intrinsic
+@cindex @code{ADJUSTR} intrinsic
 @cindex adjust string
 
 @table @asis
@@ -602,7 +638,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{STR = ADJUSTR(STR)}
+@code{RESULT = ADJUSTR(STR)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -628,11 +664,11 @@ end program test_adjustr
 
 @node AIMAG
 @section @code{AIMAG} --- Imaginary part of complex number  
-@findex @code{AIMAG} intrinsic
-@findex @code{DIMAG} intrinsic
-@findex @code{IMAG} intrinsic
-@findex @code{IMAGPART} intrinsic
-@cindex Imaginary part
+@cindex @code{AIMAG} intrinsic
+@cindex @code{DIMAG} intrinsic
+@cindex @code{IMAG} intrinsic
+@cindex @code{IMAGPART} intrinsic
+@cindex imaginary part of a complex number
 
 @table @asis
 @item @emph{Description}:
@@ -648,7 +684,7 @@ F77 and later, has overloads that are GNU extensions
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = AIMAG(Z)}
+@code{RESULT = AIMAG(Z)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -683,8 +719,8 @@ end program test_aimag
 
 @node AINT
 @section @code{AINT} --- Truncate to a whole number
-@findex @code{AINT} intrinsic
-@findex @code{DINT} intrinsic
+@cindex @code{AINT} intrinsic
+@cindex @code{DINT} intrinsic
 @cindex whole number
 
 @table @asis
@@ -698,14 +734,14 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = AINT(X)} 
-@code{X = AINT(X, KIND)}
+@code{RESULT = AINT(X [, KIND])} 
 
 @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}:
@@ -740,7 +776,7 @@ end program test_aint
 
 @node ALARM
 @section @code{ALARM} --- Execute a routine after a given delay
-@findex @code{ALARM} intrinsic
+@cindex @code{ALARM} intrinsic
 
 @table @asis
 @item @emph{Description}:
@@ -758,8 +794,7 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
-@code{CALL ALARM(SECONDS, HANDLER)} 
-@code{CALL ALARM(SECONDS, HANDLER, STATUS)}
+@code{CALL ALARM(SECONDS, HANDLER [, STATUS])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -790,7 +825,7 @@ after 3 seconds.
 
 @node ALL
 @section @code{ALL} --- All values in @var{MASK} along @var{DIM} are true 
-@findex @code{ALL} intrinsic
+@cindex @code{ALL} intrinsic
 @cindex true values
 
 @table @asis
@@ -805,8 +840,7 @@ F95 and later
 transformational function
 
 @item @emph{Syntax}:
-@code{L = ALL(MASK)} 
-@code{L = ALL(MASK, DIM)}
+@code{RESULT = ALL(MASK [, DIM])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -857,7 +891,7 @@ end program test_all
 
 @node ALLOCATED
 @section @code{ALLOCATED} --- Status of an allocatable entity
-@findex @code{ALLOCATED} intrinsic
+@cindex @code{ALLOCATED} intrinsic
 @cindex allocation status
 
 @table @asis
@@ -871,7 +905,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{L = ALLOCATED(X)}
+@code{RESULT = ALLOCATED(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -896,7 +930,7 @@ end program test_allocated
 
 @node AND
 @section @code{AND} --- Bitwise logical AND
-@findex @code{AND} intrinsic
+@cindex @code{AND} intrinsic
 @cindex bit operations
 
 @table @asis
@@ -946,8 +980,8 @@ F95 elemental function: @ref{IAND}
 
 @node ANINT
 @section @code{ANINT} --- Nearest whole number
-@findex @code{ANINT} intrinsic
-@findex @code{DNINT} intrinsic
+@cindex @code{ANINT} intrinsic
+@cindex @code{DNINT} intrinsic
 @cindex whole number
 
 @table @asis
@@ -961,14 +995,14 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ANINT(X)}
-@code{X = ANINT(X, KIND)}
+@code{RESULT = ANINT(X [, KIND])}
 
 @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}:
@@ -1001,7 +1035,7 @@ end program test_anint
 
 @node ANY
 @section @code{ANY} --- Any value in @var{MASK} along @var{DIM} is true 
-@findex @code{ANY} intrinsic
+@cindex @code{ANY} intrinsic
 @cindex true values
 
 @table @asis
@@ -1016,8 +1050,7 @@ F95 and later
 transformational function
 
 @item @emph{Syntax}:
-@code{L = ANY(MASK)} 
-@code{L = ANY(MASK, DIM)}
+@code{RESULT = ANY(MASK [, DIM])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1068,8 +1101,8 @@ end program test_any
 
 @node ASIN
 @section @code{ASIN} --- Arcsine function 
-@findex @code{ASIN} intrinsic
-@findex @code{DASIN} intrinsic
+@cindex @code{ASIN} intrinsic
+@cindex @code{DASIN} intrinsic
 @cindex trigonometric functions (inverse)
 
 @table @asis
@@ -1083,7 +1116,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ASIN(X)}
+@code{RESULT = ASIN(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1118,7 +1151,7 @@ Inverse function: @ref{SIN}
 
 @node ASINH
 @section @code{ASINH} --- Hyperbolic arcsine function
-@findex @code{ASINH} intrinsic
+@cindex @code{ASINH} intrinsic
 @cindex hyperbolic arcsine
 @cindex hyperbolic sine (inverse)
 
@@ -1133,7 +1166,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ASINH(X)}
+@code{RESULT = ASINH(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1160,7 +1193,7 @@ Inverse function: @ref{SINH}
 
 @node ASSOCIATED
 @section @code{ASSOCIATED} --- Status of a pointer or pointer/target pair 
-@findex @code{ASSOCIATED} intrinsic
+@cindex @code{ASSOCIATED} intrinsic
 @cindex pointer status
 
 @table @asis
@@ -1175,8 +1208,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{L = ASSOCIATED(PTR)} 
-@code{L = ASSOCIATED(PTR [, TGT])}
+@code{RESULT = ASSOCIATED(PTR [, TGT])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1236,8 +1268,8 @@ end program test_associated
 
 @node ATAN
 @section @code{ATAN} --- Arctangent function 
-@findex @code{ATAN} intrinsic
-@findex @code{DATAN} intrinsic
+@cindex @code{ATAN} intrinsic
+@cindex @code{DATAN} intrinsic
 @cindex trigonometric functions (inverse)
 
 @table @asis
@@ -1251,7 +1283,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ATAN(X)}
+@code{RESULT = ATAN(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1285,8 +1317,8 @@ Inverse function: @ref{TAN}
 
 @node ATAN2
 @section @code{ATAN2} --- Arctangent function 
-@findex @code{ATAN2} intrinsic
-@findex @code{DATAN2} intrinsic
+@cindex @code{ATAN2} intrinsic
+@cindex @code{DATAN2} intrinsic
 @cindex trigonometric functions (inverse)
 
 @table @asis
@@ -1300,7 +1332,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ATAN2(Y,X)}
+@code{RESULT = ATAN2(Y,X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1337,7 +1369,7 @@ end program test_atan2
 
 @node ATANH
 @section @code{ATANH} --- Hyperbolic arctangent function
-@findex @code{ASINH} intrinsic
+@cindex @code{ASINH} intrinsic
 @cindex hyperbolic arctangent
 @cindex hyperbolic tangent (inverse)
 
@@ -1352,11 +1384,12 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ATANH(X)}
+@code{RESULT = ATANH(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be @code{REAL(*)} with a magnitude that is less than or equal to one.
+@item @var{X} @tab The type shall be @code{REAL(*)} with a magnitude
+that is less than or equal to one.
 @end multitable
 
 @item @emph{Return value}:
@@ -1380,8 +1413,8 @@ Inverse function: @ref{TANH}
 
 @node BESJ0
 @section @code{BESJ0} --- Bessel function of the first kind of order 0
-@findex @code{BESJ0} intrinsic
-@findex @code{DBESJ0} intrinsic
+@cindex @code{BESJ0} intrinsic
+@cindex @code{DBESJ0} intrinsic
 @cindex Bessel
 
 @table @asis
@@ -1396,7 +1429,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = BESJ0(X)}
+@code{RESULT = BESJ0(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1426,8 +1459,8 @@ end program test_besj0
 
 @node BESJ1
 @section @code{BESJ1} --- Bessel function of the first kind of order 1
-@findex @code{BESJ1} intrinsic
-@findex @code{DBESJ1} intrinsic
+@cindex @code{BESJ1} intrinsic
+@cindex @code{DBESJ1} intrinsic
 @cindex Bessel
 
 @table @asis
@@ -1442,7 +1475,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = BESJ1(X)}
+@code{RESULT = BESJ1(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1472,8 +1505,8 @@ end program test_besj1
 
 @node BESJN
 @section @code{BESJN} --- Bessel function of the first kind
-@findex @code{BESJN} intrinsic
-@findex @code{DBESJN} intrinsic
+@cindex @code{BESJN} intrinsic
+@cindex @code{DBESJN} intrinsic
 @cindex Bessel
 
 @table @asis
@@ -1488,7 +1521,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = BESJN(N, X)}
+@code{RESULT = BESJN(N, X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1519,8 +1552,8 @@ end program test_besjn
 
 @node BESY0
 @section @code{BESY0} --- Bessel function of the second kind of order 0
-@findex @code{BESY0} intrinsic
-@findex @code{DBESY0} intrinsic
+@cindex @code{BESY0} intrinsic
+@cindex @code{DBESY0} intrinsic
 @cindex Bessel
 
 @table @asis
@@ -1535,7 +1568,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = BESY0(X)}
+@code{RESULT = BESY0(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1564,8 +1597,8 @@ end program test_besy0
 
 @node BESY1
 @section @code{BESY1} --- Bessel function of the second kind of order 1
-@findex @code{BESY1} intrinsic
-@findex @code{DBESY1} intrinsic
+@cindex @code{BESY1} intrinsic
+@cindex @code{DBESY1} intrinsic
 @cindex Bessel
 
 @table @asis
@@ -1580,7 +1613,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = BESY1(X)}
+@code{RESULT = BESY1(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1609,8 +1642,8 @@ end program test_besy1
 
 @node BESYN
 @section @code{BESYN} --- Bessel function of the second kind
-@findex @code{BESYN} intrinsic
-@findex @code{DBESYN} intrinsic
+@cindex @code{BESYN} intrinsic
+@cindex @code{DBESYN} intrinsic
 @cindex Bessel
 
 @table @asis
@@ -1625,7 +1658,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = BESYN(N, X)}
+@code{RESULT = BESYN(N, X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1656,8 +1689,9 @@ end program test_besyn
 
 @node BIT_SIZE
 @section @code{BIT_SIZE} --- Bit size inquiry function
-@findex @code{BIT_SIZE} intrinsic
-@cindex bit_size
+@cindex @code{BIT_SIZE} intrinsic
+@cindex bit size of a variable
+@cindex size of a variable, in bits
 
 @table @asis
 @item @emph{Description}:
@@ -1671,7 +1705,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = BIT_SIZE(I)}
+@code{RESULT = BIT_SIZE(I)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1696,7 +1730,7 @@ end program test_bit_size
 
 @node BTEST
 @section @code{BTEST} --- Bit test function
-@findex @code{BTEST} intrinsic
+@cindex @code{BTEST} intrinsic
 @cindex bit operations
 
 @table @asis
@@ -1711,7 +1745,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = BTEST(I,POS)}
+@code{RESULT = BTEST(I, POS)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1740,8 +1774,8 @@ end program test_btest
 
 @node CEILING
 @section @code{CEILING} --- Integer ceiling function
-@findex @code{CEILING} intrinsic
-@cindex CEILING
+@cindex @code{CEILING} intrinsic
+@cindex ceiling
 
 @table @asis
 @item @emph{Description}:
@@ -1754,12 +1788,14 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = CEILING(X[,KIND])}
+@code{RESULT = 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}:
@@ -1784,12 +1820,12 @@ end program test_ceiling
 
 @node CHAR
 @section @code{CHAR} --- Character conversion function
-@findex @code{CHAR} intrinsic
+@cindex @code{CHAR} intrinsic
 @cindex conversion function (character)
 
 @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
@@ -1798,12 +1834,14 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{C = CHAR(I[,KIND])}
+@code{RESULT = 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}:
@@ -1820,15 +1858,15 @@ end program test_char
 @end smallexample
 
 @item @emph{See also}:
-@ref{ACHAR}, @ref{ICHAR}, @ref{IACHAR}
+@ref{ACHAR}, @ref{IACHAR}, @ref{ICHAR}
 
 @end table
 
 
 @node CHDIR
 @section @code{CHDIR} --- Change working directory
-@findex @code{CHDIR} intrinsic
-@cindex file system functions
+@cindex @code{CHDIR} intrinsic
+@cindex file system operations
 
 @table @asis
 @item @emph{Description}:
@@ -1841,11 +1879,12 @@ GNU extension
 Non-elemental subroutine
 
 @item @emph{Syntax}:
-@code{CALL chdir(PATH[,STATUS])}
+@code{CALL CHDIR(PATH [, STATUS])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
-@item @var{PATH}   @tab The type shall be @code{CHARACTER(*)} and shall specify a valid path within the file system.
+@item @var{PATH}   @tab The type shall be @code{CHARACTER(*)} and shall
+                        specify a valid path within the file system.
 @item @var{STATUS} @tab (Optional) status flag. Returns 0 on success, 
                         a system specific and non-zero error code otherwise.
 @end multitable
@@ -1870,24 +1909,67 @@ END PROGRAM
 
 @node CHMOD
 @section @code{CHMOD} --- Change access permissions of files
-@findex @code{CHMOD} 
-@cindex file system functions
-
-Not yet implemented in GNU Fortran.
+@cindex @code{CHMOD} intrinsic
+@cindex file system operations
 
 @table @asis
 @item @emph{Description}:
+@code{CHMOD} changes the permissions of a file. This function invokes
+@code{/bin/chmod} and might therefore not work on all platforms.
+
+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{Class}:
-Subroutine
+Subroutine, non-elemental function
 
 @item @emph{Syntax}:
+@multitable @columnfractions .80
+@item @code{CALL CHMOD(NAME, MODE[, STATUS])}
+@item @code{STATUS = CHMOD(NAME, MODE)}
+@end multitable
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{NAME} @tab Scalar @code{CHARACTER} with the file name.
+Trailing blanks are ignored unless the character @code{achar(0)} is
+present, then all characters up to and excluding @code{achar(0)} are
+used as the file name.
+
+@item @var{MODE} @tab Scalar @code{CHARACTER} giving the file permission.
+@var{MODE} uses the same syntax as the @var{MODE} argument of
+@code{/bin/chmod}.
+
+@item @var{STATUS} @tab (optional) scalar @code{INTEGER}, which is
+@code{0} on success and non-zero otherwise.
+@end multitable
+
 @item @emph{Return value}:
+In either syntax, @var{STATUS} is set to @code{0} on success and non-zero
+otherwise.
+
 @item @emph{Example}:
+@code{CHMOD} as subroutine
+@smallexample
+program chmod_test
+  implicit none
+  integer :: status
+  call chmod('test.dat','u+x',status)
+  print *, 'Status: ', status
+end program chmod_test
+@end smallexample
+@code{CHMOD} as non-elemental function:
+@smallexample
+program chmod_test
+  implicit none
+  integer :: status
+  status = chmod('test.dat','u+x')
+  print *, 'Status: ', status
+end program chmod_test
+@end smallexample
 @item @emph{Specific names}:
 @item @emph{See also}:
 
@@ -1896,12 +1978,12 @@ Subroutine
 
 @node CMPLX
 @section @code{CMPLX} --- Complex conversion function
-@findex @code{CMPLX} intrinsic
-@cindex CMPLX
+@cindex @code{CMPLX} intrinsic
+@cindex complex numbers, conversion to
 
 @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.
@@ -1913,13 +1995,18 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{C = CMPLX(X[,Y[,KIND]])}
+@code{RESULT = 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{X} @tab The type may be @code{INTEGER(*)}, @code{REAL(*)},
+                   or @code{COMPLEX(*)}.
+@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}:
@@ -1941,9 +2028,8 @@ end program test_cmplx
 
 @node COMMAND_ARGUMENT_COUNT
 @section @code{COMMAND_ARGUMENT_COUNT} --- Get number of command line arguments
-@findex @code{COMMAND_ARGUMENT_COUNT} intrinsic
-@cindex command line arguments
-@cindex getopt
+@cindex @code{COMMAND_ARGUMENT_COUNT} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
@@ -1957,7 +2043,7 @@ F2003
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = COMMAND_ARGUMENT_COUNT()}
+@code{RESULT = COMMAND_ARGUMENT_COUNT()}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1982,8 +2068,8 @@ end program test_command_argument_count
 
 @node CONJG
 @section @code{CONJG} --- Complex conjugate function 
-@findex @code{CONJG} intrinsic
-@findex @code{DCONJG} intrinsic
+@cindex @code{CONJG} intrinsic
+@cindex @code{DCONJG} intrinsic
 @cindex complex conjugate
 @table @asis
 @item @emph{Description}:
@@ -2030,10 +2116,10 @@ end program test_conjg
 
 @node COS
 @section @code{COS} --- Cosine function 
-@findex @code{COS} intrinsic
-@findex @code{DCOS} intrinsic
-@findex @code{ZCOS} intrinsic
-@findex @code{CDCOS} intrinsic
+@cindex @code{COS} intrinsic
+@cindex @code{DCOS} intrinsic
+@cindex @code{ZCOS} intrinsic
+@cindex @code{CDCOS} intrinsic
 @cindex trigonometric functions
 
 @table @asis
@@ -2047,7 +2133,7 @@ F77 and later, has overloads that are GNU extensions
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = COS(X)}
+@code{RESULT = COS(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2086,8 +2172,8 @@ Inverse function: @ref{ACOS}
 
 @node COSH
 @section @code{COSH} --- Hyperbolic cosine function 
-@findex @code{COSH} intrinsic
-@findex @code{DCOSH} intrinsic
+@cindex @code{COSH} intrinsic
+@cindex @code{DCOSH} intrinsic
 @cindex hyperbolic cosine
 
 @table @asis
@@ -2135,12 +2221,12 @@ Inverse function: @ref{ACOSH}
 
 @node COUNT
 @section @code{COUNT} --- Count function
-@findex @code{COUNT} intrinsic
+@cindex @code{COUNT} intrinsic
 @cindex count
 
 @table @asis
 @item @emph{Description}:
-@code{COUNT(MASK[,DIM])} counts the number of @code{.TRUE.} elements of
+@code{COUNT(MASK [, DIM])} counts the number of @code{.TRUE.} elements of
 @var{MASK} along the dimension of @var{DIM}.  If @var{DIM} is omitted it is
 taken to be @code{1}.  @var{DIM} is a scaler of type @code{INTEGER} in the
 range of @math{1 /leq DIM /leq n)} where @math{n} is the rank of @var{MASK}.
@@ -2152,7 +2238,7 @@ F95 and later
 transformational function
 
 @item @emph{Syntax}:
-@code{I = COUNT(MASK[,DIM])}
+@code{RESULT = COUNT(MASK [, DIM])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2194,8 +2280,9 @@ end program test_count
 
 @node CPU_TIME
 @section @code{CPU_TIME} --- CPU elapsed time in seconds
-@findex @code{CPU_TIME} intrinsic
-@cindex CPU_TIME
+@cindex @code{CPU_TIME} intrinsic
+@cindex time, elapsed
+@cindex elapsed time
 
 @table @asis
 @item @emph{Description}:
@@ -2209,7 +2296,7 @@ F95 and later
 Subroutine
 
 @item @emph{Syntax}:
-@code{CPU_TIME(X)}
+@code{CALL CPU_TIME(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2235,12 +2322,12 @@ end program test_cpu_time
 
 @node CSHIFT
 @section @code{CSHIFT} --- Circular shift function
-@findex @code{CSHIFT} intrinsic
-@cindex bit manipulation
+@cindex @code{CSHIFT} intrinsic
+@cindex bit operations
 
 @table @asis
 @item @emph{Description}:
-@code{CSHIFT(ARRAY, SHIFT[,DIM])} performs a circular shift on elements of
+@code{CSHIFT(ARRAY, SHIFT [, DIM])} performs a circular shift on elements of
 @var{ARRAY} along the dimension of @var{DIM}.  If @var{DIM} is omitted it is
 taken to be @code{1}.  @var{DIM} is a scaler of type @code{INTEGER} in the
 range of @math{1 /leq DIM /leq n)} where @math{n} is the rank of @var{ARRAY}.
@@ -2256,7 +2343,7 @@ F95 and later
 transformational function
 
 @item @emph{Syntax}:
-@code{A = CSHIFT(A, SHIFT[,DIM])}
+@code{RESULT = CSHIFT(A, SHIFT [, DIM])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2288,8 +2375,8 @@ end program test_cshift
 
 @node CTIME
 @section @code{CTIME} --- Convert a time into a string
-@findex @code{CTIME} intrinsic
-@cindex ctime subroutine 
+@cindex @code{CTIME} intrinsic
+@cindex time, conversion function
 
 @table @asis
 @item @emph{Description}:
@@ -2337,12 +2424,21 @@ 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
-@findex @code{DATE_AND_TIME} intrinsic
-@cindex DATE_AND_TIME
+@cindex @code{DATE_AND_TIME} intrinsic
+@cindex date, current
+@cindex current date
+@cindex time, current
+@cindex current time
 
 @table @asis
 @item @emph{Description}:
@@ -2408,7 +2504,7 @@ end program test_time_and_date
 
 @node DBLE
 @section @code{DBLE} --- Double conversion function 
-@findex @code{DBLE} intrinsic
+@cindex @code{DBLE} intrinsic
 @cindex double conversion
 
 @table @asis
@@ -2422,11 +2518,12 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = DBLE(X)}
+@code{RESULT = DBLE(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be @code{INTEGER(*)}, @code{REAL(*)}, or @code{COMPLEX(*)}.
+@item @var{X} @tab The type shall be @code{INTEGER(*)}, @code{REAL(*)},
+                   or @code{COMPLEX(*)}.
 @end multitable
 
 @item @emph{Return value}:
@@ -2450,8 +2547,8 @@ end program test_dble
 
 @node DCMPLX
 @section @code{DCMPLX} --- Double complex conversion function
-@findex @code{DCMPLX} intrinsic
-@cindex DCMPLX
+@cindex @code{DCMPLX} intrinsic
+@cindex complex numbers, conversion to
 
 @table @asis
 @item @emph{Description}:
@@ -2467,13 +2564,14 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{C = DCMPLX(X)}
-@code{C = DCMPLX(X,Y)}
+@code{RESULT = DCMPLX(X [, Y])}
 
 @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 if @var{X} is not @code{COMPLEX(*)}. May be @code{INTEGER(*)} or @code{REAL(*)}. 
+@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
+                   @code{INTEGER(*)} or @code{REAL(*)}. 
 @end multitable
 
 @item @emph{Return value}:
@@ -2498,7 +2596,7 @@ end program test_dcmplx
 
 @node DFLOAT
 @section @code{DFLOAT} --- Double conversion function 
-@findex @code{DFLOAT} intrinsic
+@cindex @code{DFLOAT} intrinsic
 @cindex double float conversion
 
 @table @asis
@@ -2512,7 +2610,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = DFLOAT(X)}
+@code{RESULT = DFLOAT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2538,7 +2636,7 @@ end program test_dfloat
 
 @node DIGITS
 @section @code{DIGITS} --- Significant digits function
-@findex @code{DIGITS} intrinsic
+@cindex @code{DIGITS} intrinsic
 @cindex digits, significant
 
 @table @asis
@@ -2554,7 +2652,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{C = DIGITS(X)}
+@code{RESULT = DIGITS(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2581,9 +2679,9 @@ end program test_digits
 
 @node DIM
 @section @code{DIM} --- Dim function
-@findex @code{DIM} intrinsic
-@findex @code{IDIM} intrinsic
-@findex @code{DDIM} intrinsic
+@cindex @code{DIM} intrinsic
+@cindex @code{IDIM} intrinsic
+@cindex @code{DDIM} intrinsic
 @cindex dim
 
 @table @asis
@@ -2598,7 +2696,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = DIM(X,Y)}
+@code{RESULT = DIM(X, Y)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2633,8 +2731,8 @@ end program test_dim
 
 @node DOT_PRODUCT
 @section @code{DOT_PRODUCT} --- Dot product function
-@findex @code{DOT_PRODUCT} intrinsic
-@cindex Dot product
+@cindex @code{DOT_PRODUCT} intrinsic
+@cindex dot product
 
 @table @asis
 @item @emph{Description}:
@@ -2652,7 +2750,7 @@ F95 and later
 transformational function
 
 @item @emph{Syntax}:
-@code{S = DOT_PRODUCT(X,Y)}
+@code{RESULT = DOT_PRODUCT(X, Y)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2684,8 +2782,8 @@ end program test_dot_prod
 
 @node DPROD
 @section @code{DPROD} --- Double product function
-@findex @code{DPROD} intrinsic
-@cindex Double product
+@cindex @code{DPROD} intrinsic
+@cindex double-precision product
 
 @table @asis
 @item @emph{Description}:
@@ -2698,7 +2796,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{D = DPROD(X,Y)}
+@code{RESULT = DPROD(X, Y)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2726,8 +2824,8 @@ end program test_dprod
 
 @node DREAL
 @section @code{DREAL} --- Double real part function
-@findex @code{DREAL} intrinsic
-@cindex Double real part
+@cindex @code{DREAL} intrinsic
+@cindex double-precision real part
 
 @table @asis
 @item @emph{Description}:
@@ -2740,7 +2838,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{D = DREAL(Z)}
+@code{RESULT = DREAL(Z)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2767,8 +2865,9 @@ end program test_dreal
 
 @node DTIME
 @section @code{DTIME} --- Execution time subroutine (or function)
-@findex @code{DTIME} intrinsic
-@cindex dtime subroutine 
+@cindex @code{DTIME} intrinsic
+@cindex time, elapsed
+@cindex elapsed time
 
 @table @asis
 @item @emph{Description}:
@@ -2844,8 +2943,8 @@ end program test_dtime
 
 @node EOSHIFT
 @section @code{EOSHIFT} --- End-off shift function
-@findex @code{EOSHIFT} intrinsic
-@cindex bit manipulation
+@cindex @code{EOSHIFT} intrinsic
+@cindex bit operations
 
 @table @asis
 @item @emph{Description}:
@@ -2875,7 +2974,7 @@ F95 and later
 transformational function
 
 @item @emph{Syntax}:
-@code{A = EOSHIFT(A, SHIFT[,BOUNDARY, DIM])}
+@code{RESULT = EOSHIFT(A, SHIFT [, BOUNDARY, DIM])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2909,7 +3008,7 @@ end program test_eoshift
 
 @node EPSILON
 @section @code{EPSILON} --- Epsilon function
-@findex @code{EPSILON} intrinsic
+@cindex @code{EPSILON} intrinsic
 @cindex epsilon, significant
 
 @table @asis
@@ -2923,7 +3022,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{C = EPSILON(X)}
+@code{RESULT = EPSILON(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2948,7 +3047,7 @@ end program test_epsilon
 
 @node ERF
 @section @code{ERF} --- Error function 
-@findex @code{ERF} intrinsic
+@cindex @code{ERF} intrinsic
 @cindex error function
 
 @table @asis
@@ -2962,7 +3061,7 @@ GNU Extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ERF(X)}
+@code{RESULT = ERF(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2992,7 +3091,7 @@ end program test_erf
 
 @node ERFC
 @section @code{ERFC} --- Error function 
-@findex @code{ERFC} intrinsic
+@cindex @code{ERFC} intrinsic
 @cindex error function
 
 @table @asis
@@ -3006,7 +3105,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ERFC(X)}
+@code{RESULT = ERFC(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3036,8 +3135,8 @@ end program test_erfc
 
 @node ETIME
 @section @code{ETIME} --- Execution time subroutine (or function)
-@findex @code{ETIME} intrinsic
-@cindex time functions
+@cindex @code{ETIME} intrinsic
+@cindex time, elapsed
 
 @table @asis
 @item @emph{Description}:
@@ -3113,8 +3212,8 @@ end program test_etime
 
 @node EXIT
 @section @code{EXIT} --- Exit the program with status. 
-@findex @code{EXIT}
-@cindex exit
+@cindex @code{EXIT} intrinsic
+@cindex exit program
 
 @table @asis
 @item @emph{Description}:
@@ -3156,10 +3255,10 @@ end program test_exit
 
 @node EXP
 @section @code{EXP} --- Exponential function 
-@findex @code{EXP} intrinsic
-@findex @code{DEXP} intrinsic
-@findex @code{ZEXP} intrinsic
-@findex @code{CDEXP} intrinsic
+@cindex @code{EXP} intrinsic
+@cindex @code{DEXP} intrinsic
+@cindex @code{ZEXP} intrinsic
+@cindex @code{CDEXP} intrinsic
 @cindex exponential
 
 @table @asis
@@ -3173,7 +3272,7 @@ F77 and later, has overloads that are GNU extensions
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = EXP(X)}
+@code{RESULT = EXP(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3206,8 +3305,8 @@ end program test_exp
 
 @node EXPONENT
 @section @code{EXPONENT} --- Exponent function 
-@findex @code{EXPONENT} intrinsic
-@cindex exponent function
+@cindex @code{EXPONENT} intrinsic
+@cindex exponent part of a real number
 
 @table @asis
 @item @emph{Description}:
@@ -3221,7 +3320,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = EXPONENT(X)}
+@code{RESULT = EXPONENT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3246,14 +3345,17 @@ end program test_exponent
 
 @node FDATE
 @section @code{FDATE} --- Get the current time as a string
-@findex @code{FDATE} intrinsic
-@cindex fdate subroutine 
+@cindex @code{FDATE} intrinsic
+@cindex time, current
+@cindex current time
+@cindex date, current
+@cindex current date
 
 @table @asis
 @item @emph{Description}:
 @code{FDATE(DATE)} returns the current date (using the same format as
 @code{CTIME}) in @var{DATE}. It is equivalent to @code{CALL CTIME(DATE,
-TIME8())}.
+TIME())}.
 
 If @code{FDATE} is invoked as a function, it can not be invoked as a
 subroutine, and vice versa.
@@ -3278,7 +3380,7 @@ Subroutine
 @end multitable
 
 @item @emph{Return value}:
-The current date and time as a string.
+The current date as a string.
 
 @item @emph{Example}:
 @smallexample
@@ -3299,7 +3401,7 @@ end program test_fdate
 @node FLOAT
 
 @section @code{FLOAT} --- Convert integer to default real
-@findex @code{FLOAT} intrinsic
+@cindex @code{FLOAT} intrinsic
 @cindex conversion function (float)
 
 @table @asis
@@ -3313,7 +3415,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = FLOAT(I)}
+@code{RESULT = FLOAT(I)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3321,7 +3423,7 @@ Elemental function
 @end multitable
 
 @item @emph{Return value}:
-The return value is of type default @code{REAL}
+The return value is of type default @code{REAL}.
 
 @item @emph{Example}:
 @smallexample
@@ -3339,7 +3441,7 @@ end program test_float
 
 @node FGET
 @section @code{FGET} --- Read a single character in stream mode from stdin 
-@findex @code{FGET} intrinsic
+@cindex @code{FGET} intrinsic
 @cindex file operations
 @cindex stream operations
 
@@ -3361,13 +3463,14 @@ GNU extension
 Non-elemental subroutine
 
 @item @emph{Syntax}:
-@code{CALL fget(C[,STATUS])}
+@code{CALL FGET(C [, STATUS])}
 
 @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}:
@@ -3394,7 +3497,7 @@ END PROGRAM
 
 @node FGETC
 @section @code{FGETC} --- Read a single character in stream mode
-@findex @code{FGETC} intrinsic
+@cindex @code{FGETC} intrinsic
 @cindex file operations
 @cindex stream operations
 
@@ -3416,7 +3519,7 @@ GNU extension
 Non-elemental subroutine
 
 @item @emph{Syntax}:
-@code{CALL fgetc(UNIT,C[,STATUS])}
+@code{CALL FGETC(UNIT, C [, STATUS])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3450,7 +3553,7 @@ END PROGRAM
 
 @node FLOOR
 @section @code{FLOOR} --- Integer floor function
-@findex @code{FLOOR} intrinsic
+@cindex @code{FLOOR} intrinsic
 @cindex floor
 
 @table @asis
@@ -3464,12 +3567,14 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = FLOOR(X[,KIND])}
+@code{RESULT = 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}:
@@ -3494,8 +3599,8 @@ end program test_floor
 
 @node FLUSH
 @section @code{FLUSH} --- Flush I/O unit(s)
-@findex @code{FLUSH}
-@cindex flush
+@cindex @code{FLUSH} intrinsic
+@cindex flush output files
 
 @table @asis
 @item @emph{Description}:
@@ -3526,7 +3631,7 @@ statement that should be preferred over the @code{FLUSH} intrinsic.
 
 @node FNUM
 @section @code{FNUM} --- File number function
-@findex @code{FNUM} intrinsic
+@cindex @code{FNUM} intrinsic
 @cindex fnum
 
 @table @asis
@@ -3541,7 +3646,7 @@ GNU extension
 non-elemental function
 
 @item @emph{Syntax}:
-@code{I = FNUM(UNIT)}
+@code{RESULT = FNUM(UNIT)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3567,7 +3672,7 @@ end program test_fnum
 
 @node FPUT
 @section @code{FPUT} --- Write a single character in stream mode to stdout 
-@findex @code{FPUT} intrinsic
+@cindex @code{FPUT} intrinsic
 @cindex file operations
 @cindex stream operations
 
@@ -3589,7 +3694,7 @@ GNU extension
 Non-elemental subroutine
 
 @item @emph{Syntax}:
-@code{CALL fput(C[,STATUS])}
+@code{CALL FPUT(C [, STATUS])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3617,7 +3722,7 @@ END PROGRAM
 
 @node FPUTC
 @section @code{FPUTC} --- Write a single character in stream mode
-@findex @code{FPUTC} intrinsic
+@cindex @code{FPUTC} intrinsic
 @cindex file operations
 @cindex stream operations
 
@@ -3639,7 +3744,7 @@ GNU extension
 Non-elemental subroutine
 
 @item @emph{Syntax}:
-@code{CALL fputc(UNIT,C[,STATUS])}
+@code{CALL FPUTC(UNIT, C [, STATUS])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3671,7 +3776,7 @@ END PROGRAM
 
 @node FRACTION
 @section @code{FRACTION} --- Fractional part of the model representation
-@findex @code{FRACTION} intrinsic
+@cindex @code{FRACTION} intrinsic
 @cindex fractional part
 
 @table @asis
@@ -3713,8 +3818,8 @@ end program test_fraction
 
 @node FREE
 @section @code{FREE} --- Frees memory
-@findex @code{FREE} intrinsic
-@cindex FREE
+@cindex @code{FREE} intrinsic
+@cindex Cray pointers
 
 @table @asis
 @item @emph{Description}:
@@ -3754,7 +3859,7 @@ See @code{MALLOC} for an example.
 
 @node FSTAT
 @section @code{FSTAT} --- Get file status
-@findex @code{FSTAT} intrinsic
+@cindex @code{FSTAT} intrinsic
 @cindex file system operations 
 
 @table @asis
@@ -3771,7 +3876,7 @@ GNU extension
 Non-elemental subroutine
 
 @item @emph{Syntax}:
-@code{CALL fstat(UNIT,BUFF[,STATUS])}
+@code{CALL FSTAT(UNIT, BUFF [, STATUS])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3792,8 +3897,8 @@ To stat a link: @ref{LSTAT}, to stat a file: @ref{STAT}
 
 @node FSEEK
 @section @code{FSEEK} --- Low level file positioning subroutine
-@findex @code{FSEEK} 
-@cindex file system functions
+@cindex @code{FSEEK} intrinsic
+@cindex file system operations
 
 Not yet implemented in GNU Fortran.
 
@@ -3820,21 +3925,46 @@ Subroutine
 
 @node FTELL
 @section @code{FTELL} --- Current stream position
-@findex @code{FTELL} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{FTELL} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Retrieves the current position within an open file.
+
+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{Class}:
+Subroutine, function
+
 @item @emph{Syntax}:
+@multitable @columnfractions .80
+@item @code{CALL FTELL(UNIT, OFFSET)}
+@item @code{OFFSET = FTELL(UNIT)}
+@end multitable
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{OFFSET}  @tab Shall of type @code{INTEGER}.
+@item @var{UNIT}    @tab Shall of type @code{INTEGER}.
+@end multitable
+
 @item @emph{Return value}:
+In either syntax, @var{OFFSET} is set to the current offset of unit
+number @var{UNIT}, or to @math{-1} if the unit is not currently open.
+
 @item @emph{Example}:
+@smallexample
+PROGRAM test_ftell
+  INTEGER :: i
+  OPEN(10, FILE="temp.dat")
+  CALL ftell(10,i)
+  WRITE(*,*) i
+END PROGRAM
+@end smallexample
 
 @item @emph{See also}:
 @ref{FSEEK}
@@ -3844,9 +3974,8 @@ GNU extension
 
 @node GETARG
 @section @code{GETARG} --- Get command line arguments
-@findex @code{GETARG} intrinsic
-@cindex command line arguments
-@cindex getopt
+@cindex @code{GETARG} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
@@ -3865,7 +3994,7 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
-@code{CALL GETARG(N,ARG)}
+@code{CALL GETARG(N, ARG)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3895,18 +4024,18 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-GNU Fortran 77 compability function: @ref{IARGC}
+GNU Fortran 77 compatibility function: @ref{IARGC}
 
-F2003 functions and subroutines: @ref{GET_COMMAND}, @ref{GET_COMMAND_ARGUMENT}, @ref{COMMAND_ARGUMENT_COUNT}
+F2003 functions and subroutines: @ref{GET_COMMAND}, @ref{GET_COMMAND_ARGUMENT},
+@ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
 
 
 @node GET_COMMAND
 @section @code{GET_COMMAND} --- Get the entire command line
-@findex @code{GET_COMMAND} intrinsic
-@cindex command line arguments
-@cindex getopt
+@cindex @code{GET_COMMAND} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
@@ -3947,9 +4076,8 @@ END PROGRAM
 
 @node GET_COMMAND_ARGUMENT
 @section @code{GET_COMMAND_ARGUMENT} --- Get command line arguments
-@findex @code{GET_COMMAND_ARGUMENT} intrinsic
-@cindex command line arguments
-@cindex getopt
+@cindex @code{GET_COMMAND_ARGUMENT} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
@@ -3963,7 +4091,7 @@ F2003
 Subroutine
 
 @item @emph{Syntax}:
-@code{CALL GET_COMMAND_ARGUMENT(N,ARG)}
+@code{CALL GET_COMMAND_ARGUMENT(N, ARG)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4004,8 +4132,8 @@ END PROGRAM
 
 @node GETCWD
 @section @code{GETCWD} --- Get current working directory
-@findex @code{GETCWD} intrinsic
-@cindex file system functions
+@cindex @code{GETCWD} intrinsic
+@cindex file system operations
 
 @table @asis
 @item @emph{Description}:
@@ -4018,7 +4146,7 @@ GNU extension
 Non-elemental subroutine.
 
 @item @emph{Syntax}:
-@code{CALL getcwd(CWD[,STATUS])}
+@code{CALL GETCWD(CWD [, STATUS])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4044,7 +4172,7 @@ END PROGRAM
 
 @node GETENV
 @section @code{GETENV} --- Get an environmental variable
-@findex @code{GETENV} intrinsic
+@cindex @code{GETENV} intrinsic
 @cindex environment variable
 
 @table @asis
@@ -4063,7 +4191,7 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
-@code{CALL GETENV(ENVVAR,VALUE)}
+@code{CALL GETENV(ENVVAR, VALUE)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4093,7 +4221,7 @@ END PROGRAM
 
 @node GET_ENVIRONMENT_VARIABLE
 @section @code{GET_ENVIRONMENT_VARIABLE} --- Get an environmental variable
-@findex @code{GET_ENVIRONMENT_VARIABLE} intrinsic
+@cindex @code{GET_ENVIRONMENT_VARIABLE} intrinsic
 @cindex environment variable
 
 @table @asis
@@ -4107,7 +4235,7 @@ F2003
 Subroutine
 
 @item @emph{Syntax}:
-@code{CALL GET_ENVIRONMENT_VARIABLE(ENVVAR,VALUE)}
+@code{CALL GET_ENVIRONMENT_VARIABLE(ENVVAR, VALUE)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4134,8 +4262,8 @@ END PROGRAM
 
 @node GETGID
 @section @code{GETGID} --- Group ID function
-@findex @code{GETGID} intrinsic
-@cindex GETGID
+@cindex @code{GETGID} intrinsic
+@cindex file system operations
 
 @table @asis
 @item @emph{Description}:
@@ -4148,7 +4276,7 @@ GNU extension
 function
 
 @item @emph{Syntax}:
-@code{I = GETGID()}
+@code{RESULT = GETGID()}
 
 @item @emph{Return value}:
 The return value of @code{GETGID} is an @code{INTEGER} of the default
@@ -4159,20 +4287,19 @@ kind.
 See @code{GETPID} for an example.
 
 @item @emph{See also}:
-@ref{GETPID}
+@ref{GETPID}, @ref{GETUID}
 @end table
 
 
 
 @node GETLOG
 @section @code{GETLOG} --- Get login name
-@findex @code{GETLOG} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{GETLOG} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Gets the username under which the program is running.
+
 @item @emph{Standard}:
 GNU extension
 
@@ -4180,20 +4307,37 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
+@code{CALL GETLOG(LOGIN)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{LOGIN} @tab Shall be of type @code{CHARACTER(*)}.
+@end multitable
+
 @item @emph{Return value}:
+Stores the current user name in @var{LOGIN}.  (On systems where 
+the @code{getlogin(3)} function is not implemented, this will
+return a blank string.)
+
 @item @emph{Example}:
-@item @emph{Specific names}:
+@smallexample
+PROGRAM TEST_GETLOG
+  CHARACTER(32) :: login
+  CALL GETLOG(login)
+  WRITE(*,*) login
+END PROGRAM
+@end smallexample
+
 @item @emph{See also}:
+@ref{GETUID}
 @end table
 
 
 
-
 @node GETPID
 @section @code{GETPID} --- Process ID function
-@findex @code{GETPID} intrinsic
-@cindex GETPID
+@cindex @code{GETPID} intrinsic
+@cindex process ID, current
 
 @table @asis
 @item @emph{Description}:
@@ -4206,7 +4350,7 @@ GNU extension
 function
 
 @item @emph{Syntax}:
-@code{I = GETPID()}
+@code{RESULT = GETPID()}
 
 @item @emph{Return value}:
 The return value of @code{GETPID} is an @code{INTEGER} of the default
@@ -4222,14 +4366,16 @@ program info
 end program info
 @end smallexample
 
+@item @emph{See also}:
+@ref{GETGID}, @ref{GETUID}
 @end table
 
 
 
 @node GETUID
 @section @code{GETUID} --- User ID function
-@findex @code{GETUID} intrinsic
-@cindex GETUID
+@cindex @code{GETUID} intrinsic
+@cindex user ID, current
 
 @table @asis
 @item @emph{Description}:
@@ -4242,7 +4388,7 @@ GNU extension
 function
 
 @item @emph{Syntax}:
-@code{GETUID()}
+@code{RESULT = GETUID()}
 
 @item @emph{Return value}:
 The return value of @code{GETUID} is an @code{INTEGER} of the default
@@ -4253,20 +4399,22 @@ kind.
 See @code{GETPID} for an example.
 
 @item @emph{See also}:
-@ref{GETPID}
+@ref{GETPID}, @ref{GETLOG}
 @end table
 
 
 
 @node GMTIME
 @section @code{GMTIME} --- Convert time to GMT info
-@findex @code{GMTIME} 
-@cindex time function
-
-Not yet implemented in GNU Fortran.
+@cindex @code{GMTIME} intrinsic
+@cindex time, conversion function
 
 @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
@@ -4275,11 +4423,36 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
+@code{CALL GMTIME(STIME, TARRAY)}
+
 @item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+@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}:
+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
 
@@ -4287,30 +4460,46 @@ Subroutine
 
 @node HOSTNM
 @section @code{HOSTNM} --- Get system host name
-@findex @code{HOSTNM} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{HOSTNM} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Retrieves the host name of the system on which the program is running.
+
+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{Class}:
+Subroutine, function
+
 @item @emph{Syntax}:
+@multitable @columnfractions .80
+@item @code{CALL HOSTNM(NAME, STATUS)}
+@item @code{STATUS = HOSTNM(NAME)}
+@end multitable
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{NAME}    @tab Shall of type @code{CHARACTER(*)}.
+@item @var{STATUS}  @tab (Optional) status flag of type @code{INTEGER}.
+                         Returns 0 on success, or a system specific error
+                         code otherwise.
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
-@item @emph{See also}:
+In either syntax, @var{NAME} is set to the current hostname if it can
+be obtained, or to a blank string otherwise.
+
 @end table
 
 
 
 @node HUGE
 @section @code{HUGE} --- Largest number of a kind
-@findex @code{HUGE} intrinsic
+@cindex @code{HUGE} intrinsic
 @cindex huge
 
 @table @asis
@@ -4325,7 +4514,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = HUGE(X)}
+@code{RESULT = HUGE(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4348,7 +4537,7 @@ end program test_huge_tiny
 
 @node IACHAR
 @section @code{IACHAR} --- Code in @acronym{ASCII} collating sequence 
-@findex @code{IACHAR} intrinsic
+@cindex @code{IACHAR} intrinsic
 @cindex @acronym{ASCII} collating sequence
 @cindex conversion function (character)
 
@@ -4364,7 +4553,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = IACHAR(C)}
+@code{RESULT = IACHAR(C)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4384,14 +4573,14 @@ end program test_iachar
 @end smallexample
 
 @item @emph{See also}:
-@ref{CHAR},@ref{ICHAR}
+@ref{ACHAR}, @ref{CHAR}, @ref{ICHAR}
 
 @end table
 
 
 @node IAND
 @section @code{IAND} --- Bitwise logical and
-@findex @code{IAND} intrinsic
+@cindex @code{IAND} intrinsic
 @cindex bit operations
 
 @table @asis
@@ -4405,16 +4594,20 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{RESULT = IAND(X, Y)}
+@code{RESULT = IAND(I, J)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
-@item @var{X} @tab The type shall be @code{INTEGER(*)}.
-@item @var{Y} @tab The type shall be @code{INTEGER(*)}.
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{J} @tab The type shall be @code{INTEGER(*)}, of the same
+kind as @var{I}.  (As a GNU extension, different kinds are also 
+permitted.)
 @end multitable
 
 @item @emph{Return value}:
-The return type is @code{INTEGER(*)} after cross-promotion of the arguments. 
+The return type is @code{INTEGER(*)}, of the same kind as the
+arguments.  (If the argument kinds differ, it is of the same kind as
+the larger argument.)
 
 @item @emph{Example}:
 @smallexample
@@ -4426,16 +4619,16 @@ 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
 
 
 
 @node IARGC
 @section @code{IARGC} --- Get the number of command line arguments
-@findex @code{IARGC} intrinsic
-@cindex command line arguments
-@cindex getopt
+@cindex @code{IARGC} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
@@ -4454,7 +4647,7 @@ GNU extension
 Non-elemental Function
 
 @item @emph{Syntax}:
-@code{I = IARGC()}
+@code{RESULT = IARGC()}
 
 @item @emph{Arguments}:
 None.
@@ -4466,22 +4659,24 @@ The number of command line arguments, type @code{INTEGER(4)}.
 See @ref{GETARG}
 
 @item @emph{See also}:
-GNU Fortran 77 compability subroutine: @ref{GETARG}
+GNU Fortran 77 compatibility subroutine: @ref{GETARG}
 
-F2003 functions and subroutines: @ref{GET_COMMAND}, @ref{GET_COMMAND_ARGUMENT}, @ref{COMMAND_ARGUMENT_COUNT}
+F2003 functions and subroutines: @ref{GET_COMMAND}, @ref{GET_COMMAND_ARGUMENT},
+@ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
 
 
 @node IBCLR
 @section @code{IBCLR} --- Clear bit
-@findex @code{IBCLR} intrinsic
+@cindex @code{IBCLR} intrinsic
 @cindex bit operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+@code{IBCLR} returns the value of @var{I} with the bit at position
+@var{POS} set to zero.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -4489,27 +4684,38 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = IBCLR(I, POS)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{POS} @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{IBITS}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
-@end table
+@ref{IBITS}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}, @ref{MVBITS}
 
+@end table
 
 
 
 @node IBITS
 @section @code{IBITS} --- Bit extraction
-@findex @code{IBITS} intrinsic
+@cindex @code{IBITS} intrinsic
 @cindex bit operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+@code{IBITS} extracts a field of length @var{LEN} from @var{I},
+starting from bit position @var{POS} and extending left for @var{LEN}
+bits.  The result is right-justified and the remaining bits are
+zeroed.  The value of @code{POS+LEN} must be less than or equal to the
+value @code{BIT_SIZE(I)}.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -4517,27 +4723,35 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = IBITS(I, POS, LEN)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{POS} @tab The type shall be @code{INTEGER(*)}.
+@item @var{LEN} @tab The type shall be @code{INTEGER(*)}.
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
-@item @emph{See also}:
-@ref{IBCLR}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
+The return value is of type @code{INTEGER(*)} and of the same kind as
+@var{I}.
 
+@item @emph{See also}:
+@ref{BIT_SIZE}, @ref{IBCLR}, @ref{IBSET}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
 @end table
 
 
 
-
 @node IBSET
 @section @code{IBSET} --- Set bit
-@findex @code{IBSET} intrinsic
+@cindex @code{IBSET} intrinsic
 @cindex bit operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+@code{IBSET} returns the value of @var{I} with the bit at position
+@var{POS} set to one.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -4545,13 +4759,20 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = IBSET(I, POS)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{POS} @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{IBCLR}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}
+@ref{IBCLR}, @ref{IBITS}, @ref{IAND}, @ref{IOR}, @ref{IEOR}, @ref{MVBITS}
 
 @end table
 
@@ -4559,7 +4780,7 @@ Elemental function
 
 @node ICHAR
 @section @code{ICHAR} --- Character-to-integer conversion function
-@findex @code{ICHAR} intrinsic
+@cindex @code{ICHAR} intrinsic
 @cindex conversion function (character)
 
 @table @asis
@@ -4576,7 +4797,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = ICHAR(C)}
+@code{RESULT = ICHAR(C)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4613,11 +4834,17 @@ program read_val
   print *, value
 end program read_val
 @end smallexample
+
+@item @emph{See also}:
+@ref{ACHAR}, @ref{CHAR}, @ref{IACHAR}
+
 @end table
 
+
+
 @node IDATE
 @section @code{IDATE} --- Get current local time subroutine (day/month/year) 
-@findex @code{IDATE} intrinsic
+@cindex @code{IDATE} intrinsic
 
 @table @asis
 @item @emph{Description}:
@@ -4660,13 +4887,14 @@ end program test_idate
 
 @node IEOR
 @section @code{IEOR} --- Bitwise logical exclusive or
-@findex @code{IEOR} intrinsic
+@cindex @code{IEOR} intrinsic
 @cindex bit operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+@code{IEOR} returns the bitwise boolean exclusive-OR of @var{I} and
+@var{J}.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -4674,35 +4902,51 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = IEOR(I, J)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{J} @tab The type shall be @code{INTEGER(*)}, of the same
+kind as @var{I}.  (As a GNU extension, different kinds are also 
+permitted.)
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The return type is @code{INTEGER(*)}, of the same kind as the
+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
 
 
 
-
 @node IERRNO
 @section @code{IERRNO} --- Get the last system error number
-@findex @code{IERRNO} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{IERRNO} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Returns the last system error number, as given by the C @code{errno()}
+function.
+
 @item @emph{Standard}:
 GNU extension
 
 @item @emph{Class}:
+Elemental function
+
 @item @emph{Syntax}:
+@code{RESULT = IERRNO()}
+
 @item @emph{Arguments}:
+None.
+
 @item @emph{Return value}:
-@item @emph{Example}:
+The return value is of type @code{INTEGER} and of the default integer
+kind.
 
 @item @emph{See also}:
 @ref{PERROR}
@@ -4710,16 +4954,18 @@ GNU extension
 
 
 
-
 @node INDEX
 @section @code{INDEX} --- Position of a substring within a string
-@findex @code{INDEX} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{INDEX} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Returns the position of the start of the first occurrence of string
+@var{SUBSTRING} as a substring in @var{STRING}, counting from one.  If
+@var{SUBSTRING} is not present in @var{STRING}, zero is returned.  If 
+the @var{BACK} argument is present and true, the return value is the
+start of the last occurrence rather than the first.
+
 @item @emph{Standard}:
 F77 and later
 
@@ -4727,21 +4973,32 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = INDEX(STRING, SUBSTRING [, BACK])}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STRING} @tab Shall be a scalar @code{CHARACTER(*)}, with
+@code{INTENT(IN)}
+@item @var{SUBSTRING} @tab Shall be a scalar @code{CHARACTER(*)}, with
+@code{INTENT(IN)}
+@item @var{BACK} @tab (Optional) Shall be a scalar @code{LOGICAL(*)}, with
+@code{INTENT(IN)}
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The return value is of type @code{INTEGER} and of the default integer
+kind.
+
 @item @emph{See also}:
 @end table
 
 
 
-
 @node INT
 @section @code{INT} --- Convert to integer type
-@findex @code{INT} intrinsic
-@findex @code{IFIX} intrinsic
-@findex @code{IDINT} intrinsic
+@cindex @code{INT} intrinsic
+@cindex @code{IFIX} intrinsic
+@cindex @code{IDINT} intrinsic
 @cindex conversion function (integer)
 
 @table @asis
@@ -4755,15 +5012,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{RESULT = 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}:
@@ -4774,7 +5031,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)
@@ -4803,16 +5060,16 @@ end program
 
 
 
-
 @node IOR
 @section @code{IOR} --- Bitwise logical or
-@findex @code{IOR} intrinsic
+@cindex @code{IOR} intrinsic
 @cindex bit operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+@code{IEOR} returns the bitwise boolean OR of @var{I} and
+@var{J}.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -4820,13 +5077,23 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = IEOR(I, J)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{I} @tab The type shall be @code{INTEGER(*)}.
+@item @var{J} @tab The type shall be @code{INTEGER(*)}, of the same
+kind as @var{I}.  (As a GNU extension, different kinds are also 
+permitted.)
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The return type is @code{INTEGER(*)}, of the same kind as the
+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
 
 
@@ -4834,8 +5101,8 @@ Elemental function
 
 @node IRAND
 @section @code{IRAND} --- Integer pseudo-random number
-@findex @code{IRAND} intrinsic
-@cindex random number
+@cindex @code{IRAND} intrinsic
+@cindex random numbers
 
 @table @asis
 @item @emph{Description}:
@@ -4853,7 +5120,7 @@ GNU extension
 non-elemental function
 
 @item @emph{Syntax}:
-@code{I = IRAND(FLAG)}
+@code{RESULT = IRAND(FLAG)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4880,13 +5147,19 @@ end program test_irand
 
 @node ISHFT
 @section @code{ISHFT} --- Shift bits
-@findex @code{ISHFT} intrinsic
-@cindex bit manipulation
-
-Intrinsic implemented, documentation pending.
+@cindex @code{ISHFT} intrinsic
+@cindex bit operations
 
 @table @asis
 @item @emph{Description}:
+@code{ISHFT} returns a value corresponding to @var{I} with all of the
+bits shifted @var{SHIFT} places.  A value of @var{SHIFT} greater than
+zero corresponds to a left shift, a value of zero corresponds to no
+shift, and a value less than zero corresponds to a right shift.  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 or right end are
+lost; zeros are shifted in from the opposite end.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -4894,10 +5167,17 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = ISHFT(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{ISHFTC}
@@ -4908,13 +5188,20 @@ Elemental function
 
 @node ISHFTC
 @section @code{ISHFTC} --- Shift bits circularly
-@findex @code{ISHFTC} intrinsic
-@cindex bit manipulation
-
-Intrinsic implemented, documentation pending.
+@cindex @code{ISHFTC} intrinsic
+@cindex bit operations
 
 @table @asis
 @item @emph{Description}:
+@code{ISHFTC} returns a value corresponding to @var{I} with the
+rightmost @var{SIZE} bits shifted circularly @var{SHIFT} places; that
+is, bits shifted out one end are shifted into the opposite end.  A value
+of @var{SHIFT} greater than zero corresponds to a left shift, a value of
+zero corresponds to no shift, and a value less than zero corresponds to
+a right shift.  The absolute value of @var{SHIFT} must be less than
+@var{SIZE}.  If the @var{SIZE} argument is omitted, it is taken to be
+equivalent to @code{BIT_SIZE(I)}.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -4922,10 +5209,20 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = ISHFTC(I, SHIFT [, SIZE])}
+
 @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(*)}.
+@item @var{SIZE} @tab (Optional) The type shall be @code{INTEGER(*)};
+the value must be greater than zero and less than or equal to
+@code{BIT_SIZE(I)}.
+@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}
@@ -4935,7 +5232,7 @@ Elemental function
 
 @node ITIME
 @section @code{ITIME} --- Get current local time subroutine (hour/minutes/seconds) 
-@findex @code{ITIME} intrinsic
+@cindex @code{ITIME} intrinsic
 
 @table @asis
 @item @emph{Description}:
@@ -4979,24 +5276,30 @@ end program test_itime
 
 @node KILL
 @section @code{KILL} --- Send a signal to a process
-@findex @code{KILL} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{KILL} intrinsic
 
 @table @asis
 @item @emph{Description}:
 @item @emph{Standard}:
-GNU extension
+Sends the signal specified by @var{SIGNAL} to the process @var{PID}.
+See @code{kill(2)}.
 
 @item @emph{Class}:
 Subroutine
 
 @item @emph{Syntax}:
+@code{CALL KILL(PID, SIGNAL [, STATUS])}
+
 @item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+@multitable @columnfractions .15 .80
+@item @var{PID} @tab Shall be a scalar @code{INTEGER}, with
+@code{INTENT(IN)}
+@item @var{SIGNAL} @tab Shall be a scalar @code{INTEGER}, with
+@code{INTENT(IN)}
+@item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER(4)} or
+                        @code{INTEGER(8)}. Returns 0 on success, or a
+                        system-specific error code otherwise.
+@end multitable
 
 @item @emph{See also}:
 @ref{ABORT}, @ref{EXIT}
@@ -5006,7 +5309,7 @@ Subroutine
 
 @node KIND
 @section @code{KIND} --- Kind of an entity
-@findex @code{KIND} intrinsic
+@cindex @code{KIND} intrinsic
 
 @table @asis
 @item @emph{Description}:
@@ -5048,13 +5351,12 @@ end program test_kind
 
 @node LBOUND
 @section @code{LBOUND} --- Lower dimension bounds of an array
-@findex @code{LBOUND} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{LBOUND} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Returns the lower bounds of an array, or a single lower bound
+along the @var{DIM} dimension.
 @item @emph{Standard}:
 F95 and later
 
@@ -5062,25 +5364,39 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
+@code{RESULT = LBOUND(ARRAY [, DIM])}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{ARRAY} @tab Shall be an array, of any type.
+@item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER(*)}.
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
+If @var{DIM} is absent, the result is an array of the lower bounds of
+@var{ARRAY}.  If @var{DIM} is present, the result is a scalar
+corresponding to the lower bound of the array along that dimension.  If
+@var{ARRAY} is an expression rather than a whole array or array
+structure component, or if it has a zero extent along the relevant
+dimension, the lower bound is taken to be 1.
+
 @item @emph{See also}:
 @ref{UBOUND}
 @end table
 
 
 
-
 @node LEN
 @section @code{LEN} --- Length of a character entity
-@findex @code{LEN} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{LEN} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Returns the length of a character string.  If @var{STRING} is an array,
+the length of an element of @var{STRING} is returned.  Note that
+@var{STRING} need not be defined when this intrinsic is invoked, since
+only the length, not the content, of @var{STRING} is needed.
+
 @item @emph{Standard}:
 F77 and later
 
@@ -5088,10 +5404,16 @@ F77 and later
 Inquiry function
 
 @item @emph{Syntax}:
+@code{L = LEN(STRING)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STRING} @tab Shall be a scalar or array of type
+@code{CHARACTER(*)}, with @code{INTENT(IN)}
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The return value is an @code{INTEGER} of the default kind.
 
 @item @emph{See also}:
 @ref{LEN_TRIM}, @ref{ADJUSTL}, @ref{ADJUSTR}
@@ -5099,16 +5421,14 @@ Inquiry function
 
 
 
-
 @node LEN_TRIM
 @section @code{LEN_TRIM} --- Length of a character entity without trailing blank characters
-@findex @code{LEN_TRIM} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{LEN_TRIM} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Returns the length of a character string, ignoring any trailing blanks.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -5116,9 +5436,16 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = LEN_TRIM(STRING)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STRING} @tab Shall be a scalar of type @code{CHARACTER(*)},
+with @code{INTENT(IN)}
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
+The return value is an @code{INTEGER} of the default kind.
 
 @item @emph{See also}:
 @ref{LEN}, @ref{ADJUSTL}, @ref{ADJUSTR}
@@ -5126,16 +5453,27 @@ Elemental function
 
 
 
-
 @node LGE
 @section @code{LGE} --- Lexical greater than or equal
-@findex @code{LGE} intrinsic
+@cindex @code{LGE} intrinsic
 @cindex comparison (lexical)
-
-Intrinsic implemented, documentation pending.
+@cindex lexical comparison
 
 @table @asis
 @item @emph{Description}:
+Determines whether one string is lexically greater than or equal to
+another string, where the two strings are interpreted as containing
+ASCII character codes.  If the String A and String B are not the same
+length, the shorter is compared as if spaces were appended to it to form
+a value that has the same length as the longer.
+
+In general, the lexical comparison intrinsics @code{LGE}, @code{LGT},
+@code{LLE}, and @code{LLT} differ from the corresponding intrinsic
+operators @code{.GE.}, @code{.GT.}, @code{.LE.}, and @code{.LT.}, in
+that the latter use the processor's character ordering (which is not
+ASCII on some targets), whereas the former always use the ASCII
+ordering.
+
 @item @emph{Standard}:
 F77 and later
 
@@ -5143,9 +5481,17 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = LGE(STRING_A, STRING_B)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STRING_A} @tab Shall be of default @code{CHARACTER} type.
+@item @var{STRING_B} @tab Shall be of default @code{CHARACTER} type.
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
+Returns @code{.TRUE.} if @code{STRING_A >= STRING_B}, and @code{.FALSE.}
+otherwise, based on the ASCII ordering.
 
 @item @emph{See also}:
 @ref{LGT}, @ref{LLE}, @ref{LLT}
@@ -5153,16 +5499,27 @@ Elemental function
 
 
 
-
 @node LGT
 @section @code{LGT} --- Lexical greater than
-@findex @code{LGT} intrinsic
+@cindex @code{LGT} intrinsic
 @cindex comparison (lexical)
-
-Intrinsic implemented, documentation pending.
+@cindex lexical comparison
 
 @table @asis
 @item @emph{Description}:
+Determines whether one string is lexically greater than another string,
+where the two strings are interpreted as containing ASCII character
+codes.  If the String A and String B are not the same length, the
+shorter is compared as if spaces were appended to it to form a value
+that has the same length as the longer.
+
+In general, the lexical comparison intrinsics @code{LGE}, @code{LGT},
+@code{LLE}, and @code{LLT} differ from the corresponding intrinsic
+operators @code{.GE.}, @code{.GT.}, @code{.LE.}, and @code{.LT.}, in
+that the latter use the processor's character ordering (which is not
+ASCII on some targets), whereas the former always use the ASCII
+ordering.
+
 @item @emph{Standard}:
 F77 and later
 
@@ -5170,9 +5527,17 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = LGT(STRING_A, STRING_B)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STRING_A} @tab Shall be of default @code{CHARACTER} type.
+@item @var{STRING_B} @tab Shall be of default @code{CHARACTER} type.
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
+Returns @code{.TRUE.} if @code{STRING_A > STRING_B}, and @code{.FALSE.}
+otherwise, based on the ASCII ordering.
 
 @item @emph{See also}:
 @ref{LGE}, @ref{LLE}, @ref{LLT}
@@ -5180,16 +5545,20 @@ Elemental function
 
 
 
-
 @node LINK
 @section @code{LINK} --- Create a hard link
-@findex @code{LINK} intrinsic
+@cindex @code{LINK} intrinsic
 @cindex file system operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+Makes a (hard) 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{link(2)}.
+
 @item @emph{Standard}:
 GNU extension
 
@@ -5197,27 +5566,42 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
+@code{CALL LINK(PATH1, PATH2 [, STATUS])}
+
 @item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+@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}:
-@ref{UNLINK}
+@ref{SYMLNK}, @ref{UNLINK}
 @end table
 
 
 
-
 @node LLE
 @section @code{LLE} --- Lexical less than or equal
-@findex @code{LLE} intrinsic
+@cindex @code{LLE} intrinsic
 @cindex comparison (lexical)
-
-Intrinsic implemented, documentation pending.
+@cindex lexical comparison
 
 @table @asis
 @item @emph{Description}:
+Determines whether one string is lexically less than or equal to another
+string, where the two strings are interpreted as containing ASCII
+character codes.  If the String A and String B are not the same length,
+the shorter is compared as if spaces were appended to it to form a value
+that has the same length as the longer.
+
+In general, the lexical comparison intrinsics @code{LGE}, @code{LGT},
+@code{LLE}, and @code{LLT} differ from the corresponding intrinsic
+operators @code{.GE.}, @code{.GT.}, @code{.LE.}, and @code{.LT.}, in
+that the latter use the processor's character ordering (which is not
+ASCII on some targets), whereas the former always use the ASCII
+ordering.
+
 @item @emph{Standard}:
 F77 and later
 
@@ -5225,9 +5609,17 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = LLE(STRING_A, STRING_B)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STRING_A} @tab Shall be of default @code{CHARACTER} type.
+@item @var{STRING_B} @tab Shall be of default @code{CHARACTER} type.
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
+Returns @code{.TRUE.} if @code{STRING_A <= STRING_B}, and @code{.FALSE.}
+otherwise, based on the ASCII ordering.
 
 @item @emph{See also}:
 @ref{LGE}, @ref{LGT}, @ref{LLT}
@@ -5235,16 +5627,27 @@ Elemental function
 
 
 
-
 @node LLT
 @section @code{LLT} --- Lexical less than
-@findex @code{LLT} intrinsic
+@cindex @code{LLT} intrinsic
 @cindex comparison (lexical)
-
-Intrinsic implemented, documentation pending.
+@cindex lexical comparison
 
 @table @asis
 @item @emph{Description}:
+Determines whether one string is lexically less than another string,
+where the two strings are interpreted as containing ASCII character
+codes.  If the String A and String B are not the same length, the
+shorter is compared as if spaces were appended to it to form a value
+that has the same length as the longer.
+
+In general, the lexical comparison intrinsics @code{LGE}, @code{LGT},
+@code{LLE}, and @code{LLT} differ from the corresponding intrinsic
+operators @code{.GE.}, @code{.GT.}, @code{.LE.}, and @code{.LT.}, in
+that the latter use the processor's character ordering (which is not
+ASCII on some targets), whereas the former always use the ASCII
+ordering.
+
 @item @emph{Standard}:
 F77 and later
 
@@ -5252,9 +5655,17 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = LLT(STRING_A, STRING_B)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STRING_A} @tab Shall be of default @code{CHARACTER} type.
+@item @var{STRING_B} @tab Shall be of default @code{CHARACTER} type.
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
+Returns @code{.TRUE.} if @code{STRING_A < STRING_B}, and @code{.FALSE.}
+otherwise, based on the ASCII ordering.
 
 @item @emph{See also}:
 @ref{LGE}, @ref{LGT}, @ref{LLE}
@@ -5262,37 +5673,44 @@ Elemental function
 
 
 
-
 @node LNBLNK
 @section @code{LNBLNK} --- Index of the last non-blank character in a string
-@findex @code{LNBLNK} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{LNBLNK} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Returns the length of a character string, ignoring any trailing blanks.
+This is identical to the standard @code{LEN_TRIM} intrinsic, and is only
+included for backwards compatibility.
+
 @item @emph{Standard}:
 GNU extension
 
 @item @emph{Class}:
+Elemental function
+
 @item @emph{Syntax}:
+@code{RESULT = LNBLNK(STRING)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STRING} @tab Shall be a scalar of type @code{CHARACTER(*)},
+with @code{INTENT(IN)}
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+The return value is of @code{INTEGER(kind=4)} type.
 
 @item @emph{See also}:
-@ref{INDEX}
+@ref{INDEX}, @ref{LEN_TRIM}
 @end table
 
 
 
-
 @node LOC
 @section @code{LOC} --- Returns the address of a variable
-@findex @code{LOC} intrinsic
-@cindex loc
+@cindex @code{LOC} intrinsic
+@cindex location of a variable in memory
 
 @table @asis
 @item @emph{Description}:
@@ -5305,7 +5723,7 @@ GNU extension
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = LOC(X)}
+@code{RESULT = LOC(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5313,8 +5731,9 @@ Inquiry function
 @end multitable
 
 @item @emph{Return value}:
-The return value is of type @code{INTEGER(n)}, where @code{n} is the
-size (in bytes) of a memory address on the target machine.
+The return value is of type @code{INTEGER}, with a @code{KIND}
+corresponding to the size (in bytes) of a memory address on the target
+machine.
 
 @item @emph{Example}:
 @smallexample
@@ -5327,14 +5746,16 @@ end program test_loc
 @end smallexample
 @end table
 
+
+
 @node LOG
 @section @code{LOG} --- Logarithm function
-@findex @code{LOG} intrinsic
-@findex @code{ALOG} intrinsic
-@findex @code{DLOG} intrinsic
-@findex @code{CLOG} intrinsic
-@findex @code{ZLOG} intrinsic
-@findex @code{CDLOG} intrinsic
+@cindex @code{LOG} intrinsic
+@cindex @code{ALOG} intrinsic
+@cindex @code{DLOG} intrinsic
+@cindex @code{CLOG} intrinsic
+@cindex @code{ZLOG} intrinsic
+@cindex @code{CDLOG} intrinsic
 @cindex logarithm
 
 @table @asis
@@ -5348,7 +5769,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = LOG(X)}
+@code{RESULT = LOG(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5385,9 +5806,9 @@ end program test_log
 
 @node LOG10
 @section @code{LOG10} --- Base 10 logarithm function
-@findex @code{LOG10} intrinsic
-@findex @code{ALOG10} intrinsic
-@findex @code{DLOG10} intrinsic
+@cindex @code{LOG10} intrinsic
+@cindex @code{ALOG10} intrinsic
+@cindex @code{DLOG10} intrinsic
 @cindex logarithm
 
 @table @asis
@@ -5401,7 +5822,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = LOG10(X)}
+@code{RESULT = LOG10(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5430,15 +5851,16 @@ end program test_log10
 @end table
 
 
+
 @node LOGICAL
 @section @code{LOGICAL} --- Convert to logical type
-@findex @code{LOGICAL} intrinsic
+@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
 
@@ -5446,11 +5868,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
 
 
@@ -5458,33 +5892,48 @@ Elemental function
 
 @node LSHIFT
 @section @code{LSHIFT} --- Left shift bits
-@findex @code{LSHIFT} 
-@cindex bit manipulation
-
-Not yet implemented in GNU Fortran.
+@cindex @code{LSHIFT} intrinsic
+@cindex bit operations
 
 @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
 
 
 @node LSTAT
 @section @code{LSTAT} --- Get file status
-@findex @code{LSTAT} intrinsic
+@cindex @code{LSTAT} intrinsic
 @cindex file system operations 
 
 @table @asis
@@ -5501,7 +5950,7 @@ GNU extension
 Non-elemental subroutine
 
 @item @emph{Syntax}:
-@code{CALL LSTAT(FILE,BUFF[,STATUS])}
+@code{CALL LSTAT(FILE, BUFF [, STATUS])}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5522,13 +5971,14 @@ To stat an open file: @ref{FSTAT}, to stat a file: @ref{STAT}
 
 @node LTIME
 @section @code{LTIME} --- Convert time to local time info
-@findex @code{LTIME} 
-@cindex time function
-
-Not yet implemented in GNU Fortran.
+@cindex @code{LTIME} intrinsic
+@cindex time, conversion function
 
 @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
@@ -5537,11 +5987,36 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
+@code{CALL LTIME(STIME, TARRAY)}
+
 @item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+@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}:
+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
 
@@ -5549,8 +6024,8 @@ Subroutine
 
 @node MALLOC
 @section @code{MALLOC} --- Allocate dynamic memory
-@findex @code{MALLOC} intrinsic
-@cindex MALLOC
+@cindex @code{MALLOC} intrinsic
+@cindex Cray pointers
 
 @table @asis
 @item @emph{Description}:
@@ -5612,15 +6087,16 @@ end program test_malloc
 @end table
 
 
+
 @node MATMUL
 @section @code{MATMUL} --- matrix multiplication
-@findex @code{MATMUL} intrinsic
+@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
 
@@ -5628,22 +6104,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
-@findex @code{MAX} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{MAX} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Returns the argument with the largest (most positive) value.
+
 @item @emph{Standard}:
 F77 and later
 
@@ -5651,9 +6147,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}, @var{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
@@ -5666,14 +6174,17 @@ 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
-@findex @code{MAXEXPONENT} intrinsic
-@cindex MAXEXPONENT
+@cindex @code{MAXEXPONENT} intrinsic
+@cindex maximum exponent
+@cindex exponent, maximum
 
 @table @asis
 @item @emph{Description}:
@@ -5687,7 +6198,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = MAXEXPONENT(X)}
+@code{RESULT = MAXEXPONENT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5711,15 +6222,25 @@ end program exponents
 @end table
 
 
+
 @node MAXLOC
 @section @code{MAXLOC} --- Location of the maximum value within an array
-@findex @code{MAXLOC} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{MAXLOC} intrinsic
 
 @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
 
@@ -5727,35 +6248,84 @@ 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
 
 
 
 @node MAXVAL
 @section @code{MAXVAL} --- Maximum value of an array
-@findex @code{MAXVAL} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{MAXVAL} intrinsic
 
 @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, or if @var{ARRAY} has a rank of one, the result
+is a scalar.  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.  In all
+cases, the result is of the same type and kind as @var{ARRAY}.
 
 @item @emph{See also}:
 @ref{MAX}, @ref{MAXLOC}
@@ -5763,40 +6333,48 @@ Transformational function
 
 
 
-
 @node MERGE
-@section @code{MERGE} --- Merge arrays
-@findex @code{MERGE} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@section @code{MERGE} --- Merge variables
+@cindex @code{MERGE} intrinsic
 
 @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
-@findex @code{MIN} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{MIN} intrinsic
 
 @table @asis
 @item @emph{Description}:
+Returns the argument with the smallest (most negative) value.
+
 @item @emph{Standard}:
 F77 and later
 
@@ -5804,9 +6382,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}, @var{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
@@ -5819,13 +6409,14 @@ Elemental function
 @end multitable
 
 @item @emph{See also}:
-@ref{MINLOC}, @ref{MINVAL}
+@ref{MAX}, @ref{MINLOC}, @ref{MINVAL}
 @end table
 
 @node MINEXPONENT
 @section @code{MINEXPONENT} --- Minimum exponent of a real kind
-@findex @code{MINEXPONENT} intrinsic
-@cindex MINEXPONENT
+@cindex @code{MINEXPONENT} intrinsic
+@cindex minimum exponent
+@cindex exponent, minimum
 
 @table @asis
 @item @emph{Description}:
@@ -5839,7 +6430,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = MINEXPONENT(X)}
+@code{RESULT = MINEXPONENT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5855,15 +6446,25 @@ See @code{MAXEXPONENT} for an example.
 @end table
 
 
+
 @node MINLOC
 @section @code{MINLOC} --- Location of the minimum value within an array
-@findex @code{MINLOC} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{MINLOC} intrinsic
 
 @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
 
@@ -5871,9 +6472,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}
@@ -5881,15 +6504,22 @@ Transformational function
 @end table
 
 
+
 @node MINVAL
 @section @code{MINVAL} --- Minimum value of an array
-@findex @code{MINVAL} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{MINVAL} intrinsic
 
 @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
 
@@ -5897,22 +6527,42 @@ 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, or if @var{ARRAY} has a rank of one, the result
+is a scalar.  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.  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
 
 
 
 @node MOD
 @section @code{MOD} --- Remainder function
-@findex @code{MOD} intrinsic
-@findex @code{AMOD} intrinsic
-@findex @code{DMOD} intrinsic
+@cindex @code{MOD} intrinsic
+@cindex @code{AMOD} intrinsic
+@cindex @code{DMOD} intrinsic
 @cindex remainder
 
 @table @asis
@@ -5927,7 +6577,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = MOD(A,P)}
+@code{RESULT = MOD(A, P)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5972,7 +6622,7 @@ end program test_mod
 
 @node MODULO
 @section @code{MODULO} --- Modulo function
-@findex @code{MODULO} intrinsic
+@cindex @code{MODULO} intrinsic
 @cindex modulo
 
 @table @asis
@@ -5986,7 +6636,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = MODULO(A,P)}
+@code{RESULT = MODULO(A, P)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6024,35 +6674,11 @@ end program test_mod
 
 
 
-@node MVBITS
-@section @code{MVBITS} --- Move bits from one integer to another
-@findex @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
-@findex @code{MOVE_ALLOC} intrinsic
-@cindex MOVE_ALLOC
+@cindex @code{MOVE_ALLOC} intrinsic
+@cindex moving allocation
+@cindex allocation, moving
 
 @table @asis
 @item @emph{Description}:
@@ -6070,8 +6696,10 @@ Subroutine
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
-@item @var{SRC} @tab @code{ALLOCATABLE}, @code{INTENT(INOUT)}, may be of any type and kind.
-@item @var{DEST} @tab @code{ALLOCATABLE}, @code{INTENT(OUT)}, shall be of the same type, kind and rank as @var{SRC}
+@item @var{SRC}  @tab @code{ALLOCATABLE}, @code{INTENT(INOUT)}, may be
+                      of any type and kind.
+@item @var{DEST} @tab @code{ALLOCATABLE}, @code{INTENT(OUT)}, shall be
+                      of the same type, kind and rank as @var{SRC}
 @end multitable
 
 @item @emph{Return value}:
@@ -6093,9 +6721,53 @@ 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
-@findex @code{NEAREST} intrinsic
+@cindex @code{NEAREST} intrinsic
 @cindex processor-representable number
 
 @table @asis
@@ -6110,7 +6782,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = NEAREST(X, S)}
+@code{RESULT = NEAREST(X, S)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6141,12 +6813,12 @@ end program test_nearest
 
 @node NEW_LINE
 @section @code{NEW_LINE} --- New line character
-@findex @code{NEW_LINE} intrinsic
-@findex @code{NEW_LINE} intrinsic
+@cindex @code{NEW_LINE} intrinsic
+@cindex @code{NEW_LINE} intrinsic
 
 @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
@@ -6155,7 +6827,7 @@ F2003 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{C = NEW_LINE(C)}
+@code{RESULT = NEW_LINE(C)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6180,8 +6852,8 @@ end program newline
 
 @node NINT
 @section @code{NINT} --- Nearest whole number
-@findex @code{NINT} intrinsic
-@findex @code{IDNINT} intrinsic
+@cindex @code{NINT} intrinsic
+@cindex @code{IDNINT} intrinsic
 @cindex whole number
 
 @table @asis
@@ -6195,7 +6867,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = NINT(X)}
+@code{RESULT = NINT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6232,24 +6904,34 @@ end program test_nint
 
 @node NOT
 @section @code{NOT} --- Logical negation
-@findex @code{NOT} intrinsic
-@cindex logical operations
-
-Intrinsic implemented, documentation pending.
+@cindex @code{NOT} intrinsic
+@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
 
 
@@ -6257,7 +6939,7 @@ Elemental function
 
 @node NULL
 @section @code{NULL} --- Function that returns an disassociated pointer
-@findex @code{NULL} intrinsic
+@cindex @code{NULL} intrinsic
 @cindex undocumented intrinsic 
 
 Intrinsic implemented, documentation pending.
@@ -6283,7 +6965,7 @@ Transformational function
 
 @node OR
 @section @code{OR} --- Bitwise logical OR
-@findex @code{OR} intrinsic
+@cindex @code{OR} intrinsic
 @cindex bit operations
 
 @table @asis
@@ -6334,7 +7016,7 @@ F95 elemental function: @ref{IOR}
 
 @node PACK
 @section @code{PACK} --- Pack an array into an array of rank one
-@findex @code{PACK} intrinsic
+@cindex @code{PACK} intrinsic
 @cindex undocumented intrinsic 
 
 Intrinsic implemented, documentation pending.
@@ -6358,16 +7040,16 @@ Transformational function
 
 
 
-
 @node PERROR
 @section @code{PERROR} --- Print system error message
-@findex @code{PERROR} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{PERROR} intrinsic
 
 @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
 
@@ -6375,21 +7057,23 @@ 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
-@findex @code{PRECISION} intrinsic
-@cindex PRECISION
+@cindex @code{PRECISION} intrinsic
+@cindex precision of a real variable
 
 @table @asis
 @item @emph{Description}:
@@ -6403,7 +7087,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = PRECISION(X)}
+@code{RESULT = PRECISION(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6430,7 +7114,7 @@ end program prec_and_range
 
 @node PRESENT
 @section @code{PRESENT} --- Determine whether an optional argument is specified
-@findex @code{PRESENT} intrinsic
+@cindex @code{PRESENT} intrinsic
 @cindex undocumented intrinsic 
 
 Intrinsic implemented, documentation pending.
@@ -6452,10 +7136,9 @@ Inquiry function
 
 
 
-
 @node PRODUCT
 @section @code{PRODUCT} --- Product of array elements
-@findex @code{PRODUCT} intrinsic
+@cindex @code{PRODUCT} intrinsic
 @cindex undocumented intrinsic 
 
 Intrinsic implemented, documentation pending.
@@ -6468,60 +7151,130 @@ F95 and later
 @item @emph{Class}:
 Transformational function
 
-@item @emph{Syntax}:
-@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+@item @emph{Syntax}:
+@item @emph{Arguments}:
+@item @emph{Return value}:
+@item @emph{Example}:
+@item @emph{Specific names}:
+@item @emph{See also}:
+@ref{SUM}
+@end table
+
+
+
+@node RADIX
+@section @code{RADIX} --- Base of a model number
+@cindex @code{RADIX} intrinsic
+@cindex base
+
+@table @asis
+@item @emph{Description}:
+@code{RADIX(X)} returns the base of the model representing the entity @var{X}.
+
+@item @emph{Standard}:
+F95 and later
+
+@item @emph{Class}:
+Inquiry function
+
+@item @emph{Syntax}:
+@code{RESULT = RADIX(X)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{X} @tab Shall be of type @code{INTEGER} or @code{REAL}
+@end multitable
+
+@item @emph{Return value}:
+The return value is a scalar of type @code{INTEGER} and of the default
+integer kind.
+
+@item @emph{Example}:
+@smallexample
+program test_radix
+  print *, "The radix for the default integer kind is", radix(0)
+  print *, "The radix for the default real kind is", radix(0.0)
+end program test_radix
+@end smallexample
+
+@end table
+
+
+
+@node RAN
+@section @code{RAN} --- Real pseudo-random number
+@cindex @code{RAN} intrinsic
+@cindex random numbers
+
+@table @asis
+@item @emph{Description}:
+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.
+
+@item @emph{Standard}:
+GNU extension
+
+@item @emph{Class}:
+Non-elemental function
+
 @item @emph{See also}:
-@ref{SUM}
+@ref{RAND}, @ref{RANDOM_NUMBER}
 @end table
 
 
 
-
-@node RADIX
-@section @code{RADIX} --- Base of a model number
-@findex @code{RADIX} intrinsic
-@cindex base
+@node RAND
+@section @code{RAND} --- Real pseudo-random number
+@cindex @code{RAND} intrinsic
+@cindex random numbers
 
 @table @asis
 @item @emph{Description}:
-@code{RADIX(X)} returns the base of the model representing the entity @var{X}.
+@code{RAND(FLAG)} returns a pseudo-random number from a uniform
+distribution between 0 and 1. If @var{FLAG} is 0, the next number
+in the current sequence is returned; if @var{FLAG} is 1, the generator
+is restarted by @code{CALL SRAND(0)}; if @var{FLAG} has any other value,
+it is used as a new seed with @code{SRAND}.
 
 @item @emph{Standard}:
-F95 and later
+GNU extension
 
 @item @emph{Class}:
-Inquiry function
+Non-elemental function
 
 @item @emph{Syntax}:
-@code{R = RADIX(X)}
+@code{RESULT = RAND(FLAG)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
-@item @var{X} @tab Shall be of type @code{INTEGER} or @code{REAL}
+@item @var{FLAG} @tab shall be a scalar @code{INTEGER} of kind 4.
 @end multitable
 
 @item @emph{Return value}:
-The return value is a scalar of type @code{INTEGER} and of the default
-integer kind.
+The return value is of @code{REAL} type and the default kind.
 
 @item @emph{Example}:
 @smallexample
-program test_radix
-  print *, "The radix for the default integer kind is", radix(0)
-  print *, "The radix for the default real kind is", radix(0.0)
-end program test_radix
+program test_rand
+  integer,parameter :: seed = 86456
+  
+  call srand(seed)
+  print *, rand(), rand(), rand(), rand()
+  print *, rand(seed), rand(), rand(), rand()
+end program test_rand
 @end smallexample
 
+@item @emph{See also}:
+@ref{SRAND}, @ref{RANDOM_NUMBER}
+
 @end table
 
 
 
 @node RANDOM_NUMBER
 @section @code{RANDOM_NUMBER} --- Pseudo-random number
-@findex @code{RANDOM_NUMBER} intrinsic
+@cindex @code{RANDOM_NUMBER} intrinsic
 @cindex random numbers
 
 Intrinsic implemented, documentation pending.
@@ -6544,10 +7297,9 @@ Elemental subroutine
 
 
 
-
 @node RANDOM_SEED
 @section @code{RANDOM_SEED} --- Initialize a pseudo-random number sequence
-@findex @code{RANDOM_SEED} intrinsic
+@cindex @code{RANDOM_SEED} intrinsic
 @cindex random numbers
 
 Intrinsic implemented, documentation pending.
@@ -6570,64 +7322,10 @@ Subroutine
 
 
 
-
-@node RAND
-@section @code{RAND} --- Real pseudo-random number
-@findex @code{RAND} intrinsic
-@findex @code{RAN} intrinsic
-@cindex random number
-
-@table @asis
-@item @emph{Description}:
-@code{RAND(FLAG)} returns a pseudo-random number from a uniform
-distribution between 0 and 1. If @var{FLAG} is 0, the next number
-in the current sequence is returned; if @var{FLAG} is 1, the generator
-is restarted by @code{CALL SRAND(0)}; if @var{FLAG} has any other value,
-it is used as a new seed with @code{SRAND}.
-
-@item @emph{Standard}:
-GNU extension
-
-@item @emph{Class}:
-non-elemental function
-
-@item @emph{Syntax}:
-@code{X = RAND(FLAG)}
-
-@item @emph{Arguments}:
-@multitable @columnfractions .15 .80
-@item @var{FLAG} @tab shall be a scalar @code{INTEGER} of kind 4.
-@end multitable
-
-@item @emph{Return value}:
-The return value is of @code{REAL} type and the default kind.
-
-@item @emph{Example}:
-@smallexample
-program test_rand
-  integer,parameter :: seed = 86456
-  
-  call srand(seed)
-  print *, rand(), rand(), rand(), rand()
-  print *, rand(seed), rand(), rand(), 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}
-
-@end table
-
-
-
 @node RANGE
 @section @code{RANGE} --- Decimal exponent range of a real kind
-@findex @code{RANGE} intrinsic
-@cindex RANGE
+@cindex @code{RANGE} intrinsic
+@cindex range of a real variable
 
 @table @asis
 @item @emph{Description}:
@@ -6641,7 +7339,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = RANGE(X)}
+@code{RESULT = RANGE(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6658,25 +7356,10 @@ See @code{PRECISION} for an example.
 
 
 
-@node RAN
-@section @code{RAN} --- Real pseudo-random number
-@findex @code{RAN} intrinsic
-@cindex random number
-
-@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 
-@findex @code{REAL} intrinsic
-@findex @code{REALPART} intrinsic
+@cindex @code{REAL} intrinsic
+@cindex @code{REALPART} intrinsic
 @cindex true values
 
 @table @asis
@@ -6693,16 +7376,17 @@ Elemental function
 
 @item @emph{Syntax}:
 @multitable @columnfractions .30 .80
-@item @code{X = REAL(X)}
-@item @code{X = REAL(X, KIND)}
-@item @code{X = REALPART(Z)}
+@item @code{RESULT = REAL(X [, KIND])}
+@item @code{RESULT = REALPART(Z)}
 @end multitable
 
 @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}:
@@ -6736,15 +7420,21 @@ end program test_real
 @end table
 
 
+
 @node RENAME
 @section @code{RENAME} --- Rename a file
-@findex @code{RENAME} intrinsic
+@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
 
@@ -6752,18 +7442,25 @@ 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
 
 
 
 @node REPEAT
 @section @code{REPEAT} --- Repeated string concatenation 
-@findex @code{REPEAT} intrinsic
+@cindex @code{REPEAT} intrinsic
 @cindex string manipulation
 
 Intrinsic implemented, documentation pending.
@@ -6788,7 +7485,7 @@ Transformational function
 
 @node RESHAPE
 @section @code{RESHAPE} --- Function to reshape an array
-@findex @code{RESHAPE} intrinsic
+@cindex @code{RESHAPE} intrinsic
 @cindex array manipulation
 
 Intrinsic implemented, documentation pending.
@@ -6813,7 +7510,7 @@ Transformational function
 
 @node RRSPACING
 @section @code{RRSPACING} --- Reciprocal of the relative spacing
-@findex @code{RRSPACING} intrinsic
+@cindex @code{RRSPACING} intrinsic
 
 @table @asis
 @item @emph{Description}:
@@ -6827,7 +7524,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = RRSPACING(X)}
+@code{RESULT = RRSPACING(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6845,25 +7542,41 @@ The value returned is equal to
 
 @node RSHIFT
 @section @code{RSHIFT} --- Right shift bits
-@findex @code{RSHIFT} 
-@cindex bit manipulation
-
-Not yet implemented in GNU Fortran.
+@cindex @code{RSHIFT} intrinsic
+@cindex bit operations
 
 @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
 
@@ -6871,7 +7584,7 @@ Function
 
 @node SCALE
 @section @code{SCALE} --- Scale a real value
-@findex @code{SCALE} intrinsic
+@cindex @code{SCALE} intrinsic
 
 @table @asis
 @item @emph{Description}:
@@ -6884,7 +7597,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = SCALE(X, I)}
+@code{RESULT = SCALE(X, I)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6910,7 +7623,7 @@ end program test_scale
 
 @node SCAN
 @section @code{SCAN} --- Scan a string for the presence of a set of characters
-@findex @code{SCAN} intrinsic
+@cindex @code{SCAN} intrinsic
 @cindex string manipulation
 
 Intrinsic implemented, documentation pending.
@@ -6935,8 +7648,9 @@ Elemental function
 
 @node SECNDS
 @section @code{SECNDS} --- Time function
-@findex @code{SECNDS} intrinsic
-@cindex SECNDS
+@cindex @code{SECNDS} intrinsic
+@cindex time, current
+@cindex current time
 
 @table @asis
 @item @emph{Description}:
@@ -6952,7 +7666,7 @@ GNU extension
 function
 
 @item @emph{Syntax}:
-@code{T = SECNDS (X)}
+@code{RESULT = SECNDS (X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6982,7 +7696,7 @@ end program test_secnds
 
 @node SELECTED_INT_KIND
 @section @code{SELECTED_INT_KIND} --- Choose integer kind
-@findex @code{SELECTED_INT_KIND} intrinsic
+@cindex @code{SELECTED_INT_KIND} intrinsic
 @cindex integer kind
 
 @table @asis
@@ -6999,9 +7713,7 @@ F95 and later
 Transformational function
 
 @item @emph{Syntax}:
-@multitable @columnfractions .30 .80
-@item @code{J = SELECTED_INT_KIND(I)}
-@end multitable
+@code{RESULT = SELECTED_INT_KIND(I)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7029,7 +7741,7 @@ end program large_integers
 
 @node SELECTED_REAL_KIND
 @section @code{SELECTED_REAL_KIND} --- Choose real kind
-@findex @code{SELECTED_REAL_KIND} intrinsic
+@cindex @code{SELECTED_REAL_KIND} intrinsic
 @cindex real kind
 
 @table @asis
@@ -7045,9 +7757,7 @@ F95 and later
 Transformational function
 
 @item @emph{Syntax}:
-@multitable @columnfractions .30 .80
-@item @code{I = SELECTED_REAL_KIND(P,R)}
-@end multitable
+@code{RESULT = SELECTED_REAL_KIND(P, R)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7093,13 +7803,13 @@ end program real_kinds
 
 @node SET_EXPONENT
 @section @code{SET_EXPONENT} --- Set the exponent of the model
-@findex @code{SET_EXPONENT} intrinsic
-@cindex exponent
+@cindex @code{SET_EXPONENT} intrinsic
+@cindex exponent part of a real number
 
 @table @asis
 @item @emph{Description}:
 @code{SET_EXPONENT(X, I)} returns the real number whose fractional part
-is that that of @var{X} and whose exponent part if @var{I}.
+is that that of @var{X} and whose exponent part is @var{I}.
 
 @item @emph{Standard}:
 F95 and later
@@ -7108,7 +7818,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = SET_EXPONENT(X, I)}
+@code{RESULT = SET_EXPONENT(X, I)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7137,7 +7847,7 @@ end program test_setexp
 
 @node SHAPE
 @section @code{SHAPE} --- Determine the shape of an array
-@findex @code{SHAPE} intrinsic
+@cindex @code{SHAPE} intrinsic
 @cindex array manipulation
 
 Intrinsic implemented, documentation pending.
@@ -7160,12 +7870,11 @@ Inquiry function
 
 
 
-
 @node SIGN
 @section @code{SIGN} --- Sign copying function
-@findex @code{SIGN} intrinsic
-@findex @code{ISIGN} intrinsic
-@findex @code{DSIGN} intrinsic
+@cindex @code{SIGN} intrinsic
+@cindex @code{ISIGN} intrinsic
+@cindex @code{DSIGN} intrinsic
 @cindex sign copying
 
 @table @asis
@@ -7179,7 +7888,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = SIGN(A,B)}
+@code{RESULT = SIGN(A, B)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7217,8 +7926,8 @@ end program test_sign
 
 @node SIGNAL
 @section @code{SIGNAL} --- Signal handling subroutine (or function)
-@findex @code{SIGNAL} intrinsic
-@cindex SIGNAL subroutine 
+@cindex @code{SIGNAL} intrinsic
+@cindex signal handling
 
 @table @asis
 @item @emph{Description}:
@@ -7238,10 +7947,9 @@ GNU extension
 subroutine, non-elemental function
 
 @item @emph{Syntax}:
-@multitable @columnfractions .30 .80
-@item @code{CALL ALARM(NUMBER, HANDLER)}
-@item @code{CALL ALARM(NUMBER, HANDLER, STATUS)}
-@item @code{STATUS = ALARM(NUMBER, HANDLER)}
+@multitable @columnfractions .80
+@item @code{CALL SIGNAL(NUMBER, HANDLER [, STATUS])}
+@item @code{STATUS = SIGNAL(NUMBER, HANDLER)}
 @end multitable
 
 @item @emph{Arguments}:
@@ -7255,7 +7963,7 @@ integer. It has @code{INTENT(OUT)}.
 @end multitable
 
 @item @emph{Return value}:
-The @code{SIGNAL} functions returns the value returned by @code{signal(2)}.
+The @code{SIGNAL} function returns the value returned by @code{signal(2)}.
 
 @item @emph{Example}:
 @smallexample
@@ -7273,13 +7981,12 @@ end program test_signal
 
 
 
-
 @node SIN
 @section @code{SIN} --- Sine function 
-@findex @code{SIN} intrinsic
-@findex @code{DSIN} intrinsic
-@findex @code{ZSIN} intrinsic
-@findex @code{CDSIN} intrinsic
+@cindex @code{SIN} intrinsic
+@cindex @code{DSIN} intrinsic
+@cindex @code{ZSIN} intrinsic
+@cindex @code{CDSIN} intrinsic
 @cindex trigonometric functions
 
 @table @asis
@@ -7293,7 +8000,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = SIN(X)}
+@code{RESULT = SIN(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7329,8 +8036,8 @@ end program test_sin
 
 @node SINH
 @section @code{SINH} --- Hyperbolic sine function 
-@findex @code{SINH} intrinsic
-@findex @code{DSINH} intrinsic
+@cindex @code{SINH} intrinsic
+@cindex @code{DSINH} intrinsic
 @cindex hyperbolic sine
 
 @table @asis
@@ -7344,7 +8051,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = SINH(X)}
+@code{RESULT = SINH(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7376,7 +8083,7 @@ end program test_sinh
 
 @node SIZE
 @section @code{SIZE} --- Determine the size of an array
-@findex @code{SIZE} intrinsic
+@cindex @code{SIZE} intrinsic
 @cindex array manipulation
 
 Intrinsic implemented, documentation pending.
@@ -7400,7 +8107,7 @@ Inquiry function
 
 @node SNGL
 @section @code{SNGL} --- Convert double precision real to default real
-@findex @code{SNGL} intrinsic
+@cindex @code{SNGL} intrinsic
 @cindex conversion function (real)
 
 @table @asis
@@ -7416,7 +8123,7 @@ GNU extension
 function
 
 @item @emph{Syntax}:
-@code{X = SNGL(A)}
+@code{RESULT = SNGL(A)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7434,7 +8141,7 @@ The return value is of type default @code{REAL}.
 
 @node SPACING
 @section @code{SPACING} --- Smallest distance between two numbers of a given type
-@findex @code{SPACING} intrinsic
+@cindex @code{SPACING} intrinsic
 @cindex undocumented intrinsic 
 
 Intrinsic implemented, documentation pending.
@@ -7459,7 +8166,7 @@ Elemental function
 
 @node SPREAD
 @section @code{SPREAD} --- Add a dimension to an array
-@findex @code{SPREAD} intrinsic
+@cindex @code{SPREAD} intrinsic
 @cindex array manipulation
 
 Intrinsic implemented, documentation pending.
@@ -7484,11 +8191,11 @@ Transformational function
 
 @node SQRT
 @section @code{SQRT} --- Square-root function
-@findex @code{SQRT} intrinsic
-@findex @code{DSQRT} intrinsic
-@findex @code{CSQRT} intrinsic
-@findex @code{ZSQRT} intrinsic
-@findex @code{CDSQRT} intrinsic
+@cindex @code{SQRT} intrinsic
+@cindex @code{DSQRT} intrinsic
+@cindex @code{CSQRT} intrinsic
+@cindex @code{ZSQRT} intrinsic
+@cindex @code{CDSQRT} intrinsic
 @cindex square-root
 
 @table @asis
@@ -7502,7 +8209,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = SQRT(X)}
+@code{RESULT = SQRT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7538,8 +8245,8 @@ end program test_sqrt
 
 @node SRAND
 @section @code{SRAND} --- Reinitialize the random number generator
-@findex @code{SRAND} intrinsic
-@cindex random number
+@cindex @code{SRAND} intrinsic
+@cindex random numbers
 
 @table @asis
 @item @emph{Description}:
@@ -7582,9 +8289,10 @@ pseudo-random number generators.
 @end table
 
 
+
 @node STAT
 @section @code{STAT} --- Get file status
-@findex @code{STAT} intrinsic
+@cindex @code{STAT} intrinsic
 @cindex file system operations
 
 @table @asis
@@ -7633,26 +8341,26 @@ Non-elemental subroutine
 
 @item @emph{Example}:
 @smallexample
-PROGRAM test_fstat
+PROGRAM test_stat
   INTEGER, DIMENSION(13) :: buff
   INTEGER :: status
 
-  CALL STAT("/etc/passwd", statarr, status)
+  CALL STAT("/etc/passwd", buff, status)
 
   IF (status == 0) THEN
-    WRITE (*, FMT="('Device ID:',                         T40, I19)") buff(1)
-    WRITE (*, FMT="('Inode number:',                      T40, I19)") buff(2)
-    WRITE (*, FMT="('File mode:',                         T40, o19)") buff(3)
-    WRITE (*, FMT="('Number of links:',                   T40, I19)") buff(4)
-    WRITE (*, FMT="('Owner''s uid:',                      T40, I19)") buff(5)
-    WRITE (*, FMT="('Owner''s gid:',                      T40, I19)") buff(6)
-    WRITE (*, FMT="('Device where directory is located:', T40, I19)") buff(7)
-    WRITE (*, FMT="('File size:',                         T40, I19)") buff(8)
-    WRITE (*, FMT="('Last access time:',                  T40, A19)") CTIME(buff(9))
-    WRITE (*, FMT="('Last modification time',             T40, A19)") CTIME(buff(10))
-    WRITE (*, FMT="('Last file status change time:',      T40, A19)") CTIME(buff(11))
-    WRITE (*, FMT="('Preferred I/O block size:',          T40, I19)") buff(12)
-    WRITE (*, FMT="('Number of blocks allocated:',        T40, I19)") buff(13)
+    WRITE (*, FMT="('Device ID:',               T30, I19)") buff(1)
+    WRITE (*, FMT="('Inode number:',            T30, I19)") buff(2)
+    WRITE (*, FMT="('File mode (octal):',       T30, O19)") buff(3)
+    WRITE (*, FMT="('Number of links:',         T30, I19)") buff(4)
+    WRITE (*, FMT="('Owner''s uid:',            T30, I19)") buff(5)
+    WRITE (*, FMT="('Owner''s gid:',            T30, I19)") buff(6)
+    WRITE (*, FMT="('Device where located:',    T30, I19)") buff(7)
+    WRITE (*, FMT="('File size:',               T30, I19)") buff(8)
+    WRITE (*, FMT="('Last access time:',        T30, A19)") CTIME(buff(9))
+    WRITE (*, FMT="('Last modification time',   T30, A19)") CTIME(buff(10))
+    WRITE (*, FMT="('Last status change time:', T30, A19)") CTIME(buff(11))
+    WRITE (*, FMT="('Preferred block size:',    T30, I19)") buff(12)
+    WRITE (*, FMT="('No. of blocks allocated:', T30, I19)") buff(13)
   END IF
 END PROGRAM
 @end smallexample
@@ -7665,7 +8373,7 @@ To stat an open file: @ref{FSTAT}, to stat a link: @ref{LSTAT}
 
 @node SUM
 @section @code{SUM} --- Sum of array elements
-@findex @code{SUM} intrinsic
+@cindex @code{SUM} intrinsic
 @cindex array manipulation
 
 Intrinsic implemented, documentation pending.
@@ -7688,39 +8396,56 @@ Transformational function
 
 
 
-
 @node SYMLNK
 @section @code{SYMLNK} --- Create a symbolic link
-@findex @code{SYMLNK} intrinsic
+@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
-@findex @code{SYSTEM} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{SYSTEM} intrinsic
 
 @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
 
@@ -7728,19 +8453,24 @@ 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
-@findex @code{SYSTEM_CLOCK} intrinsic
-@cindex time functions
+@cindex @code{SYSTEM_CLOCK} intrinsic
+@cindex time, current
+@cindex current time
 
 Intrinsic implemented, documentation pending.
 
@@ -7763,8 +8493,8 @@ Subroutine
 
 @node TAN
 @section @code{TAN} --- Tangent function
-@findex @code{TAN} intrinsic
-@findex @code{DTAN} intrinsic
+@cindex @code{TAN} intrinsic
+@cindex @code{DTAN} intrinsic
 @cindex trigonometric functions
 
 @table @asis
@@ -7778,7 +8508,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = TAN(X)}
+@code{RESULT = TAN(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7811,8 +8541,8 @@ end program test_tan
 
 @node TANH
 @section @code{TANH} --- Hyperbolic tangent function 
-@findex @code{TANH} intrinsic
-@findex @code{DTANH} intrinsic
+@cindex @code{TANH} intrinsic
+@cindex @code{DTANH} intrinsic
 @cindex hyperbolic tangent
 
 @table @asis
@@ -7859,13 +8589,65 @@ end program test_tanh
 
 @node TIME
 @section @code{TIME} --- Time function
-@findex @code{TIME} intrinsic
-@cindex time functions
+@cindex @code{TIME} intrinsic
+@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
 
@@ -7873,17 +8655,21 @@ 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
 
 
 
 @node TINY
 @section @code{TINY} --- Smallest positive number of a real kind
-@findex @code{TINY} intrinsic
+@cindex @code{TINY} intrinsic
 @cindex tiny
 
 @table @asis
@@ -7898,7 +8684,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = TINY(X)}
+@code{RESULT = TINY(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7916,8 +8702,8 @@ See @code{HUGE} for an example.
 
 @node TRANSFER
 @section @code{TRANSFER} --- Transfer bit patterns
-@findex @code{TRANSFER} intrinsic
-@cindex bit manipulation
+@cindex @code{TRANSFER} intrinsic
+@cindex bit operations
 
 Intrinsic implemented, documentation pending.
 
@@ -7938,10 +8724,9 @@ Transformational function
 
 
 
-
 @node TRANSPOSE
 @section @code{TRANSPOSE} --- Transpose an array of rank two
-@findex @code{TRANSPOSE} intrinsic
+@cindex @code{TRANSPOSE} intrinsic
 @cindex matrix manipulation
 
 Intrinsic implemented, documentation pending.
@@ -7963,10 +8748,9 @@ Transformational function
 
 
 
-
 @node TRIM
 @section @code{TRIM} --- Function to remove trailing blank characters of a string
-@findex @code{TRIM} intrinsic
+@cindex @code{TRIM} intrinsic
 @cindex string manipulation
 
 Intrinsic implemented, documentation pending.
@@ -7988,17 +8772,14 @@ Transformational function
 
 
 
-
 @node UBOUND
 @section @code{UBOUND} --- Upper dimension bounds of an array
-@findex @code{UBOUND} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{UBOUND} intrinsic
 
 @table @asis
 @item @emph{Description}:
-
+Returns the upper bounds of an array, or a single upper bound
+along the @var{DIM} dimension.
 @item @emph{Standard}:
 F95 and later
 
@@ -8006,10 +8787,22 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
+@code{RESULT = UBOUND(ARRAY [, DIM])}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{ARRAY} @tab Shall be an array, of any type.
+@item @var{DIM} @tab (Optional) Shall be a scalar @code{INTEGER(*)}.
+@end multitable
+
 @item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+If @var{DIM} is absent, the result is an array of the upper bounds of
+@var{ARRAY}.  If @var{DIM} is present, the result is a scalar
+corresponding to the upper bound of the array along that dimension.  If
+@var{ARRAY} is an expression rather than a whole array or array
+structure component, or if it has a zero extent along the relevant
+dimension, the upper bound is taken to be the number of elements along
+the relevant dimension.
 
 @item @emph{See also}:
 @ref{LBOUND}
@@ -8017,16 +8810,16 @@ Inquiry function
 
 
 
-
 @node UMASK
 @section @code{UMASK} --- Set the file creation mask
-@findex @code{UMASK} intrinsic
+@cindex @code{UMASK} intrinsic
 @cindex file system operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+Sets the file creation mask to @var{MASK} and returns the old value in
+argument @var{OLD} if it is supplied. See @code{umask(2)}.
+
 @item @emph{Standard}:
 GNU extension
 
@@ -8034,25 +8827,32 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
+@code{CALL UMASK(MASK [, OLD])}
+
 @item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
-@item @emph{See also}:
-@end table
+@multitable @columnfractions .15 .80
+@item @var{MASK} @tab Shall be a scalar of type @code{INTEGER(*)}.
+@item @var{MASK} @tab (Optional) Shall be a scalar of type
+                      @code{INTEGER(*)}.
+@end multitable
 
+@end table
 
 
 
 @node UNLINK
 @section @code{UNLINK} --- Remove a file from the file system
-@findex @code{UNLINK} intrinsic
+@cindex @code{UNLINK} intrinsic
 @cindex file system operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+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{unlink(2)}.
+
 @item @emph{Standard}:
 GNU extension
 
@@ -8060,42 +8860,23 @@ GNU extension
 Subroutine
 
 @item @emph{Syntax}:
-@item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-
-@item @emph{See also}:
-@ref{LINK}
-@end table
-
-
-
-
-@node UNMASK
-@section @code{UNMASK} --- (?)
-@findex @code{UNMASK} intrinsic
-@cindex undocumented intrinsic 
+@code{CALL UNLINK(PATH [, STATUS])}
 
-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}:
+@multitable @columnfractions .15 .80
+@item @var{PATH} @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}:
+@ref{LINK}, @ref{SYMLNK}
 @end table
 
 
 
-
 @node UNPACK
 @section @code{UNPACK} --- Unpack an array of rank one into an array
-@findex @code{UNPACK} intrinsic
+@cindex @code{UNPACK} intrinsic
 @cindex array manipulation
 
 Intrinsic implemented, documentation pending.
@@ -8119,10 +8900,9 @@ Transformational function
 
 
 
-
 @node VERIFY
 @section @code{VERIFY} --- Scan a string for the absence of a set of characters
-@findex @code{VERIFY} intrinsic
+@cindex @code{VERIFY} intrinsic
 @cindex string manipulation
 
 Intrinsic implemented, documentation pending.
@@ -8144,9 +8924,10 @@ Elemental function
 @end table
 
 
+
 @node XOR
 @section @code{XOR} --- Bitwise logical exclusive OR
-@findex @code{XOR} intrinsic
+@cindex @code{XOR} intrinsic
 @cindex bit operations
 
 @table @asis