OSDN Git Service

* intrinsic.texi: Edited all "Syntax" examples to a consistent form.
[pf3gnuchains/gcc-fork.git] / gcc / fortran / intrinsic.texi
index f775956..90f15c9 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. 
@@ -44,11 +44,15 @@ and editing.  All contributions and corrections are strongly encouraged.
 Implemented intrinsics are fully functional and available to the user to apply. 
 Some intrinsics have documentation yet to be completed as indicated by 'documentation pending'.
 
+@comment Missing intrinsics (double check with #19292)
+@comment  - MClock
+@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
@@ -81,7 +85,7 @@ Some intrinsics have documentation yet to be completed as indicated by 'document
 * @code{CHDIR}:         CHDIR,     Change working directory
 * @code{CHMOD}:         CHMOD,     Change access permissions of files
 * @code{CMPLX}:         CMPLX,     Complex conversion function
-* @code{COMMAND_ARGUMENT_COUNT}: COMMAND_ARGUMENT_COUNT,  Command line argument count
+* @code{COMMAND_ARGUMENT_COUNT}: COMMAND_ARGUMENT_COUNT, Get number of command line arguments
 * @code{CONJG}:         CONJG,     Complex conjugate function
 * @code{COS}:           COS,       Cosine function
 * @code{COSH}:          COSH,      Hyperbolic cosine function
@@ -122,8 +126,8 @@ Some intrinsics have documentation yet to be completed as indicated by 'document
 * @code{FSTAT}:         FSTAT,     Get file status
 * @code{FTELL}:         FTELL,     Current stream position
 * @code{GETARG}:        GETARG,    Get command line arguments
-* @code{GET_COMMAND}:   GET_COMMAND, Subroutine to retrieve the entire command line
-* @code{GET_COMMAND_ARGUMENT}: GET_COMMAND_ARGUMENT, Subroutine to retrieve a command argument
+* @code{GET_COMMAND}:   GET_COMMAND, Get the entire command line
+* @code{GET_COMMAND_ARGUMENT}: GET_COMMAND_ARGUMENT, Get command line arguments
 * @code{GETCWD}:        GETCWD,    Get current working directory
 * @code{GETENV}:        GETENV,    Get an environmental variable
 * @code{GET_ENVIRONMENT_VARIABLE}: GET_ENVIRONMENT_VARIABLE, Get an environmental variable
@@ -136,7 +140,7 @@ Some intrinsics have documentation yet to be completed as indicated by 'document
 * @code{HUGE}:          HUGE,      Largest number of a kind
 * @code{IACHAR}:        IACHAR,    Code in @acronym{ASCII} collating sequence
 * @code{IAND}:          IAND,      Bitwise logical and
-* @code{IARGC}:         IARGC,     Get number of command line arguments
+* @code{IARGC}:         IARGC,     Get the number of command line arguments
 * @code{IBCLR}:         IBCLR,     Clear bit
 * @code{IBITS}:         IBITS,     Bit extraction
 * @code{IBSET}:         IBSET,     Set bit
@@ -167,6 +171,7 @@ Some intrinsics have documentation yet to be completed as indicated by 'document
 * @code{LOG10}:         LOG10,     Base 10 logarithm function 
 * @code{LOGICAL}:       LOGICAL,   Convert to logical type
 * @code{LSHIFT}:        LSHIFT,    Left shift bits
+* @code{LSTAT}:         LSTAT,     Get file status
 * @code{LTIME}:         LTIME,     Convert time to local time info
 * @code{MALLOC}:        MALLOC,    Dynamic memory allocation function
 * @code{MATMUL}:        MATMUL,    matrix multiplication
@@ -233,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
@@ -240,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
@@ -270,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.
 
@@ -283,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
@@ -324,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
@@ -346,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
@@ -384,33 +388,65 @@ 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}:
-@uref{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19292, g77 features lacking in gfortran}
 
 @end table
 
 
 @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
@@ -425,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
@@ -449,8 +485,8 @@ end program test_achar
 
 @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
@@ -464,7 +500,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ACOS(X)}
+@code{RESULT = ACOS(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -499,7 +535,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)
 
@@ -514,7 +550,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ACOSH(X)}
+@code{RESULT = ACOSH(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -542,7 +578,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
@@ -557,7 +593,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{STR = ADJUSTL(STR)}
+@code{RESULT = ADJUSTL(STR)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -583,7 +619,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
@@ -598,7 +634,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{STR = ADJUSTR(STR)}
+@code{RESULT = ADJUSTR(STR)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -624,11 +660,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}:
@@ -644,7 +680,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
@@ -679,8 +715,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
@@ -694,14 +730,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}:
@@ -736,7 +772,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}:
@@ -754,8 +790,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
@@ -786,7 +821,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
@@ -801,8 +836,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
@@ -853,7 +887,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
@@ -867,7 +901,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{L = ALLOCATED(X)}
+@code{RESULT = ALLOCATED(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -892,7 +926,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
@@ -942,8 +976,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
@@ -957,14 +991,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}:
@@ -997,7 +1031,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
@@ -1012,8 +1046,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
@@ -1064,8 +1097,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
@@ -1079,7 +1112,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ASIN(X)}
+@code{RESULT = ASIN(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1114,7 +1147,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)
 
@@ -1129,7 +1162,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ASINH(X)}
+@code{RESULT = ASINH(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1156,7 +1189,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
@@ -1171,8 +1204,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
@@ -1232,8 +1264,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
@@ -1247,7 +1279,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ATAN(X)}
+@code{RESULT = ATAN(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1281,8 +1313,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
@@ -1296,7 +1328,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
@@ -1333,7 +1365,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)
 
@@ -1348,11 +1380,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}:
@@ -1376,8 +1409,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
@@ -1392,7 +1425,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = BESJ0(X)}
+@code{RESULT = BESJ0(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1422,8 +1455,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
@@ -1438,7 +1471,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = BESJ1(X)}
+@code{RESULT = BESJ1(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1468,8 +1501,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
@@ -1484,7 +1517,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
@@ -1515,8 +1548,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
@@ -1531,7 +1564,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = BESY0(X)}
+@code{RESULT = BESY0(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1560,8 +1593,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
@@ -1576,7 +1609,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = BESY1(X)}
+@code{RESULT = BESY1(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1605,8 +1638,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
@@ -1621,7 +1654,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
@@ -1652,8 +1685,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}:
@@ -1667,7 +1701,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
@@ -1692,8 +1726,8 @@ end program test_bit_size
 
 @node BTEST
 @section @code{BTEST} --- Bit test function
-@findex @code{BTEST} intrinsic
-@cindex BTEST
+@cindex @code{BTEST} intrinsic
+@cindex bit operations
 
 @table @asis
 @item @emph{Description}:
@@ -1707,7 +1741,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
@@ -1736,8 +1770,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}:
@@ -1750,12 +1784,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}:
@@ -1780,12 +1816,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
@@ -1794,12 +1830,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}:
@@ -1823,8 +1861,8 @@ end program test_char
 
 @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}:
@@ -1837,11 +1875,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
@@ -1866,39 +1905,81 @@ 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}:
-@uref{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19292, g77 features lacking in gfortran}
 
 @end table
 
 
 @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.
@@ -1910,13 +1991,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}:
@@ -1937,9 +2023,9 @@ end program test_cmplx
 
 
 @node COMMAND_ARGUMENT_COUNT
-@section @code{COMMAND_ARGUMENT_COUNT} --- Argument count function 
-@findex @code{COMMAND_ARGUMENT_COUNT} intrinsic
-@cindex command argument count
+@section @code{COMMAND_ARGUMENT_COUNT} --- Get number of command line arguments
+@cindex @code{COMMAND_ARGUMENT_COUNT} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
@@ -1953,7 +2039,7 @@ F2003
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = COMMAND_ARGUMENT_COUNT()}
+@code{RESULT = COMMAND_ARGUMENT_COUNT()}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -1971,14 +2057,15 @@ program test_command_argument_count
     print *, count
 end program test_command_argument_count
 @end smallexample
-@end table
-
 
+@item @emph{See also}:
+@ref{GET_COMMAND}, @ref{GET_COMMAND_ARGUMENT}
+@end table
 
 @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}:
@@ -2025,10 +2112,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
@@ -2042,7 +2129,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
@@ -2081,8 +2168,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
@@ -2130,12 +2217,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}.
@@ -2147,7 +2234,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
@@ -2189,8 +2276,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}:
@@ -2204,7 +2292,7 @@ F95 and later
 Subroutine
 
 @item @emph{Syntax}:
-@code{CPU_TIME(X)}
+@code{CALL CPU_TIME(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2230,12 +2318,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}.
@@ -2251,7 +2339,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
@@ -2283,8 +2371,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}:
@@ -2332,12 +2420,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}:
@@ -2403,7 +2500,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
@@ -2417,11 +2514,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}:
@@ -2445,8 +2543,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}:
@@ -2462,13 +2560,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}:
@@ -2493,7 +2592,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
@@ -2507,7 +2606,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = DFLOAT(X)}
+@code{RESULT = DFLOAT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2533,7 +2632,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
@@ -2549,7 +2648,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{C = DIGITS(X)}
+@code{RESULT = DIGITS(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2576,9 +2675,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
@@ -2593,7 +2692,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
@@ -2628,8 +2727,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}:
@@ -2647,7 +2746,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
@@ -2679,8 +2778,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}:
@@ -2693,7 +2792,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
@@ -2721,8 +2820,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}:
@@ -2735,7 +2834,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{D = DREAL(Z)}
+@code{RESULT = DREAL(Z)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2762,8 +2861,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}:
@@ -2839,8 +2939,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}:
@@ -2870,7 +2970,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
@@ -2904,7 +3004,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
@@ -2918,7 +3018,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{C = EPSILON(X)}
+@code{RESULT = EPSILON(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2943,7 +3043,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
@@ -2957,7 +3057,7 @@ GNU Extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ERF(X)}
+@code{RESULT = ERF(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -2987,7 +3087,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
@@ -3001,7 +3101,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = ERFC(X)}
+@code{RESULT = ERFC(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3031,8 +3131,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}:
@@ -3108,8 +3208,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}:
@@ -3151,10 +3251,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
@@ -3168,7 +3268,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
@@ -3201,8 +3301,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}:
@@ -3216,7 +3316,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = EXPONENT(X)}
+@code{RESULT = EXPONENT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3241,14 +3341,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.
@@ -3273,7 +3376,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
@@ -3294,7 +3397,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
@@ -3308,7 +3411,7 @@ GNU extension
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = FLOAT(I)}
+@code{RESULT = FLOAT(I)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3316,7 +3419,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
@@ -3334,7 +3437,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
 
@@ -3356,13 +3459,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}:
@@ -3389,7 +3493,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
 
@@ -3411,7 +3515,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
@@ -3445,7 +3549,7 @@ END PROGRAM
 
 @node FLOOR
 @section @code{FLOOR} --- Integer floor function
-@findex @code{FLOOR} intrinsic
+@cindex @code{FLOOR} intrinsic
 @cindex floor
 
 @table @asis
@@ -3459,12 +3563,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}:
@@ -3489,8 +3595,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}:
@@ -3521,7 +3627,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
@@ -3536,7 +3642,7 @@ GNU extension
 non-elemental function
 
 @item @emph{Syntax}:
-@code{I = FNUM(UNIT)}
+@code{RESULT = FNUM(UNIT)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -3562,7 +3668,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
 
@@ -3584,7 +3690,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
@@ -3612,7 +3718,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
 
@@ -3634,7 +3740,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
@@ -3666,7 +3772,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
@@ -3708,8 +3814,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}:
@@ -3749,31 +3855,46 @@ See @code{MALLOC} for an example.
 
 @node FSTAT
 @section @code{FSTAT} --- Get file status
-@findex @code{FSTAT} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{FSTAT} intrinsic
+@cindex file system operations 
 
 @table @asis
 @item @emph{Description}:
-GNU extension
+@code{FSTAT} is identical to @ref{STAT}, except that information about an 
+already opened file is obtained.
+
+The elements in @code{BUFF} are the same as described by @ref{STAT}.
 
 @item @emph{Standard}:
+GNU extension
+
 @item @emph{Class}:
+Non-elemental subroutine
+
 @item @emph{Syntax}:
+@code{CALL FSTAT(UNIT, BUFF [, STATUS])}
+
 @item @emph{Arguments}:
-@item @emph{Return value}:
+@multitable @columnfractions .15 .80
+@item @var{UNIT}   @tab An open I/O unit number of type @code{INTEGER}.
+@item @var{BUFF}   @tab The type shall be @code{INTEGER(4), DIMENSION(13)}.
+@item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER(4)}. Returns 0 
+                        on success and a system specific error code otherwise.
+@end multitable
+
 @item @emph{Example}:
-@item @emph{Specific names}:
+See @ref{STAT} for an example.
+
 @item @emph{See also}:
+To stat a link: @ref{LSTAT}, to stat a file: @ref{STAT}
 @end table
 
 
 
 @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.
 
@@ -3800,103 +3921,215 @@ 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}:
-@item @emph{Specific names}:
+@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}
 @end table
 
 
 
 @node GETARG
 @section @code{GETARG} --- Get command line arguments
-@findex @code{GETARG} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{GETARG} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
+Retrieve the @var{N}th argument that was passed on the
+command line when the containing program was invoked.
+
+This intrinsic routine is provided for backwards compatibility with 
+GNU Fortran 77.  In new code, programmers should consider the use of 
+the @ref{GET_COMMAND_ARGUMENT} intrinsic defined by the Fortran 2003 
+standard.
+
 @item @emph{Standard}:
 GNU extension
 
 @item @emph{Class}:
+Subroutine
+
 @item @emph{Syntax}:
+@code{CALL GETARG(N, ARG)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{N}   @tab Shall of type @code{INTEGER(4)}, @math{@var{N} \geq 0}
+@item @var{ARG} @tab Shall be of type @code{CHARACTER(*)}. 
+@end multitable
+
 @item @emph{Return value}:
+After @code{GETARG} returns, the @var{ARG} argument holds the @var{N}th 
+command line argument. If @var{ARG} can not hold the argument, it is 
+truncated to fit the length of @var{ARG}. If there are less than @var{N}
+arguments specified at the command line, @var{ARG} will be filled with blanks.
+If @math{@var{N} = 0}, @var{ARG} is set to the name of the program (on systems
+that support this feature).
+
 @item @emph{Example}:
-@item @emph{Specific names}:
+@smallexample
+PROGRAM test_getarg
+  INTEGER :: i
+  CHARACTER(len=32) :: arg
+
+  DO i = 1, iargc()
+    CALL getarg(i, arg)
+    WRITE (*,*) arg
+  END DO
+END PROGRAM
+@end smallexample
 
 @item @emph{See also}:
-@ref{IARGC}, @ref{GET_COMMAND}, @ref{GET_COMMAND_ARGUMENT}
+GNU Fortran 77 compatibility function: @ref{IARGC}
+
+F2003 functions and subroutines: @ref{GET_COMMAND}, @ref{GET_COMMAND_ARGUMENT},
+@ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
 
 
 @node GET_COMMAND
-@section @code{GET_COMMAND} --- Subroutine to retrieve the entire command line
-@findex @code{GET_COMMAND} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@section @code{GET_COMMAND} --- Get the entire command line
+@cindex @code{GET_COMMAND} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
+Retrieve the entire command line that was used to invoke the program.
+
 @item @emph{Standard}:
 F2003
 
 @item @emph{Class}:
+Subroutine
+
 @item @emph{Syntax}:
+@code{CALL GET_COMMAND(CMD)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{CMD} @tab Shall be of type @code{CHARACTER(*)}. 
+@end multitable
+
 @item @emph{Return value}:
+Stores the entire command line that was used to invoke the program in @var{ARG}. 
+If @var{ARG} is not large enough, the command will be truncated. 
+
 @item @emph{Example}:
-@item @emph{Specific names}:
+@smallexample
+PROGRAM test_get_command
+  CHARACTER(len=255) :: cmd
+  CALL get_command(cmd)
+  WRITE (*,*) TRIM(cmd)
+END PROGRAM
+@end smallexample
+
 @item @emph{See also}:
+@ref{GET_COMMAND_ARGUMENT}, @ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
 
 
 @node GET_COMMAND_ARGUMENT
-@section @code{GET_COMMAND_ARGUMENT} --- Subroutine to retrieve a command argument
-@findex @code{GET_COMMAND_ARGUMENT} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@section @code{GET_COMMAND_ARGUMENT} --- Get command line arguments
+@cindex @code{GET_COMMAND_ARGUMENT} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
+Retrieve the @var{N}th argument that was passed on the
+command line when the containing program was invoked.
+
 @item @emph{Standard}:
 F2003
 
 @item @emph{Class}:
+Subroutine
+
 @item @emph{Syntax}:
+@code{CALL GET_COMMAND_ARGUMENT(N, ARG)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{N}   @tab Shall of type @code{INTEGER(4)}, @math{@var{N} \geq 0}
+@item @var{ARG} @tab Shall be of type @code{CHARACTER(*)}. 
+@end multitable
+
 @item @emph{Return value}:
+After @code{GET_COMMAND_ARGUMENT} returns, the @var{ARG} argument holds the 
+@var{N}th command line argument. If @var{ARG} can not hold the argument, it is 
+truncated to fit the length of @var{ARG}. If there are less than @var{N}
+arguments specified at the command line, @var{ARG} will be filled with blanks. 
+If @math{@var{N} = 0}, @var{ARG} is set to the name of the program (on systems
+that support this feature).
+
 @item @emph{Example}:
-@item @emph{Specific names}:
+@smallexample
+PROGRAM test_get_command_argument
+  INTEGER :: i
+  CHARACTER(len=32) :: arg
+
+  i = 0
+  DO
+    CALL get_command_argument(i, arg)
+    IF (LEN_TRIM(arg) == 0) EXIT
+
+    WRITE (*,*) TRIM(arg)
+    i = i+1
+  END DO
+END PROGRAM
+@end smallexample
+
 @item @emph{See also}:
-@ref{COMMAND_ARGUMENT_COUNT}
+@ref{GET_COMMAND}, @ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
 
 
 @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}:
@@ -3909,7 +4142,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
@@ -3935,22 +4168,47 @@ END PROGRAM
 
 @node GETENV
 @section @code{GETENV} --- Get an environmental variable
-@findex @code{GETENV} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{GETENV} intrinsic
+@cindex environment variable
 
 @table @asis
 @item @emph{Description}:
+Get the @var{VALUE} of the environmental variable @var{ENVVAR}.
+
+This intrinsic routine is provided for backwards compatibility with 
+GNU Fortran 77.  In new code, programmers should consider the use of 
+the @ref{GET_ENVIRONMENT_VARIABLE} intrinsic defined by the Fortran
+2003 standard.
+
 @item @emph{Standard}:
 GNU extension
 
 @item @emph{Class}:
+Subroutine
+
 @item @emph{Syntax}:
+@code{CALL GETENV(ENVVAR, VALUE)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{ENVVAR} @tab Shall be of type @code{CHARACTER(*)}. 
+@item @var{VALUE}  @tab Shall be of type @code{CHARACTER(*)}. 
+@end multitable
+
 @item @emph{Return value}:
+Stores the value of @var{ENVVAR} in @var{VALUE}. If @var{VALUE} is 
+not large enough to hold the data, it is truncated. If @var{ENVVAR}
+is not set, @var{VALUE} will be filled with blanks.
+
 @item @emph{Example}:
-@item @emph{Specific names}:
+@smallexample
+PROGRAM test_getenv
+  CHARACTER(len=255) :: homedir
+  CALL getenv("HOME", homedir)
+  WRITE (*,*) TRIM(homedir)
+END PROGRAM
+@end smallexample
+
 @item @emph{See also}:
 @ref{GET_ENVIRONMENT_VARIABLE}
 @end table
@@ -3959,13 +4217,13 @@ GNU extension
 
 @node GET_ENVIRONMENT_VARIABLE
 @section @code{GET_ENVIRONMENT_VARIABLE} --- Get an environmental variable
-@findex @code{GET_ENVIRONMENT_VARIABLE} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@cindex @code{GET_ENVIRONMENT_VARIABLE} intrinsic
+@cindex environment variable
 
 @table @asis
 @item @emph{Description}:
+Get the @var{VALUE} of the environmental variable @var{ENVVAR}.
+
 @item @emph{Standard}:
 F2003
 
@@ -3973,19 +4231,35 @@ F2003
 Subroutine
 
 @item @emph{Syntax}:
+@code{CALL GET_ENVIRONMENT_VARIABLE(ENVVAR, VALUE)}
+
 @item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{ENVVAR} @tab Shall be of type @code{CHARACTER(*)}. 
+@item @var{VALUE}  @tab Shall be of type @code{CHARACTER(*)}. 
+@end multitable
+
 @item @emph{Return value}:
+Stores the value of @var{ENVVAR} in @var{VALUE}. If @var{VALUE} is 
+not large enough to hold the data, it is truncated. If @var{ENVVAR}
+is not set, @var{VALUE} will be filled with blanks.
+
 @item @emph{Example}:
-@item @emph{Specific names}:
-@item @emph{See also}:
+@smallexample
+PROGRAM test_getenv
+  CHARACTER(len=255) :: homedir
+  CALL get_environment_variable("HOME", homedir)
+  WRITE (*,*) TRIM(homedir)
+END PROGRAM
+@end smallexample
 @end table
 
 
 
 @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}:
@@ -3998,7 +4272,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
@@ -4009,20 +4283,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
 
@@ -4030,20 +4303,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}:
@@ -4056,7 +4346,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
@@ -4072,14 +4362,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}:
@@ -4092,7 +4384,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
@@ -4103,20 +4395,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
@@ -4125,12 +4419,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}:
-@uref{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19292, g77 features lacking in gfortran}
+@ref{CTIME}, @ref{LTIME}, @ref{TIME}, @ref{TIME8}
 
 @end table
 
@@ -4138,30 +4456,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
@@ -4176,7 +4510,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = HUGE(X)}
+@code{RESULT = HUGE(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4199,7 +4533,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)
 
@@ -4215,7 +4549,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = IACHAR(C)}
+@code{RESULT = IACHAR(C)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4242,13 +4576,13 @@ end program test_iachar
 
 @node IAND
 @section @code{IAND} --- Bitwise logical and
-@findex @code{IAND} intrinsic
+@cindex @code{IAND} intrinsic
 @cindex bit operations
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+Bitwise logical @code{AND}.
+
 @item @emph{Standard}:
 F95 and later
 
@@ -4256,53 +4590,89 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
+@code{RESULT = IAND(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}:
+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}:
-@item @emph{Specific names}:
+@smallexample
+PROGRAM test_iand
+  INTEGER :: a, b
+  DATA a / Z'F' /, b / Z'3' /
+  WRITE (*,*) IAND(a, b)
+END PROGRAM
+@end smallexample
 
 @item @emph{See also}:
-@ref{IOR}, @ref{IEOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR},
-@end table
+@ref{IOR}, @ref{IEOR}, @ref{IBITS}, @ref{IBSET}, @ref{IBCLR}, @ref{NOT}
 
+@end table
 
 
 
 @node IARGC
-@section @code{IARGC} --- Get number of command line arguments
-@findex @code{IARGC} intrinsic
-@cindex undocumented intrinsic 
-
-Intrinsic implemented, documentation pending.
+@section @code{IARGC} --- Get the number of command line arguments
+@cindex @code{IARGC} intrinsic
+@cindex command-line arguments, to program
 
 @table @asis
 @item @emph{Description}:
+@code{IARGC()} returns the number of arguments passed on the
+command line when the containing program was invoked.
+
+This intrinsic routine is provided for backwards compatibility with 
+GNU Fortran 77.  In new code, programmers should consider the use of 
+the @ref{COMMAND_ARGUMENT_COUNT} intrinsic defined by the Fortran 2003 
+standard.
+
 @item @emph{Standard}:
 GNU extension
 
 @item @emph{Class}:
+Non-elemental Function
+
 @item @emph{Syntax}:
+@code{RESULT = IARGC()}
+
 @item @emph{Arguments}:
+None.
+
 @item @emph{Return value}:
+The number of command line arguments, type @code{INTEGER(4)}.
+
 @item @emph{Example}:
-@item @emph{Specific names}:
+See @ref{GETARG}
+
 @item @emph{See also}:
-@ref{GETARG}, @ref{GET_COMMAND}, @ref{COMMAND_ARGUMENT_COUNT}, @ref{GET_COMMAND_ARGUMENT}
+GNU Fortran 77 compatibility subroutine: @ref{GETARG}
 
+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
 
@@ -4310,27 +4680,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
 
@@ -4338,27 +4719,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
 
@@ -4366,13 +4755,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
 
@@ -4380,7 +4776,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
@@ -4397,7 +4793,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{I = ICHAR(C)}
+@code{RESULT = ICHAR(C)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4438,7 +4834,7 @@ end program read_val
 
 @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}:
@@ -4481,13 +4877,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
 
@@ -4495,35 +4892,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}
@@ -4531,16 +4944,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
 
@@ -4548,21 +4963,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
@@ -4576,15 +5002,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}:
@@ -4595,7 +5021,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)
@@ -4624,16 +5050,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
 
@@ -4641,13 +5067,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
 
 
@@ -4655,8 +5091,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}:
@@ -4674,7 +5110,7 @@ GNU extension
 non-elemental function
 
 @item @emph{Syntax}:
-@code{I = IRAND(FLAG)}
+@code{RESULT = IRAND(FLAG)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -4701,13 +5137,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
 
@@ -4715,10 +5157,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}
@@ -4729,13 +5178,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
 
@@ -4743,10 +5199,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}
@@ -4756,7 +5222,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}:
@@ -4800,24 +5266,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}
@@ -4827,7 +5299,7 @@ Subroutine
 
 @node KIND
 @section @code{KIND} --- Kind of an entity
-@findex @code{KIND} intrinsic
+@cindex @code{KIND} intrinsic
 
 @table @asis
 @item @emph{Description}:
@@ -4869,13 +5341,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
 
@@ -4883,25 +5354,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
 
@@ -4909,10 +5394,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}
@@ -4920,16 +5411,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
 
@@ -4937,9 +5426,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}
@@ -4947,16 +5443,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
 
@@ -4964,9 +5471,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}
@@ -4974,16 +5489,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
 
@@ -4991,9 +5517,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}
@@ -5001,16 +5535,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
 
@@ -5018,27 +5556,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
 
@@ -5046,9 +5599,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}
@@ -5056,16 +5617,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
 
@@ -5073,9 +5645,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}
@@ -5083,37 +5663,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}:
@@ -5126,7 +5713,7 @@ GNU extension
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = LOC(X)}
+@code{RESULT = LOC(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5134,8 +5721,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
@@ -5148,14 +5736,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
@@ -5169,7 +5759,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = LOG(X)}
+@code{RESULT = LOG(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5206,9 +5796,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
@@ -5222,7 +5812,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = LOG10(X)}
+@code{RESULT = LOG10(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5251,15 +5841,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
 
@@ -5267,11 +5858,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
 
 
@@ -5279,55 +5882,131 @@ 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}:
-@uref{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19292, g77 features lacking in gfortran}
+@ref{ISHFT}, @ref{ISHFTC}, @ref{RSHIFT}
 
 @end table
 
 
-
-@node LTIME
-@section @code{LTIME} --- Convert time to local time info
-@findex @code{LTIME} 
-@cindex time function
-
-Not yet implemented in GNU Fortran.
+@node LSTAT
+@section @code{LSTAT} --- Get file status
+@cindex @code{LSTAT} intrinsic
+@cindex file system operations 
 
 @table @asis
 @item @emph{Description}:
+@code{LSTAT} is identical to @ref{STAT}, except that if path is a symbolic link, 
+then the link itself is statted, not the file that it refers to.
+
+The elements in @code{BUFF} are the same as described by @ref{STAT}.
 
 @item @emph{Standard}:
 GNU extension
 
 @item @emph{Class}:
-Subroutine
+Non-elemental subroutine
 
 @item @emph{Syntax}:
+@code{CALL LSTAT(FILE, BUFF [, STATUS])}
+
 @item @emph{Arguments}:
-@item @emph{Return value}:
-@item @emph{Example}:
-@item @emph{Specific names}:
+@multitable @columnfractions .15 .80
+@item @var{FILE}   @tab The type shall be @code{CHARACTER(*)}, a valid path within the file system.
+@item @var{BUFF}   @tab The type shall be @code{INTEGER(4), DIMENSION(13)}.
+@item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER(4)}. Returns 0 
+                        on success and a system specific error code otherwise.
+@end multitable
+
+@item @emph{Example}:
+See @ref{STAT} for an example.
+
 @item @emph{See also}:
-@uref{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19292, g77 features lacking in gfortran}
+To stat an open file: @ref{FSTAT}, to stat a file: @ref{STAT}
+@end table
+
+
+
+@node LTIME
+@section @code{LTIME} --- Convert time to local time info
+@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
+
+@item @emph{Class}:
+Subroutine
+
+@item @emph{Syntax}:
+@code{CALL LTIME(STIME, TARRAY)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .80
+@item @var{STIME}  @tab An @code{INTEGER(*)} scalar expression
+                        corresponding to a system time, with 
+                       @code{INTENT(IN)}.
+@item @var{TARRAY} @tab A default @code{INTEGER} array with 9 elements,
+                        with @code{INTENT(OUT)}.
+@end multitable
+
+@item @emph{Return value}:
+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
 
@@ -5335,8 +6014,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}:
@@ -5398,15 +6077,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
 
@@ -5414,22 +6094,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
 
@@ -5437,9 +6137,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
@@ -5452,14 +6164,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}:
@@ -5473,7 +6188,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = MAXEXPONENT(X)}
+@code{RESULT = MAXEXPONENT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5497,15 +6212,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
 
@@ -5513,35 +6238,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}
@@ -5549,40 +6323,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
 
@@ -5590,9 +6372,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
@@ -5605,13 +6399,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}:
@@ -5625,7 +6420,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = MINEXPONENT(X)}
+@code{RESULT = MINEXPONENT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -5641,15 +6436,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
 
@@ -5657,9 +6462,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}
@@ -5667,15 +6494,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
 
@@ -5683,22 +6517,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
@@ -5713,7 +6567,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
@@ -5758,7 +6612,7 @@ end program test_mod
 
 @node MODULO
 @section @code{MODULO} --- Modulo function
-@findex @code{MODULO} intrinsic
+@cindex @code{MODULO} intrinsic
 @cindex modulo
 
 @table @asis
@@ -5772,7 +6626,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
@@ -5810,43 +6664,19 @@ 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}:
 @code{MOVE_ALLOC(SRC, DEST)} moves the allocation from @var{SRC} to
 @var{DEST}.  @var{SRC} will become deallocated in the process.
 
-@item @emph{Option}:
-f2003, gnu
+@item @emph{Standard}:
+F2003 and later
 
 @item @emph{Class}:
 Subroutine
@@ -5856,8 +6686,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}:
@@ -5879,9 +6711,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
@@ -5896,7 +6772,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
@@ -5927,12 +6803,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
@@ -5941,7 +6817,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
@@ -5966,8 +6842,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
@@ -5981,7 +6857,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = NINT(X)}
+@code{RESULT = NINT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6018,24 +6894,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
 
 
@@ -6043,7 +6929,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.
@@ -6069,7 +6955,7 @@ Transformational function
 
 @node OR
 @section @code{OR} --- Bitwise logical OR
-@findex @code{OR} intrinsic
+@cindex @code{OR} intrinsic
 @cindex bit operations
 
 @table @asis
@@ -6120,7 +7006,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.
@@ -6144,16 +7030,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
 
@@ -6161,21 +7047,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}:
@@ -6189,7 +7077,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = PRECISION(X)}
+@code{RESULT = PRECISION(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6216,7 +7104,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.
@@ -6238,10 +7126,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.
@@ -6265,10 +7152,9 @@ Transformational function
 
 
 
-
 @node RADIX
 @section @code{RADIX} --- Base of a model number
-@findex @code{RADIX} intrinsic
+@cindex @code{RADIX} intrinsic
 @cindex base
 
 @table @asis
@@ -6279,35 +7165,106 @@ Transformational function
 F95 and later
 
 @item @emph{Class}:
-Inquiry function
+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{RAND}, @ref{RANDOM_NUMBER}
+@end table
+
+
+
+@node RAND
+@section @code{RAND} --- Real pseudo-random number
+@cindex @code{RAND} intrinsic
+@cindex random numbers
+
+@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{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.
@@ -6330,10 +7287,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.
@@ -6356,64 +7312,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}:
@@ -6427,7 +7329,7 @@ F95 and later
 Inquiry function
 
 @item @emph{Syntax}:
-@code{I = RANGE(X)}
+@code{RESULT = RANGE(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6444,25 +7346,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
@@ -6479,16 +7366,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}:
@@ -6522,15 +7410,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
 
@@ -6538,18 +7432,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.
@@ -6574,7 +7475,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.
@@ -6599,7 +7500,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}:
@@ -6613,7 +7514,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = RRSPACING(X)}
+@code{RESULT = RRSPACING(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6631,26 +7532,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}:
-@uref{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19292, g77 features lacking in gfortran}
+@ref{ISHFT}, @ref{ISHFTC}, @ref{LSHIFT}
 
 @end table
 
@@ -6658,7 +7574,7 @@ Function
 
 @node SCALE
 @section @code{SCALE} --- Scale a real value
-@findex @code{SCALE} intrinsic
+@cindex @code{SCALE} intrinsic
 
 @table @asis
 @item @emph{Description}:
@@ -6671,7 +7587,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
@@ -6697,7 +7613,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.
@@ -6722,8 +7638,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}:
@@ -6739,7 +7656,7 @@ GNU extension
 function
 
 @item @emph{Syntax}:
-@code{T = SECNDS (X)}
+@code{RESULT = SECNDS (X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -6769,7 +7686,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
@@ -6786,9 +7703,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
@@ -6816,7 +7731,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
@@ -6832,9 +7747,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
@@ -6880,13 +7793,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
@@ -6895,7 +7808,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
@@ -6924,7 +7837,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.
@@ -6947,12 +7860,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
@@ -6966,7 +7878,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
@@ -7004,8 +7916,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}:
@@ -7025,10 +7937,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}:
@@ -7042,7 +7953,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
@@ -7060,13 +7971,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
@@ -7080,7 +7990,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = SIN(X)}
+@code{RESULT = SIN(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7116,8 +8026,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
@@ -7131,7 +8041,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = SINH(X)}
+@code{RESULT = SINH(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7163,7 +8073,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.
@@ -7187,7 +8097,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
@@ -7203,7 +8113,7 @@ GNU extension
 function
 
 @item @emph{Syntax}:
-@code{X = SNGL(A)}
+@code{RESULT = SNGL(A)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7221,7 +8131,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.
@@ -7246,7 +8156,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.
@@ -7271,11 +8181,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
@@ -7289,7 +8199,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = SQRT(X)}
+@code{RESULT = SQRT(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7325,8 +8235,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}:
@@ -7369,33 +8279,91 @@ 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
 
-Intrinsic implemented, documentation pending.
-
 @table @asis
 @item @emph{Description}:
+This function returns information about a file. No permissions are required on 
+the file itself, but execute (search) permission is required on all of the 
+directories in path that lead to the file.
+
+The elements that are obtained and stored in the array @code{BUFF}:
+@multitable @columnfractions .15 .80
+@item @code{buff(1)}   @tab  Device ID 
+@item @code{buff(2)}   @tab  Inode number 
+@item @code{buff(3)}   @tab  File mode 
+@item @code{buff(4)}   @tab  Number of links 
+@item @code{buff(5)}   @tab  Owner's uid 
+@item @code{buff(6)}   @tab  Owner's gid 
+@item @code{buff(7)}   @tab  ID of device containing directory entry for file (0 if not available) 
+@item @code{buff(8)}   @tab  File size (bytes) 
+@item @code{buff(9)}   @tab  Last access time 
+@item @code{buff(10)}  @tab  Last modification time 
+@item @code{buff(11)}  @tab  Last file status change time 
+@item @code{buff(12)}  @tab  Preferred I/O block size (-1 if not available) 
+@item @code{buff(13)}  @tab  Number of blocks allocated (-1 if not available)
+@end multitable
+
+Not all these elements are relevant on all systems. 
+If an element is not relevant, it is returned as 0.
+
+
 @item @emph{Standard}:
 GNU extension
 
 @item @emph{Class}:
+Non-elemental subroutine
+
 @item @emph{Syntax}:
+@code{CALL STAT(FILE,BUFF[,STATUS])}
+
 @item @emph{Arguments}:
-@item @emph{Return value}:
+@multitable @columnfractions .15 .80
+@item @var{FILE}   @tab The type shall be @code{CHARACTER(*)}, a valid path within the file system.
+@item @var{BUFF}   @tab The type shall be @code{INTEGER(4), DIMENSION(13)}.
+@item @var{STATUS} @tab (Optional) status flag of type @code{INTEGER(4)}. Returns 0 
+                        on success and a system specific error code otherwise.
+@end multitable
+
 @item @emph{Example}:
+@smallexample
+PROGRAM test_stat
+  INTEGER, DIMENSION(13) :: buff
+  INTEGER :: status
+
+  CALL STAT("/etc/passwd", buff, status)
+
+  IF (status == 0) THEN
+    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
+
 @item @emph{See also}:
-@ref{FSTAT}
+To stat an open file: @ref{FSTAT}, to stat a link: @ref{LSTAT}
 @end table
 
 
 
-
 @node SUM
 @section @code{SUM} --- Sum of array elements
-@findex @code{SUM} intrinsic
+@cindex @code{SUM} intrinsic
 @cindex array manipulation
 
 Intrinsic implemented, documentation pending.
@@ -7418,39 +8386,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
 
@@ -7458,19 +8443,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.
 
@@ -7493,8 +8483,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
@@ -7508,7 +8498,7 @@ F77 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{X = TAN(X)}
+@code{RESULT = TAN(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7541,8 +8531,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
@@ -7589,13 +8579,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
 
@@ -7603,17 +8645,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
@@ -7628,7 +8674,7 @@ F95 and later
 Elemental function
 
 @item @emph{Syntax}:
-@code{Y = TINY(X)}
+@code{RESULT = TINY(X)}
 
 @item @emph{Arguments}:
 @multitable @columnfractions .15 .80
@@ -7646,8 +8692,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.
 
@@ -7668,10 +8714,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.
@@ -7693,10 +8738,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.
@@ -7718,17 +8762,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
 
@@ -7736,10 +8777,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}
@@ -7747,16 +8800,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
 
@@ -7764,25 +8817,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
 
@@ -7790,42 +8850,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.
@@ -7849,10 +8890,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.
@@ -7874,9 +8914,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