@c This file is automatically derived from intdoc.c, intdoc.in,
@c ansify.c, intrin.def, and intrin.h.  Edit those files instead.
@menu
@ifset familyF2U
* Abort Intrinsic::     Abort the program.
@end ifset
@ifset familyF77
* Abs Intrinsic::       Absolute value.
@end ifset
@ifset familyF2U
* Access Intrinsic::    Check file accessibility.
@end ifset
@ifset familyASC
* AChar Intrinsic::     ASCII character from code.
@end ifset
@ifset familyF77
* ACos Intrinsic::      Arc cosine.
@end ifset
@ifset familyVXT
* ACosD Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF90
* AdjustL Intrinsic::   (Reserved for future use.)
* AdjustR Intrinsic::   (Reserved for future use.)
@end ifset
@ifset familyF77
* AImag Intrinsic::     Convert/extract imaginary part of complex.
@end ifset
@ifset familyVXT
* AIMax0 Intrinsic::    (Reserved for future use.)
* AIMin0 Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* AInt Intrinsic::      Truncate to whole number.
@end ifset
@ifset familyVXT
* AJMax0 Intrinsic::    (Reserved for future use.)
* AJMin0 Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF2U
* Alarm Intrinsic::     Execute a routine after a given delay.
@end ifset
@ifset familyF90
* All Intrinsic::       (Reserved for future use.)
* Allocated Intrinsic:: (Reserved for future use.)
@end ifset
@ifset familyF77
* ALog Intrinsic::      Natural logarithm (archaic).
* ALog10 Intrinsic::    Common logarithm (archaic).
* AMax0 Intrinsic::     Maximum value (archaic).
* AMax1 Intrinsic::     Maximum value (archaic).
* AMin0 Intrinsic::     Minimum value (archaic).
* AMin1 Intrinsic::     Minimum value (archaic).
* AMod Intrinsic::      Remainder (archaic).
@end ifset
@ifset familyF2C
* And Intrinsic::       Boolean AND.
@end ifset
@ifset familyF77
* ANInt Intrinsic::     Round to nearest whole number.
@end ifset
@ifset familyF90
* Any Intrinsic::       (Reserved for future use.)
@end ifset
@ifset familyF77
* ASin Intrinsic::      Arc sine.
@end ifset
@ifset familyVXT
* ASinD Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF90
* Associated Intrinsic:: (Reserved for future use.)
@end ifset
@ifset familyF77
* ATan Intrinsic::      Arc tangent.
* ATan2 Intrinsic::     Arc tangent.
@end ifset
@ifset familyVXT
* ATan2D Intrinsic::    (Reserved for future use.)
* ATanD Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF2U
* BesJ0 Intrinsic::     Bessel function.
* BesJ1 Intrinsic::     Bessel function.
* BesJN Intrinsic::     Bessel function.
* BesY0 Intrinsic::     Bessel function.
* BesY1 Intrinsic::     Bessel function.
* BesYN Intrinsic::     Bessel function.
@end ifset
@ifset familyVXT
* BITest Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF90
* Bit_Size Intrinsic::  Number of bits in argument's type.
@end ifset
@ifset familyVXT
* BJTest Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyMIL
* BTest Intrinsic::     Test bit.
@end ifset
@ifset familyF77
* CAbs Intrinsic::      Absolute value (archaic).
* CCos Intrinsic::      Cosine (archaic).
@end ifset
@ifset familyFVZ
* CDAbs Intrinsic::     Absolute value (archaic).
* CDCos Intrinsic::     Cosine (archaic).
* CDExp Intrinsic::     Exponential (archaic).
* CDLog Intrinsic::     Natural logarithm (archaic).
* CDSin Intrinsic::     Sine (archaic).
* CDSqRt Intrinsic::    Square root (archaic).
@end ifset
@ifset familyF90
* Ceiling Intrinsic::   (Reserved for future use.)
@end ifset
@ifset familyF77
* CExp Intrinsic::      Exponential (archaic).
* Char Intrinsic::      Character from code.
@end ifset
@ifset familyF2U
* ChDir Intrinsic (subroutine):: Change directory.
@end ifset
@ifset familyBADU77
* ChDir Intrinsic (function):: Change directory.
@end ifset
@ifset familyF2U
* ChMod Intrinsic (subroutine):: Change file modes.
@end ifset
@ifset familyBADU77
* ChMod Intrinsic (function):: Change file modes.
@end ifset
@ifset familyF77
* CLog Intrinsic::      Natural logarithm (archaic).
* Cmplx Intrinsic::     Construct @code{COMPLEX(KIND=1)} value.
@end ifset
@ifset familyGNU
* Complex Intrinsic::   Build complex value from real and
                         imaginary parts.
@end ifset
@ifset familyF77
* Conjg Intrinsic::     Complex conjugate.
* Cos Intrinsic::       Cosine.
@end ifset
@ifset familyVXT
* CosD Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF77
* CosH Intrinsic::      Hyperbolic cosine.
@end ifset
@ifset familyF90
* Count Intrinsic::     (Reserved for future use.)
* CPU_Time Intrinsic::  Get current CPU time.
* CShift Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* CSin Intrinsic::      Sine (archaic).
* CSqRt Intrinsic::     Square root (archaic).
@end ifset
@ifset familyF2U
* CTime Intrinsic (subroutine):: Convert time to Day Mon dd hh:mm:ss yyyy.
* CTime Intrinsic (function):: Convert time to Day Mon dd hh:mm:ss yyyy.
@end ifset
@ifset familyF77
* DAbs Intrinsic::      Absolute value (archaic).
* DACos Intrinsic::     Arc cosine (archaic).
@end ifset
@ifset familyVXT
* DACosD Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* DASin Intrinsic::     Arc sine (archaic).
@end ifset
@ifset familyVXT
* DASinD Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* DATan Intrinsic::     Arc tangent (archaic).
* DATan2 Intrinsic::    Arc tangent (archaic).
@end ifset
@ifset familyVXT
* DATan2D Intrinsic::   (Reserved for future use.)
* DATanD Intrinsic::    (Reserved for future use.)
* Date Intrinsic::      Get current date as dd-Mon-yy.
@end ifset
@ifset familyF90
* Date_and_Time Intrinsic:: Get the current date and time.
@end ifset
@ifset familyF2U
* DbesJ0 Intrinsic::    Bessel function (archaic).
* DbesJ1 Intrinsic::    Bessel function (archaic).
* DbesJN Intrinsic::    Bessel function (archaic).
* DbesY0 Intrinsic::    Bessel function (archaic).
* DbesY1 Intrinsic::    Bessel function (archaic).
* DbesYN Intrinsic::    Bessel function (archaic).
@end ifset
@ifset familyF77
* Dble Intrinsic::      Convert to double precision.
@end ifset
@ifset familyVXT
* DbleQ Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyFVZ
* DCmplx Intrinsic::    Construct @code{COMPLEX(KIND=2)} value.
* DConjg Intrinsic::    Complex conjugate (archaic).
@end ifset
@ifset familyF77
* DCos Intrinsic::      Cosine (archaic).
@end ifset
@ifset familyVXT
* DCosD Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF77
* DCosH Intrinsic::     Hyperbolic cosine (archaic).
* DDiM Intrinsic::      Difference magnitude (archaic).
@end ifset
@ifset familyF2U
* DErF Intrinsic::      Error function (archaic).
* DErFC Intrinsic::     Complementary error function (archaic).
@end ifset
@ifset familyF77
* DExp Intrinsic::      Exponential (archaic).
@end ifset
@ifset familyFVZ
* DFloat Intrinsic::    Conversion (archaic).
@end ifset
@ifset familyVXT
* DFlotI Intrinsic::    (Reserved for future use.)
* DFlotJ Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF90
* Digits Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* DiM Intrinsic::       Difference magnitude (non-negative subtract).
@end ifset
@ifset familyFVZ
* DImag Intrinsic::     Convert/extract imaginary part of complex (archaic).
@end ifset
@ifset familyF77
* DInt Intrinsic::      Truncate to whole number (archaic).
* DLog Intrinsic::      Natural logarithm (archaic).
* DLog10 Intrinsic::    Common logarithm (archaic).
* DMax1 Intrinsic::     Maximum value (archaic).
* DMin1 Intrinsic::     Minimum value (archaic).
* DMod Intrinsic::      Remainder (archaic).
* DNInt Intrinsic::     Round to nearest whole number (archaic).
@end ifset
@ifset familyF90
* Dot_Product Intrinsic:: (Reserved for future use.)
@end ifset
@ifset familyF77
* DProd Intrinsic::     Double-precision product.
@end ifset
@ifset familyVXT
* DReal Intrinsic::     Convert value to type @code{REAL(KIND=2)}.
@end ifset
@ifset familyF77
* DSign Intrinsic::     Apply sign to magnitude (archaic).
* DSin Intrinsic::      Sine (archaic).
@end ifset
@ifset familyVXT
* DSinD Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF77
* DSinH Intrinsic::     Hyperbolic sine (archaic).
* DSqRt Intrinsic::     Square root (archaic).
* DTan Intrinsic::      Tangent (archaic).
@end ifset
@ifset familyVXT
* DTanD Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF77
* DTanH Intrinsic::     Hyperbolic tangent (archaic).
@end ifset
@ifset familyF2U
* DTime Intrinsic (subroutine):: Get elapsed time since last time.
@end ifset
@ifset familyBADU77
* DTime Intrinsic (function):: Get elapsed time since last time.
@end ifset
@ifset familyF90
* EOShift Intrinsic::   (Reserved for future use.)
* Epsilon Intrinsic::   (Reserved for future use.)
@end ifset
@ifset familyF2U
* ErF Intrinsic::       Error function.
* ErFC Intrinsic::      Complementary error function.
* ETime Intrinsic (subroutine):: Get elapsed time for process.
* ETime Intrinsic (function):: Get elapsed time for process.
* Exit Intrinsic::      Terminate the program.
@end ifset
@ifset familyF77
* Exp Intrinsic::       Exponential.
@end ifset
@ifset familyF90
* Exponent Intrinsic::  (Reserved for future use.)
@end ifset
@ifset familyF2U
* FDate Intrinsic (subroutine):: Get current time as Day Mon dd hh:mm:ss yyyy.
* FDate Intrinsic (function):: Get current time as Day Mon dd hh:mm:ss yyyy.
* FGet Intrinsic (subroutine):: Read a character from unit 5 stream-wise.
@end ifset
@ifset familyBADU77
* FGet Intrinsic (function):: Read a character from unit 5 stream-wise.
@end ifset
@ifset familyF2U
* FGetC Intrinsic (subroutine):: Read a character stream-wise.
@end ifset
@ifset familyBADU77
* FGetC Intrinsic (function):: Read a character stream-wise.
@end ifset
@ifset familyF77
* Float Intrinsic::     Conversion (archaic).
@end ifset
@ifset familyVXT
* FloatI Intrinsic::    (Reserved for future use.)
* FloatJ Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF90
* Floor Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF2U
* Flush Intrinsic::     Flush buffered output.
* FNum Intrinsic::      Get file descriptor from Fortran unit number.
* FPut Intrinsic (subroutine):: Write a character to unit 6 stream-wise.
@end ifset
@ifset familyBADU77
* FPut Intrinsic (function):: Write a character to unit 6 stream-wise.
@end ifset
@ifset familyF2U
* FPutC Intrinsic (subroutine):: Write a character stream-wise.
@end ifset
@ifset familyBADU77
* FPutC Intrinsic (function):: Write a character stream-wise.
@end ifset
@ifset familyF90
* Fraction Intrinsic::  (Reserved for future use.)
@end ifset
@ifset familyF2U
* FSeek Intrinsic::     Position file (low-level).
* FStat Intrinsic (subroutine):: Get file information.
* FStat Intrinsic (function):: Get file information.
* FTell Intrinsic (subroutine):: Get file position (low-level).
* FTell Intrinsic (function):: Get file position (low-level).
* GError Intrinsic::    Get error message for last error.
* GetArg Intrinsic::    Obtain command-line argument.
* GetCWD Intrinsic (subroutine):: Get current working directory.
* GetCWD Intrinsic (function):: Get current working directory.
* GetEnv Intrinsic::    Get environment variable.
* GetGId Intrinsic::    Get process group id.
* GetLog Intrinsic::    Get login name.
* GetPId Intrinsic::    Get process id.
* GetUId Intrinsic::    Get process user id.
* GMTime Intrinsic::    Convert time to GMT time info.
* HostNm Intrinsic (subroutine):: Get host name.
* HostNm Intrinsic (function):: Get host name.
@end ifset
@ifset familyF90
* Huge Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF77
* IAbs Intrinsic::      Absolute value (archaic).
@end ifset
@ifset familyASC
* IAChar Intrinsic::    ASCII code for character.
@end ifset
@ifset familyMIL
* IAnd Intrinsic::      Boolean AND.
@end ifset
@ifset familyF2U
* IArgC Intrinsic::     Obtain count of command-line arguments.
@end ifset
@ifset familyMIL
* IBClr Intrinsic::     Clear a bit.
* IBits Intrinsic::     Extract a bit subfield of a variable.
* IBSet Intrinsic::     Set a bit.
@end ifset
@ifset familyF77
* IChar Intrinsic::     Code for character.
@end ifset
@ifset familyF2U
* IDate Intrinsic (UNIX):: Get local time info.
@end ifset
@ifset familyVXT
* IDate Intrinsic (VXT):: Get local time info (VAX/VMS).
@end ifset
@ifset familyF77
* IDiM Intrinsic::      Difference magnitude (archaic).
* IDInt Intrinsic::     Convert to @code{INTEGER} value truncated
                         to whole number (archaic).
* IDNInt Intrinsic::    Convert to @code{INTEGER} value rounded
                         to nearest whole number (archaic).
@end ifset
@ifset familyMIL
* IEOr Intrinsic::      Boolean XOR.
@end ifset
@ifset familyF2U
* IErrNo Intrinsic::    Get error number for last error.
@end ifset
@ifset familyF77
* IFix Intrinsic::      Conversion (archaic).
@end ifset
@ifset familyVXT
* IIAbs Intrinsic::     (Reserved for future use.)
* IIAnd Intrinsic::     (Reserved for future use.)
* IIBClr Intrinsic::    (Reserved for future use.)
* IIBits Intrinsic::    (Reserved for future use.)
* IIBSet Intrinsic::    (Reserved for future use.)
* IIDiM Intrinsic::     (Reserved for future use.)
* IIDInt Intrinsic::    (Reserved for future use.)
* IIDNnt Intrinsic::    (Reserved for future use.)
* IIEOr Intrinsic::     (Reserved for future use.)
* IIFix Intrinsic::     (Reserved for future use.)
* IInt Intrinsic::      (Reserved for future use.)
* IIOr Intrinsic::      (Reserved for future use.)
* IIQint Intrinsic::    (Reserved for future use.)
* IIQNnt Intrinsic::    (Reserved for future use.)
* IIShftC Intrinsic::   (Reserved for future use.)
* IISign Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF2C
* Imag Intrinsic::      Extract imaginary part of complex.
@end ifset
@ifset familyGNU
* ImagPart Intrinsic::  Extract imaginary part of complex.
@end ifset
@ifset familyVXT
* IMax0 Intrinsic::     (Reserved for future use.)
* IMax1 Intrinsic::     (Reserved for future use.)
* IMin0 Intrinsic::     (Reserved for future use.)
* IMin1 Intrinsic::     (Reserved for future use.)
* IMod Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF77
* Index Intrinsic::     Locate a CHARACTER substring.
@end ifset
@ifset familyVXT
* INInt Intrinsic::     (Reserved for future use.)
* INot Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF77
* Int Intrinsic::       Convert to @code{INTEGER} value truncated
                         to whole number.
@end ifset
@ifset familyGNU
* Int2 Intrinsic::      Convert to @code{INTEGER(KIND=6)} value
                         truncated to whole number.
* Int8 Intrinsic::      Convert to @code{INTEGER(KIND=2)} value
                         truncated to whole number.
@end ifset
@ifset familyMIL
* IOr Intrinsic::       Boolean OR.
@end ifset
@ifset familyF2U
* IRand Intrinsic::     Random number.
* IsaTty Intrinsic::    Is unit connected to a terminal?
@end ifset
@ifset familyMIL
* IShft Intrinsic::     Logical bit shift.
* IShftC Intrinsic::    Circular bit shift.
@end ifset
@ifset familyF77
* ISign Intrinsic::     Apply sign to magnitude (archaic).
@end ifset
@ifset familyF2U
* ITime Intrinsic::     Get local time of day.
@end ifset
@ifset familyVXT
* IZExt Intrinsic::     (Reserved for future use.)
* JIAbs Intrinsic::     (Reserved for future use.)
* JIAnd Intrinsic::     (Reserved for future use.)
* JIBClr Intrinsic::    (Reserved for future use.)
* JIBits Intrinsic::    (Reserved for future use.)
* JIBSet Intrinsic::    (Reserved for future use.)
* JIDiM Intrinsic::     (Reserved for future use.)
* JIDInt Intrinsic::    (Reserved for future use.)
* JIDNnt Intrinsic::    (Reserved for future use.)
* JIEOr Intrinsic::     (Reserved for future use.)
* JIFix Intrinsic::     (Reserved for future use.)
* JInt Intrinsic::      (Reserved for future use.)
* JIOr Intrinsic::      (Reserved for future use.)
* JIQint Intrinsic::    (Reserved for future use.)
* JIQNnt Intrinsic::    (Reserved for future use.)
* JIShft Intrinsic::    (Reserved for future use.)
* JIShftC Intrinsic::   (Reserved for future use.)
* JISign Intrinsic::    (Reserved for future use.)
* JMax0 Intrinsic::     (Reserved for future use.)
* JMax1 Intrinsic::     (Reserved for future use.)
* JMin0 Intrinsic::     (Reserved for future use.)
* JMin1 Intrinsic::     (Reserved for future use.)
* JMod Intrinsic::      (Reserved for future use.)
* JNInt Intrinsic::     (Reserved for future use.)
* JNot Intrinsic::      (Reserved for future use.)
* JZExt Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF2U
* Kill Intrinsic (subroutine):: Signal a process.
@end ifset
@ifset familyBADU77
* Kill Intrinsic (function):: Signal a process.
@end ifset
@ifset familyF90
* Kind Intrinsic::      (Reserved for future use.)
* LBound Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* Len Intrinsic::       Length of character entity.
@end ifset
@ifset familyF90
* Len_Trim Intrinsic::  Get last non-blank character in string.
@end ifset
@ifset familyF77
* LGe Intrinsic::       Lexically greater than or equal.
* LGt Intrinsic::       Lexically greater than.
@end ifset
@ifset familyF2U
* Link Intrinsic (subroutine):: Make hard link in file system.
@end ifset
@ifset familyBADU77
* Link Intrinsic (function):: Make hard link in file system.
@end ifset
@ifset familyF77
* LLe Intrinsic::       Lexically less than or equal.
* LLt Intrinsic::       Lexically less than.
@end ifset
@ifset familyF2U
* LnBlnk Intrinsic::    Get last non-blank character in string.
* Loc Intrinsic::       Address of entity in core.
@end ifset
@ifset familyF77
* Log Intrinsic::       Natural logarithm.
* Log10 Intrinsic::     Common logarithm.
@end ifset
@ifset familyF90
* Logical Intrinsic::   (Reserved for future use.)
@end ifset
@ifset familyF2U
* Long Intrinsic::      Conversion to @code{INTEGER(KIND=1)} (archaic).
@end ifset
@ifset familyF2C
* LShift Intrinsic::    Left-shift bits.
@end ifset
@ifset familyF2U
* LStat Intrinsic (subroutine):: Get file information.
* LStat Intrinsic (function):: Get file information.
* LTime Intrinsic::     Convert time to local time info.
@end ifset
@ifset familyF90
* MatMul Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* Max Intrinsic::       Maximum value.
* Max0 Intrinsic::      Maximum value (archaic).
* Max1 Intrinsic::      Maximum value (archaic).
@end ifset
@ifset familyF90
* MaxExponent Intrinsic:: (Reserved for future use.)
* MaxLoc Intrinsic::    (Reserved for future use.)
* MaxVal Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF2U
* MClock Intrinsic::    Get number of clock ticks for process.
* MClock8 Intrinsic::   Get number of clock ticks for process.
@end ifset
@ifset familyF90
* Merge Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF77
* Min Intrinsic::       Minimum value.
* Min0 Intrinsic::      Minimum value (archaic).
* Min1 Intrinsic::      Minimum value (archaic).
@end ifset
@ifset familyF90
* MinExponent Intrinsic:: (Reserved for future use.)
* MinLoc Intrinsic::    (Reserved for future use.)
* MinVal Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* Mod Intrinsic::       Remainder.
@end ifset
@ifset familyF90
* Modulo Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyMIL
* MvBits Intrinsic::    Moving a bit field.
@end ifset
@ifset familyF90
* Nearest Intrinsic::   (Reserved for future use.)
@end ifset
@ifset familyF77
* NInt Intrinsic::      Convert to @code{INTEGER} value rounded
                         to nearest whole number.
@end ifset
@ifset familyMIL
* Not Intrinsic::       Boolean NOT.
@end ifset
@ifset familyF2C
* Or Intrinsic::        Boolean OR.
@end ifset
@ifset familyF90
* Pack Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF2U
* PError Intrinsic::    Print error message for last error.
@end ifset
@ifset familyF90
* Precision Intrinsic:: (Reserved for future use.)
* Present Intrinsic::   (Reserved for future use.)
* Product Intrinsic::   (Reserved for future use.)
@end ifset
@ifset familyVXT
* QAbs Intrinsic::      (Reserved for future use.)
* QACos Intrinsic::     (Reserved for future use.)
* QACosD Intrinsic::    (Reserved for future use.)
* QASin Intrinsic::     (Reserved for future use.)
* QASinD Intrinsic::    (Reserved for future use.)
* QATan Intrinsic::     (Reserved for future use.)
* QATan2 Intrinsic::    (Reserved for future use.)
* QATan2D Intrinsic::   (Reserved for future use.)
* QATanD Intrinsic::    (Reserved for future use.)
* QCos Intrinsic::      (Reserved for future use.)
* QCosD Intrinsic::     (Reserved for future use.)
* QCosH Intrinsic::     (Reserved for future use.)
* QDiM Intrinsic::      (Reserved for future use.)
* QExp Intrinsic::      (Reserved for future use.)
* QExt Intrinsic::      (Reserved for future use.)
* QExtD Intrinsic::     (Reserved for future use.)
* QFloat Intrinsic::    (Reserved for future use.)
* QInt Intrinsic::      (Reserved for future use.)
* QLog Intrinsic::      (Reserved for future use.)
* QLog10 Intrinsic::    (Reserved for future use.)
* QMax1 Intrinsic::     (Reserved for future use.)
* QMin1 Intrinsic::     (Reserved for future use.)
* QMod Intrinsic::      (Reserved for future use.)
* QNInt Intrinsic::     (Reserved for future use.)
* QSin Intrinsic::      (Reserved for future use.)
* QSinD Intrinsic::     (Reserved for future use.)
* QSinH Intrinsic::     (Reserved for future use.)
* QSqRt Intrinsic::     (Reserved for future use.)
* QTan Intrinsic::      (Reserved for future use.)
* QTanD Intrinsic::     (Reserved for future use.)
* QTanH Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF90
* Radix Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF2U
* Rand Intrinsic::      Random number.
@end ifset
@ifset familyF90
* Random_Number Intrinsic:: (Reserved for future use.)
* Random_Seed Intrinsic:: (Reserved for future use.)
* Range Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF77
* Real Intrinsic::      Convert value to type @code{REAL(KIND=1)}.
@end ifset
@ifset familyGNU
* RealPart Intrinsic::  Extract real part of complex.
@end ifset
@ifset familyF2U
* Rename Intrinsic (subroutine):: Rename file.
@end ifset
@ifset familyBADU77
* Rename Intrinsic (function):: Rename file.
@end ifset
@ifset familyF90
* Repeat Intrinsic::    (Reserved for future use.)
* Reshape Intrinsic::   (Reserved for future use.)
* RRSpacing Intrinsic:: (Reserved for future use.)
@end ifset
@ifset familyF2C
* RShift Intrinsic::    Right-shift bits.
@end ifset
@ifset familyF90
* Scale Intrinsic::     (Reserved for future use.)
* Scan Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyVXT
* Secnds Intrinsic::    Get local time offset since midnight.
@end ifset
@ifset familyF2U
* Second Intrinsic (function):: Get CPU time for process in seconds.
* Second Intrinsic (subroutine):: Get CPU time for process
                         in seconds.
@end ifset
@ifset familyF90
* Selected_Int_Kind Intrinsic:: (Reserved for future use.)
* Selected_Real_Kind Intrinsic:: (Reserved for future use.)
* Set_Exponent Intrinsic:: (Reserved for future use.)
* Shape Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF2U
* Short Intrinsic::     Convert to @code{INTEGER(KIND=6)} value
                         truncated to whole number.
@end ifset
@ifset familyF77
* Sign Intrinsic::      Apply sign to magnitude.
@end ifset
@ifset familyF2U
* Signal Intrinsic (subroutine):: Muck with signal handling.
@end ifset
@ifset familyBADU77
* Signal Intrinsic (function):: Muck with signal handling.
@end ifset
@ifset familyF77
* Sin Intrinsic::       Sine.
@end ifset
@ifset familyVXT
* SinD Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF77
* SinH Intrinsic::      Hyperbolic sine.
@end ifset
@ifset familyF2U
* Sleep Intrinsic::     Sleep for a specified time.
@end ifset
@ifset familyF77
* Sngl Intrinsic::      Convert (archaic).
@end ifset
@ifset familyVXT
* SnglQ Intrinsic::     (Reserved for future use.)
@end ifset
@ifset familyF90
* Spacing Intrinsic::   (Reserved for future use.)
* Spread Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF77
* SqRt Intrinsic::      Square root.
@end ifset
@ifset familyF2U
* SRand Intrinsic::     Random seed.
* Stat Intrinsic (subroutine):: Get file information.
* Stat Intrinsic (function):: Get file information.
@end ifset
@ifset familyF90
* Sum Intrinsic::       (Reserved for future use.)
@end ifset
@ifset familyF2U
* SymLnk Intrinsic (subroutine):: Make symbolic link in file system.
@end ifset
@ifset familyBADU77
* SymLnk Intrinsic (function):: Make symbolic link in file system.
@end ifset
@ifset familyF2U
* System Intrinsic (subroutine):: Invoke shell (system) command.
@end ifset
@ifset familyBADU77
* System Intrinsic (function):: Invoke shell (system) command.
@end ifset
@ifset familyF90
* System_Clock Intrinsic:: Get current system clock value.
@end ifset
@ifset familyF77
* Tan Intrinsic::       Tangent.
@end ifset
@ifset familyVXT
* TanD Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF77
* TanH Intrinsic::      Hyperbolic tangent.
@end ifset
@ifset familyF2U
* Time Intrinsic (UNIX):: Get current time as time value.
@end ifset
@ifset familyVXT
* Time Intrinsic (VXT):: Get the time as a character value.
@end ifset
@ifset familyF2U
* Time8 Intrinsic::     Get current time as time value.
@end ifset
@ifset familyF90
* Tiny Intrinsic::      (Reserved for future use.)
* Transfer Intrinsic::  (Reserved for future use.)
* Transpose Intrinsic:: (Reserved for future use.)
* Trim Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF2U
* TtyNam Intrinsic (subroutine):: Get name of terminal device for unit.
* TtyNam Intrinsic (function):: Get name of terminal device for unit.
@end ifset
@ifset familyF90
* UBound Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF2U
* UMask Intrinsic (subroutine):: Set file creation permissions mask.
@end ifset
@ifset familyBADU77
* UMask Intrinsic (function):: Set file creation permissions mask.
@end ifset
@ifset familyF2U
* Unlink Intrinsic (subroutine):: Unlink file.
@end ifset
@ifset familyBADU77
* Unlink Intrinsic (function):: Unlink file.
@end ifset
@ifset familyF90
* Unpack Intrinsic::    (Reserved for future use.)
* Verify Intrinsic::    (Reserved for future use.)
@end ifset
@ifset familyF2C
* XOr Intrinsic::       Boolean XOR.
* ZAbs Intrinsic::      Absolute value (archaic).
* ZCos Intrinsic::      Cosine (archaic).
* ZExp Intrinsic::      Exponential (archaic).
@end ifset
@ifset familyVXT
* ZExt Intrinsic::      (Reserved for future use.)
@end ifset
@ifset familyF2C
* ZLog Intrinsic::      Natural logarithm (archaic).
* ZSin Intrinsic::      Sine (archaic).
* ZSqRt Intrinsic::     Square root (archaic).
@end ifset
@end menu

@ifset familyF2U
@node Abort Intrinsic
@subsubsection Abort Intrinsic
@cindex Abort intrinsic
@cindex intrinsics, Abort

@noindent
@example
CALL Abort()
@end example

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Prints a message and potentially causes a core dump via @code{abort(3)}.

@end ifset
@ifset familyF77
@node Abs Intrinsic
@subsubsection Abs Intrinsic
@cindex Abs intrinsic
@cindex intrinsics, Abs

@noindent
@example
Abs(@var{A})
@end example

@noindent
Abs: @code{INTEGER} or @code{REAL} function.
The exact type depends on that of argument @var{A}---if @var{A} is
@code{COMPLEX}, this function's type is @code{REAL}
with the same @samp{KIND=} value as the type of @var{A}.
Otherwise, this function's type is the same as that of @var{A}.

@noindent
@var{A}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the absolute value of @var{A}.

If @var{A} is type @code{COMPLEX}, the absolute
value is computed as:

@example
SQRT(REALPART(@var{A})**2+IMAGPART(@var{A})**2)
@end example

@noindent
Otherwise, it is computed by negating @var{A} if
it is negative, or returning @var{A}.

@xref{Sign Intrinsic}, for how to explicitly
compute the positive or negative form of the absolute
value of an expression.

@end ifset
@ifset familyF2U
@node Access Intrinsic
@subsubsection Access Intrinsic
@cindex Access intrinsic
@cindex intrinsics, Access

@noindent
@example
Access(@var{Name}, @var{Mode})
@end example

@noindent
Access: @code{INTEGER(KIND=1)} function.

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Mode}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Checks file @var{Name} for accessibility in the mode specified by @var{Mode} and
returns 0 if the file is accessible in that mode, otherwise an error
code if the file is inaccessible or @var{Mode} is invalid.
See @code{access(2)}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{Name}---otherwise,
trailing blanks in @var{Name} are ignored.
@var{Mode} may be a concatenation of any of the following characters:

@table @samp
@item r
Read permission

@item w
Write permission

@item x
Execute permission

@item @kbd{SPC}
Existence
@end table

@end ifset
@ifset familyASC
@node AChar Intrinsic
@subsubsection AChar Intrinsic
@cindex AChar intrinsic
@cindex intrinsics, AChar

@noindent
@example
AChar(@var{I})
@end example

@noindent
AChar: @code{CHARACTER*1} function.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{f90}.

@noindent
Description:

Returns the ASCII character corresponding to the
code specified by @var{I}.

@xref{IAChar Intrinsic}, for the inverse of this function.

@xref{Char Intrinsic}, for the function corresponding
to the system's native character set.

@end ifset
@ifset familyF77
@node ACos Intrinsic
@subsubsection ACos Intrinsic
@cindex ACos intrinsic
@cindex intrinsics, ACos

@noindent
@example
ACos(@var{X})
@end example

@noindent
ACos: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the arc-cosine (inverse cosine) of @var{X}
in radians.

@xref{Cos Intrinsic}, for the inverse of this function.

@end ifset
@ifset familyVXT
@node ACosD Intrinsic
@subsubsection ACosD Intrinsic
@cindex ACosD intrinsic
@cindex intrinsics, ACosD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL ACosD} to use this name for an
external procedure.

@end ifset
@ifset familyF90
@node AdjustL Intrinsic
@subsubsection AdjustL Intrinsic
@cindex AdjustL intrinsic
@cindex intrinsics, AdjustL

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL AdjustL} to use this name for an
external procedure.

@node AdjustR Intrinsic
@subsubsection AdjustR Intrinsic
@cindex AdjustR intrinsic
@cindex intrinsics, AdjustR

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL AdjustR} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node AImag Intrinsic
@subsubsection AImag Intrinsic
@cindex AImag intrinsic
@cindex intrinsics, AImag

@noindent
@example
AImag(@var{Z})
@end example

@noindent
AImag: @code{REAL} function.
This intrinsic is valid when argument @var{Z} is
@code{COMPLEX(KIND=1)}.
When @var{Z} is any other @code{COMPLEX} type,
this intrinsic is valid only when used as the argument to
@code{REAL()}, as explained below.

@noindent
@var{Z}: @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the (possibly converted) imaginary part of @var{Z}.

Use of @code{AIMAG()} with an argument of a type
other than @code{COMPLEX(KIND=1)} is restricted to the following case:

@example
REAL(AIMAG(Z))
@end example

@noindent
This expression converts the imaginary part of Z to
@code{REAL(KIND=1)}.

@xref{REAL() and AIMAG() of Complex}, for more information.

@end ifset
@ifset familyVXT
@node AIMax0 Intrinsic
@subsubsection AIMax0 Intrinsic
@cindex AIMax0 intrinsic
@cindex intrinsics, AIMax0

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL AIMax0} to use this name for an
external procedure.

@node AIMin0 Intrinsic
@subsubsection AIMin0 Intrinsic
@cindex AIMin0 intrinsic
@cindex intrinsics, AIMin0

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL AIMin0} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node AInt Intrinsic
@subsubsection AInt Intrinsic
@cindex AInt intrinsic
@cindex intrinsics, AInt

@noindent
@example
AInt(@var{A})
@end example

@noindent
AInt: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{A}.

@noindent
@var{A}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @var{A} with the fractional portion of its
magnitude truncated and its sign preserved.
(Also called ``truncation towards zero''.)

@xref{ANInt Intrinsic}, for how to round to nearest
whole number.

@xref{Int Intrinsic}, for how to truncate and then convert
number to @code{INTEGER}.

@end ifset
@ifset familyVXT
@node AJMax0 Intrinsic
@subsubsection AJMax0 Intrinsic
@cindex AJMax0 intrinsic
@cindex intrinsics, AJMax0

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL AJMax0} to use this name for an
external procedure.

@node AJMin0 Intrinsic
@subsubsection AJMin0 Intrinsic
@cindex AJMin0 intrinsic
@cindex intrinsics, AJMin0

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL AJMin0} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node Alarm Intrinsic
@subsubsection Alarm Intrinsic
@cindex Alarm intrinsic
@cindex intrinsics, Alarm

@noindent
@example
CALL Alarm(@var{Seconds}, @var{Handler}, @var{Status})
@end example

@noindent
@var{Seconds}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Handler}: Signal handler (@code{INTEGER FUNCTION} or @code{SUBROUTINE})
or dummy/global @code{INTEGER(KIND=1)} scalar.

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Causes external subroutine @var{Handler} to be executed after a delay of
@var{Seconds} seconds by using @code{alarm(1)} to set up a signal and
@code{signal(2)} to catch it.
If @var{Status} is supplied, it will be
returned with the number of seconds remaining until any previously
scheduled alarm was due to be delivered, or zero if there was no
previously scheduled alarm.
@xref{Signal Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node All Intrinsic
@subsubsection All Intrinsic
@cindex All intrinsic
@cindex intrinsics, All

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL All} to use this name for an
external procedure.

@node Allocated Intrinsic
@subsubsection Allocated Intrinsic
@cindex Allocated intrinsic
@cindex intrinsics, Allocated

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Allocated} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node ALog Intrinsic
@subsubsection ALog Intrinsic
@cindex ALog intrinsic
@cindex intrinsics, ALog

@noindent
@example
ALog(@var{X})
@end example

@noindent
ALog: @code{REAL(KIND=1)} function.

@noindent
@var{X}: @code{REAL(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{LOG()} that is specific
to one type for @var{X}.
@xref{Log Intrinsic}.

@node ALog10 Intrinsic
@subsubsection ALog10 Intrinsic
@cindex ALog10 intrinsic
@cindex intrinsics, ALog10

@noindent
@example
ALog10(@var{X})
@end example

@noindent
ALog10: @code{REAL(KIND=1)} function.

@noindent
@var{X}: @code{REAL(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{LOG10()} that is specific
to one type for @var{X}.
@xref{Log10 Intrinsic}.

@node AMax0 Intrinsic
@subsubsection AMax0 Intrinsic
@cindex AMax0 intrinsic
@cindex intrinsics, AMax0

@noindent
@example
AMax0(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
AMax0: @code{REAL(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER(KIND=1)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MAX()} that is specific
to one type for @var{A} and a different return type.
@xref{Max Intrinsic}.

@node AMax1 Intrinsic
@subsubsection AMax1 Intrinsic
@cindex AMax1 intrinsic
@cindex intrinsics, AMax1

@noindent
@example
AMax1(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
AMax1: @code{REAL(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=1)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MAX()} that is specific
to one type for @var{A}.
@xref{Max Intrinsic}.

@node AMin0 Intrinsic
@subsubsection AMin0 Intrinsic
@cindex AMin0 intrinsic
@cindex intrinsics, AMin0

@noindent
@example
AMin0(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
AMin0: @code{REAL(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER(KIND=1)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MIN()} that is specific
to one type for @var{A} and a different return type.
@xref{Min Intrinsic}.

@node AMin1 Intrinsic
@subsubsection AMin1 Intrinsic
@cindex AMin1 intrinsic
@cindex intrinsics, AMin1

@noindent
@example
AMin1(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
AMin1: @code{REAL(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=1)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MIN()} that is specific
to one type for @var{A}.
@xref{Min Intrinsic}.

@node AMod Intrinsic
@subsubsection AMod Intrinsic
@cindex AMod intrinsic
@cindex intrinsics, AMod

@noindent
@example
AMod(@var{A}, @var{P})
@end example

@noindent
AMod: @code{REAL(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=1)}; scalar; INTENT(IN).

@noindent
@var{P}: @code{REAL(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MOD()} that is specific
to one type for @var{A}.
@xref{Mod Intrinsic}.

@end ifset
@ifset familyF2C
@node And Intrinsic
@subsubsection And Intrinsic
@cindex And intrinsic
@cindex intrinsics, And

@noindent
@example
And(@var{I}, @var{J})
@end example

@noindent
And: @code{INTEGER} or @code{LOGICAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{I}: @code{INTEGER} or @code{LOGICAL}; scalar; INTENT(IN).

@noindent
@var{J}: @code{INTEGER} or @code{LOGICAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Returns value resulting from boolean AND of
pair of bits in each of @var{I} and @var{J}.

@end ifset
@ifset familyF77
@node ANInt Intrinsic
@subsubsection ANInt Intrinsic
@cindex ANInt intrinsic
@cindex intrinsics, ANInt

@noindent
@example
ANInt(@var{A})
@end example

@noindent
ANInt: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{A}.

@noindent
@var{A}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @var{A} with the fractional portion of its
magnitude eliminated by rounding to the nearest whole
number and with its sign preserved.

A fractional portion exactly equal to
@samp{.5} is rounded to the whole number that
is larger in magnitude.
(Also called ``Fortran round''.)

@xref{AInt Intrinsic}, for how to truncate to
whole number.

@xref{NInt Intrinsic}, for how to round and then convert
number to @code{INTEGER}.

@end ifset
@ifset familyF90
@node Any Intrinsic
@subsubsection Any Intrinsic
@cindex Any intrinsic
@cindex intrinsics, Any

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Any} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node ASin Intrinsic
@subsubsection ASin Intrinsic
@cindex ASin intrinsic
@cindex intrinsics, ASin

@noindent
@example
ASin(@var{X})
@end example

@noindent
ASin: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the arc-sine (inverse sine) of @var{X}
in radians.

@xref{Sin Intrinsic}, for the inverse of this function.

@end ifset
@ifset familyVXT
@node ASinD Intrinsic
@subsubsection ASinD Intrinsic
@cindex ASinD intrinsic
@cindex intrinsics, ASinD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL ASinD} to use this name for an
external procedure.

@end ifset
@ifset familyF90
@node Associated Intrinsic
@subsubsection Associated Intrinsic
@cindex Associated intrinsic
@cindex intrinsics, Associated

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Associated} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node ATan Intrinsic
@subsubsection ATan Intrinsic
@cindex ATan intrinsic
@cindex intrinsics, ATan

@noindent
@example
ATan(@var{X})
@end example

@noindent
ATan: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the arc-tangent (inverse tangent) of @var{X}
in radians.

@xref{Tan Intrinsic}, for the inverse of this function.

@node ATan2 Intrinsic
@subsubsection ATan2 Intrinsic
@cindex ATan2 intrinsic
@cindex intrinsics, ATan2

@noindent
@example
ATan2(@var{Y}, @var{X})
@end example

@noindent
ATan2: @code{REAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{Y}: @code{REAL}; scalar; INTENT(IN).

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the arc-tangent (inverse tangent) of the complex
number (@var{Y}, @var{X}) in radians.

@xref{Tan Intrinsic}, for the inverse of this function.

@end ifset
@ifset familyVXT
@node ATan2D Intrinsic
@subsubsection ATan2D Intrinsic
@cindex ATan2D intrinsic
@cindex intrinsics, ATan2D

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL ATan2D} to use this name for an
external procedure.

@node ATanD Intrinsic
@subsubsection ATanD Intrinsic
@cindex ATanD intrinsic
@cindex intrinsics, ATanD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL ATanD} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node BesJ0 Intrinsic
@subsubsection BesJ0 Intrinsic
@cindex BesJ0 intrinsic
@cindex intrinsics, BesJ0

@noindent
@example
BesJ0(@var{X})
@end example

@noindent
BesJ0: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Calculates the Bessel function of the first kind of order 0 of @var{X}.
See @code{bessel(3m)}, on whose implementation the function depends.
@node BesJ1 Intrinsic
@subsubsection BesJ1 Intrinsic
@cindex BesJ1 intrinsic
@cindex intrinsics, BesJ1

@noindent
@example
BesJ1(@var{X})
@end example

@noindent
BesJ1: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Calculates the Bessel function of the first kind of order 1 of @var{X}.
See @code{bessel(3m)}, on whose implementation the function depends.
@node BesJN Intrinsic
@subsubsection BesJN Intrinsic
@cindex BesJN intrinsic
@cindex intrinsics, BesJN

@noindent
@example
BesJN(@var{N}, @var{X})
@end example

@noindent
BesJN: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{N}: @code{INTEGER} not wider than the default kind; scalar; INTENT(IN).

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Calculates the Bessel function of the first kind of order @var{N} of @var{X}.
See @code{bessel(3m)}, on whose implementation the function depends.
@node BesY0 Intrinsic
@subsubsection BesY0 Intrinsic
@cindex BesY0 intrinsic
@cindex intrinsics, BesY0

@noindent
@example
BesY0(@var{X})
@end example

@noindent
BesY0: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Calculates the Bessel function of the second kind of order 0 of @var{X}.
See @code{bessel(3m)}, on whose implementation the function depends.
@node BesY1 Intrinsic
@subsubsection BesY1 Intrinsic
@cindex BesY1 intrinsic
@cindex intrinsics, BesY1

@noindent
@example
BesY1(@var{X})
@end example

@noindent
BesY1: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Calculates the Bessel function of the second kind of order 1 of @var{X}.
See @code{bessel(3m)}, on whose implementation the function depends.
@node BesYN Intrinsic
@subsubsection BesYN Intrinsic
@cindex BesYN intrinsic
@cindex intrinsics, BesYN

@noindent
@example
BesYN(@var{N}, @var{X})
@end example

@noindent
BesYN: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{N}: @code{INTEGER} not wider than the default kind; scalar; INTENT(IN).

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Calculates the Bessel function of the second kind of order @var{N} of @var{X}.
See @code{bessel(3m)}, on whose implementation the function depends.
@end ifset
@ifset familyVXT
@node BITest Intrinsic
@subsubsection BITest Intrinsic
@cindex BITest intrinsic
@cindex intrinsics, BITest

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL BITest} to use this name for an
external procedure.

@end ifset
@ifset familyF90
@node Bit_Size Intrinsic
@subsubsection Bit_Size Intrinsic
@cindex Bit_Size intrinsic
@cindex intrinsics, Bit_Size

@noindent
@example
Bit_Size(@var{I})
@end example

@noindent
Bit_Size: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar.

@noindent
Intrinsic groups: @code{f90}.

@noindent
Description:

Returns the number of bits (integer precision plus sign bit)
represented by the type for @var{I}.

@xref{BTest Intrinsic}, for how to test the value of a
bit in a variable or array.

@xref{IBSet Intrinsic}, for how to set a bit in a variable to 1.

@xref{IBClr Intrinsic}, for how to set a bit in a variable to 0.


@end ifset
@ifset familyVXT
@node BJTest Intrinsic
@subsubsection BJTest Intrinsic
@cindex BJTest intrinsic
@cindex intrinsics, BJTest

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL BJTest} to use this name for an
external procedure.

@end ifset
@ifset familyMIL
@node BTest Intrinsic
@subsubsection BTest Intrinsic
@cindex BTest intrinsic
@cindex intrinsics, BTest

@noindent
@example
BTest(@var{I}, @var{Pos})
@end example

@noindent
BTest: @code{LOGICAL(KIND=1)} function.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Pos}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Returns @code{.TRUE.} if bit @var{Pos} in @var{I} is
1, @code{.FALSE.} otherwise.

(Bit 0 is the low-order (rightmost) bit, adding the value 
@ifinfo
2**0,
@end ifinfo
@iftex
@tex
$2^0$,
@end tex
@end iftex
or 1,
to the number if set to 1;
bit 1 is the next-higher-order bit, adding 
@ifinfo
2**1,
@end ifinfo
@iftex
@tex
$2^1$,
@end tex
@end iftex
or 2;
bit 2 adds 
@ifinfo
2**2,
@end ifinfo
@iftex
@tex
$2^2$,
@end tex
@end iftex
or 4; and so on.)

@xref{Bit_Size Intrinsic}, for how to obtain the number of bits
in a type.
The leftmost bit of @var{I} is @samp{BIT_SIZE(@var{I}-1)}.

@end ifset
@ifset familyF77
@node CAbs Intrinsic
@subsubsection CAbs Intrinsic
@cindex CAbs intrinsic
@cindex intrinsics, CAbs

@noindent
@example
CAbs(@var{A})
@end example

@noindent
CAbs: @code{REAL(KIND=1)} function.

@noindent
@var{A}: @code{COMPLEX(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{ABS()} that is specific
to one type for @var{A}.
@xref{Abs Intrinsic}.

@node CCos Intrinsic
@subsubsection CCos Intrinsic
@cindex CCos intrinsic
@cindex intrinsics, CCos

@noindent
@example
CCos(@var{X})
@end example

@noindent
CCos: @code{COMPLEX(KIND=1)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{COS()} that is specific
to one type for @var{X}.
@xref{Cos Intrinsic}.

@end ifset
@ifset familyFVZ
@node CDAbs Intrinsic
@subsubsection CDAbs Intrinsic
@cindex CDAbs intrinsic
@cindex intrinsics, CDAbs

@noindent
@example
CDAbs(@var{A})
@end example

@noindent
CDAbs: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{ABS()} that is specific
to one type for @var{A}.
@xref{Abs Intrinsic}.

@node CDCos Intrinsic
@subsubsection CDCos Intrinsic
@cindex CDCos intrinsic
@cindex intrinsics, CDCos

@noindent
@example
CDCos(@var{X})
@end example

@noindent
CDCos: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{COS()} that is specific
to one type for @var{X}.
@xref{Cos Intrinsic}.

@node CDExp Intrinsic
@subsubsection CDExp Intrinsic
@cindex CDExp intrinsic
@cindex intrinsics, CDExp

@noindent
@example
CDExp(@var{X})
@end example

@noindent
CDExp: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{EXP()} that is specific
to one type for @var{X}.
@xref{Exp Intrinsic}.

@node CDLog Intrinsic
@subsubsection CDLog Intrinsic
@cindex CDLog intrinsic
@cindex intrinsics, CDLog

@noindent
@example
CDLog(@var{X})
@end example

@noindent
CDLog: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{LOG()} that is specific
to one type for @var{X}.
@xref{Log Intrinsic}.

@node CDSin Intrinsic
@subsubsection CDSin Intrinsic
@cindex CDSin intrinsic
@cindex intrinsics, CDSin

@noindent
@example
CDSin(@var{X})
@end example

@noindent
CDSin: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{SIN()} that is specific
to one type for @var{X}.
@xref{Sin Intrinsic}.

@node CDSqRt Intrinsic
@subsubsection CDSqRt Intrinsic
@cindex CDSqRt intrinsic
@cindex intrinsics, CDSqRt

@noindent
@example
CDSqRt(@var{X})
@end example

@noindent
CDSqRt: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{SQRT()} that is specific
to one type for @var{X}.
@xref{SqRt Intrinsic}.

@end ifset
@ifset familyF90
@node Ceiling Intrinsic
@subsubsection Ceiling Intrinsic
@cindex Ceiling intrinsic
@cindex intrinsics, Ceiling

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Ceiling} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node CExp Intrinsic
@subsubsection CExp Intrinsic
@cindex CExp intrinsic
@cindex intrinsics, CExp

@noindent
@example
CExp(@var{X})
@end example

@noindent
CExp: @code{COMPLEX(KIND=1)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{EXP()} that is specific
to one type for @var{X}.
@xref{Exp Intrinsic}.

@node Char Intrinsic
@subsubsection Char Intrinsic
@cindex Char intrinsic
@cindex intrinsics, Char

@noindent
@example
Char(@var{I})
@end example

@noindent
Char: @code{CHARACTER*1} function.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the character corresponding to the
code specified by @var{I}, using the system's
native character set.

Because the system's native character set is used,
the correspondence between character and their codes
is not necessarily the same between GNU Fortran
implementations.

Note that no intrinsic exists to convert a numerical
value to a printable character string.
For example, there is no intrinsic that, given
an @code{INTEGER} or @code{REAL} argument with the
value @samp{154}, returns the @code{CHARACTER}
result @samp{'154'}.

Instead, you can use internal-file I/O to do this kind
of conversion.
For example:

@smallexample
INTEGER VALUE
CHARACTER*10 STRING
VALUE = 154
WRITE (STRING, '(I10)'), VALUE
PRINT *, STRING
END
@end smallexample

The above program, when run, prints:

@smallexample
        154
@end smallexample

@xref{IChar Intrinsic}, for the inverse of the @code{CHAR} function.

@xref{AChar Intrinsic}, for the function corresponding
to the ASCII character set.

@end ifset
@ifset familyF2U
@node ChDir Intrinsic (subroutine)
@subsubsection ChDir Intrinsic (subroutine)
@cindex ChDir intrinsic
@cindex intrinsics, ChDir

@noindent
@example
CALL ChDir(@var{Dir}, @var{Status})
@end example

@noindent
@var{Dir}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Sets the current working directory to be @var{Dir}.
If the @var{Status} argument is supplied, it contains 0
on success or a nonzero error code otherwise upon return.
See @code{chdir(3)}.

@emph{Caution:} Using this routine during I/O to a unit connected with a
non-absolute file name can cause subsequent I/O on such a unit to fail
because the I/O library might reopen files by name.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{ChDir Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node ChDir Intrinsic (function)
@subsubsection ChDir Intrinsic (function)
@cindex ChDir intrinsic
@cindex intrinsics, ChDir

@noindent
@example
ChDir(@var{Dir})
@end example

@noindent
ChDir: @code{INTEGER(KIND=1)} function.

@noindent
@var{Dir}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Sets the current working directory to be @var{Dir}.
Returns 0 on success or a nonzero error code.
See @code{chdir(3)}.

@emph{Caution:} Using this routine during I/O to a unit connected with a
non-absolute file name can cause subsequent I/O on such a unit to fail
because the I/O library might reopen files by name.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{ChDir Intrinsic (subroutine)}.

@end ifset
@ifset familyF2U
@node ChMod Intrinsic (subroutine)
@subsubsection ChMod Intrinsic (subroutine)
@cindex ChMod intrinsic
@cindex intrinsics, ChMod

@noindent
@example
CALL ChMod(@var{Name}, @var{Mode}, @var{Status})
@end example

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Mode}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Changes the access mode of file @var{Name} according to the
specification @var{Mode}, which is given in the format of
@code{chmod(1)}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{Name}---otherwise,
trailing blanks in @var{Name} are ignored.
Currently, @var{Name} must not contain the single quote
character.

If the @var{Status} argument is supplied, it contains
0 on success or a nonzero error code upon return.

Note that this currently works
by actually invoking @code{/bin/chmod} (or the @code{chmod} found when
the library was configured) and so might fail in some circumstances and
will, anyway, be slow.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{ChMod Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node ChMod Intrinsic (function)
@subsubsection ChMod Intrinsic (function)
@cindex ChMod intrinsic
@cindex intrinsics, ChMod

@noindent
@example
ChMod(@var{Name}, @var{Mode})
@end example

@noindent
ChMod: @code{INTEGER(KIND=1)} function.

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Mode}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Changes the access mode of file @var{Name} according to the
specification @var{Mode}, which is given in the format of
@code{chmod(1)}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{Name}---otherwise,
trailing blanks in @var{Name} are ignored.
Currently, @var{Name} must not contain the single quote
character.

Returns 0 on success or a nonzero error code otherwise.

Note that this currently works
by actually invoking @code{/bin/chmod} (or the @code{chmod} found when
the library was configured) and so might fail in some circumstances and
will, anyway, be slow.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{ChMod Intrinsic (subroutine)}.

@end ifset
@ifset familyF77
@node CLog Intrinsic
@subsubsection CLog Intrinsic
@cindex CLog intrinsic
@cindex intrinsics, CLog

@noindent
@example
CLog(@var{X})
@end example

@noindent
CLog: @code{COMPLEX(KIND=1)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{LOG()} that is specific
to one type for @var{X}.
@xref{Log Intrinsic}.

@node Cmplx Intrinsic
@subsubsection Cmplx Intrinsic
@cindex Cmplx intrinsic
@cindex intrinsics, Cmplx

@noindent
@example
Cmplx(@var{X}, @var{Y})
@end example

@noindent
Cmplx: @code{COMPLEX(KIND=1)} function.

@noindent
@var{X}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
@var{Y}: @code{INTEGER} or @code{REAL}; OPTIONAL (must be omitted if @var{X} is @code{COMPLEX}); scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

If @var{X} is not type @code{COMPLEX},
constructs a value of type @code{COMPLEX(KIND=1)} from the
real and imaginary values specified by @var{X} and
@var{Y}, respectively.
If @var{Y} is omitted, @samp{0.} is assumed.

If @var{X} is type @code{COMPLEX},
converts it to type @code{COMPLEX(KIND=1)}.

@xref{Complex Intrinsic}, for information on easily constructing
a @code{COMPLEX} value of arbitrary precision from @code{REAL}
arguments.

@end ifset
@ifset familyGNU
@node Complex Intrinsic
@subsubsection Complex Intrinsic
@cindex Complex intrinsic
@cindex intrinsics, Complex

@noindent
@example
Complex(@var{Real}, @var{Imag})
@end example

@noindent
Complex: @code{COMPLEX} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{Real}: @code{INTEGER} or @code{REAL}; scalar; INTENT(IN).

@noindent
@var{Imag}: @code{INTEGER} or @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{gnu}.

@noindent
Description:

Returns a @code{COMPLEX} value that has @samp{Real} and @samp{Imag} as its
real and imaginary parts, respectively.

If @var{Real} and @var{Imag} are the same type, and that type is not
@code{INTEGER}, no data conversion is performed, and the type of
the resulting value has the same kind value as the types
of @var{Real} and @var{Imag}.

If @var{Real} and @var{Imag} are not the same type, the usual type-promotion
rules are applied to both, converting either or both to the
appropriate @code{REAL} type.
The type of the resulting value has the same kind value as the
type to which both @var{Real} and @var{Imag} were converted, in this case.

If @var{Real} and @var{Imag} are both @code{INTEGER}, they are both converted
to @code{REAL(KIND=1)}, and the result of the @code{COMPLEX()}
invocation is type @code{COMPLEX(KIND=1)}.

@emph{Note:} The way to do this in standard Fortran 90
is too hairy to describe here, but it is important to
note that @samp{CMPLX(D1,D2)} returns a @code{COMPLEX(KIND=1)}
result even if @samp{D1} and @samp{D2} are type @code{REAL(KIND=2)}.
Hence the availability of @code{COMPLEX()} in GNU Fortran.

@end ifset
@ifset familyF77
@node Conjg Intrinsic
@subsubsection Conjg Intrinsic
@cindex Conjg intrinsic
@cindex intrinsics, Conjg

@noindent
@example
Conjg(@var{Z})
@end example

@noindent
Conjg: @code{COMPLEX} function, the @samp{KIND=} value of the type being that of argument @var{Z}.

@noindent
@var{Z}: @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the complex conjugate:

@example
COMPLEX(REALPART(@var{Z}), -IMAGPART(@var{Z}))
@end example

@node Cos Intrinsic
@subsubsection Cos Intrinsic
@cindex Cos intrinsic
@cindex intrinsics, Cos

@noindent
@example
Cos(@var{X})
@end example

@noindent
Cos: @code{REAL} or @code{COMPLEX} function, the exact type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL} or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the cosine of @var{X}, an angle measured
in radians.

@xref{ACos Intrinsic}, for the inverse of this function.

@end ifset
@ifset familyVXT
@node CosD Intrinsic
@subsubsection CosD Intrinsic
@cindex CosD intrinsic
@cindex intrinsics, CosD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL CosD} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node CosH Intrinsic
@subsubsection CosH Intrinsic
@cindex CosH intrinsic
@cindex intrinsics, CosH

@noindent
@example
CosH(@var{X})
@end example

@noindent
CosH: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the hyperbolic cosine of @var{X}.

@end ifset
@ifset familyF90
@node Count Intrinsic
@subsubsection Count Intrinsic
@cindex Count intrinsic
@cindex intrinsics, Count

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Count} to use this name for an
external procedure.

@node CPU_Time Intrinsic
@subsubsection CPU_Time Intrinsic
@cindex CPU_Time intrinsic
@cindex intrinsics, CPU_Time

@noindent
@example
CALL CPU_Time(@var{Seconds})
@end example

@noindent
@var{Seconds}: @code{REAL}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{f90}.

@noindent
Description:

Returns in @var{Seconds} the current value of the system time.
This implementation of the Fortran 95 intrinsic is just an alias for
@code{second} @xref{Second Intrinsic (subroutine)}.

@cindex wraparound, timings
@cindex limits, timings
On some systems, the underlying timings are represented
using types with sufficiently small limits that overflows
(wraparounds) are possible, such as 32-bit types.
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.

@node CShift Intrinsic
@subsubsection CShift Intrinsic
@cindex CShift intrinsic
@cindex intrinsics, CShift

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL CShift} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node CSin Intrinsic
@subsubsection CSin Intrinsic
@cindex CSin intrinsic
@cindex intrinsics, CSin

@noindent
@example
CSin(@var{X})
@end example

@noindent
CSin: @code{COMPLEX(KIND=1)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{SIN()} that is specific
to one type for @var{X}.
@xref{Sin Intrinsic}.

@node CSqRt Intrinsic
@subsubsection CSqRt Intrinsic
@cindex CSqRt intrinsic
@cindex intrinsics, CSqRt

@noindent
@example
CSqRt(@var{X})
@end example

@noindent
CSqRt: @code{COMPLEX(KIND=1)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{SQRT()} that is specific
to one type for @var{X}.
@xref{SqRt Intrinsic}.

@end ifset
@ifset familyF2U
@node CTime Intrinsic (subroutine)
@subsubsection CTime Intrinsic (subroutine)
@cindex CTime intrinsic
@cindex intrinsics, CTime

@noindent
@example
CALL CTime(@var{STime}, @var{Result})
@end example

@noindent
@var{STime}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Result}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Converts @var{STime}, a system time value, such as returned by
@code{TIME8()}, to a string of the form @samp{Sat Aug 19 18:13:14 1995},
and returns that string in @var{Result}.

@xref{Time8 Intrinsic}.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine.

For information on other intrinsics with the same name:
@xref{CTime Intrinsic (function)}.

@node CTime Intrinsic (function)
@subsubsection CTime Intrinsic (function)
@cindex CTime intrinsic
@cindex intrinsics, CTime

@noindent
@example
CTime(@var{STime})
@end example

@noindent
CTime: @code{CHARACTER*(*)} function.

@noindent
@var{STime}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Converts @var{STime}, a system time value, such as returned by
@code{TIME8()}, to a string of the form @samp{Sat Aug 19 18:13:14 1995},
and returns that string as the function value.

@xref{Time8 Intrinsic}.

For information on other intrinsics with the same name:
@xref{CTime Intrinsic (subroutine)}.

@end ifset
@ifset familyF77
@node DAbs Intrinsic
@subsubsection DAbs Intrinsic
@cindex DAbs intrinsic
@cindex intrinsics, DAbs

@noindent
@example
DAbs(@var{A})
@end example

@noindent
DAbs: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{ABS()} that is specific
to one type for @var{A}.
@xref{Abs Intrinsic}.

@node DACos Intrinsic
@subsubsection DACos Intrinsic
@cindex DACos intrinsic
@cindex intrinsics, DACos

@noindent
@example
DACos(@var{X})
@end example

@noindent
DACos: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{ACOS()} that is specific
to one type for @var{X}.
@xref{ACos Intrinsic}.

@end ifset
@ifset familyVXT
@node DACosD Intrinsic
@subsubsection DACosD Intrinsic
@cindex DACosD intrinsic
@cindex intrinsics, DACosD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DACosD} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node DASin Intrinsic
@subsubsection DASin Intrinsic
@cindex DASin intrinsic
@cindex intrinsics, DASin

@noindent
@example
DASin(@var{X})
@end example

@noindent
DASin: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{ASIN()} that is specific
to one type for @var{X}.
@xref{ASin Intrinsic}.

@end ifset
@ifset familyVXT
@node DASinD Intrinsic
@subsubsection DASinD Intrinsic
@cindex DASinD intrinsic
@cindex intrinsics, DASinD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DASinD} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node DATan Intrinsic
@subsubsection DATan Intrinsic
@cindex DATan intrinsic
@cindex intrinsics, DATan

@noindent
@example
DATan(@var{X})
@end example

@noindent
DATan: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{ATAN()} that is specific
to one type for @var{X}.
@xref{ATan Intrinsic}.

@node DATan2 Intrinsic
@subsubsection DATan2 Intrinsic
@cindex DATan2 intrinsic
@cindex intrinsics, DATan2

@noindent
@example
DATan2(@var{Y}, @var{X})
@end example

@noindent
DATan2: @code{REAL(KIND=2)} function.

@noindent
@var{Y}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{ATAN2()} that is specific
to one type for @var{Y} and @var{X}.
@xref{ATan2 Intrinsic}.

@end ifset
@ifset familyVXT
@node DATan2D Intrinsic
@subsubsection DATan2D Intrinsic
@cindex DATan2D intrinsic
@cindex intrinsics, DATan2D

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DATan2D} to use this name for an
external procedure.

@node DATanD Intrinsic
@subsubsection DATanD Intrinsic
@cindex DATanD intrinsic
@cindex intrinsics, DATanD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DATanD} to use this name for an
external procedure.

@node Date Intrinsic
@subsubsection Date Intrinsic
@cindex Date intrinsic
@cindex intrinsics, Date

@noindent
@example
CALL Date(@var{Date})
@end example

@noindent
@var{Date}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{vxt}.

@noindent
Description:

Returns @var{Date} in the form @samp{@var{dd}-@var{mmm}-@var{yy}},
representing the numeric day of the month @var{dd}, a three-character
abbreviation of the month name @var{mmm} and the last two digits of
the year @var{yy}, e.g.@: @samp{25-Nov-96}.

@cindex Y2K compliance
@cindex Year 2000 compliance
This intrinsic is not recommended, due to the year 2000 approaching.
Therefore, programs making use of this intrinsic
might not be Year 2000 (Y2K) compliant.
@xref{CTime Intrinsic (subroutine)}, for information on obtaining more digits
for the current (or any) date.

@end ifset
@ifset familyF90
@node Date_and_Time Intrinsic
@subsubsection Date_and_Time Intrinsic
@cindex Date_and_Time intrinsic
@cindex intrinsics, Date_and_Time

@noindent
@example
CALL Date_and_Time(@var{Date}, @var{Time}, @var{Zone}, @var{Values})
@end example

@noindent
@var{Date}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
@var{Time}: @code{CHARACTER}; OPTIONAL; scalar; INTENT(OUT).

@noindent
@var{Zone}: @code{CHARACTER}; OPTIONAL; scalar; INTENT(OUT).

@noindent
@var{Values}: @code{INTEGER(KIND=1)}; OPTIONAL; DIMENSION(8); INTENT(OUT).

@noindent
Intrinsic groups: @code{f90}.

@noindent
Description:

Returns:
@table @var
@item Date
The date in the form @var{ccyymmdd}: century, year, month and day;
@item Time
The time in the form @samp{@var{hhmmss.ss}}: hours, minutes, seconds
and milliseconds;
@item Zone
The difference between local time and UTC (GMT) in the form @var{Shhmm}:
sign, hours and minutes, e.g.@: @samp{-0500} (winter in New York);
@item Values
The year, month of the year, day of the month, time difference in
minutes from UTC, hour of the day, minutes of the hour, seconds
of the minute, and milliseconds
of the second in successive values of the array.
@end table

@cindex Y10K compliance
@cindex Year 10000 compliance
@cindex wraparound, Y10K
@cindex limits, Y10K
Programs making use of this intrinsic
might not be Year 10000 (Y10K) compliant.
For example, the date might appear,
to such programs, to wrap around
(change from a larger value to a smaller one)
as of the Year 10000.

On systems where a millisecond timer isn't available, the millisecond
value is returned as zero.

@end ifset
@ifset familyF2U
@node DbesJ0 Intrinsic
@subsubsection DbesJ0 Intrinsic
@cindex DbesJ0 intrinsic
@cindex intrinsics, DbesJ0

@noindent
@example
DbesJ0(@var{X})
@end example

@noindent
DbesJ0: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{BESJ0()} that is specific
to one type for @var{X}.
@xref{BesJ0 Intrinsic}.

@node DbesJ1 Intrinsic
@subsubsection DbesJ1 Intrinsic
@cindex DbesJ1 intrinsic
@cindex intrinsics, DbesJ1

@noindent
@example
DbesJ1(@var{X})
@end example

@noindent
DbesJ1: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{BESJ1()} that is specific
to one type for @var{X}.
@xref{BesJ1 Intrinsic}.

@node DbesJN Intrinsic
@subsubsection DbesJN Intrinsic
@cindex DbesJN intrinsic
@cindex intrinsics, DbesJN

@noindent
@example
DbesJN(@var{N}, @var{X})
@end example

@noindent
DbesJN: @code{REAL(KIND=2)} function.

@noindent
@var{N}: @code{INTEGER} not wider than the default kind; scalar; INTENT(IN).

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{BESJN()} that is specific
to one type for @var{X}.
@xref{BesJN Intrinsic}.

@node DbesY0 Intrinsic
@subsubsection DbesY0 Intrinsic
@cindex DbesY0 intrinsic
@cindex intrinsics, DbesY0

@noindent
@example
DbesY0(@var{X})
@end example

@noindent
DbesY0: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{BESY0()} that is specific
to one type for @var{X}.
@xref{BesY0 Intrinsic}.

@node DbesY1 Intrinsic
@subsubsection DbesY1 Intrinsic
@cindex DbesY1 intrinsic
@cindex intrinsics, DbesY1

@noindent
@example
DbesY1(@var{X})
@end example

@noindent
DbesY1: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{BESY1()} that is specific
to one type for @var{X}.
@xref{BesY1 Intrinsic}.

@node DbesYN Intrinsic
@subsubsection DbesYN Intrinsic
@cindex DbesYN intrinsic
@cindex intrinsics, DbesYN

@noindent
@example
DbesYN(@var{N}, @var{X})
@end example

@noindent
DbesYN: @code{REAL(KIND=2)} function.

@noindent
@var{N}: @code{INTEGER} not wider than the default kind; scalar; INTENT(IN).

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{BESYN()} that is specific
to one type for @var{X}.
@xref{BesYN Intrinsic}.

@end ifset
@ifset familyF77
@node Dble Intrinsic
@subsubsection Dble Intrinsic
@cindex Dble intrinsic
@cindex intrinsics, Dble

@noindent
@example
Dble(@var{A})
@end example

@noindent
Dble: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @var{A} converted to double precision
(@code{REAL(KIND=2)}).
If @var{A} is @code{COMPLEX}, the real part of
@var{A} is used for the conversion
and the imaginary part disregarded.

@xref{Sngl Intrinsic}, for the function that converts
to single precision.

@xref{Int Intrinsic}, for the function that converts
to @code{INTEGER}.

@xref{Complex Intrinsic}, for the function that converts
to @code{COMPLEX}.

@end ifset
@ifset familyVXT
@node DbleQ Intrinsic
@subsubsection DbleQ Intrinsic
@cindex DbleQ intrinsic
@cindex intrinsics, DbleQ

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DbleQ} to use this name for an
external procedure.

@end ifset
@ifset familyFVZ
@node DCmplx Intrinsic
@subsubsection DCmplx Intrinsic
@cindex DCmplx intrinsic
@cindex intrinsics, DCmplx

@noindent
@example
DCmplx(@var{X}, @var{Y})
@end example

@noindent
DCmplx: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
@var{Y}: @code{INTEGER} or @code{REAL}; OPTIONAL (must be omitted if @var{X} is @code{COMPLEX}); scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

If @var{X} is not type @code{COMPLEX},
constructs a value of type @code{COMPLEX(KIND=2)} from the
real and imaginary values specified by @var{X} and
@var{Y}, respectively.
If @var{Y} is omitted, @samp{0D0} is assumed.

If @var{X} is type @code{COMPLEX},
converts it to type @code{COMPLEX(KIND=2)}.

Although this intrinsic is not standard Fortran,
it is a popular extension offered by many compilers
that support @code{DOUBLE COMPLEX}, since it offers
the easiest way to convert to @code{DOUBLE COMPLEX}
without using Fortran 90 features (such as the @samp{KIND=}
argument to the @code{CMPLX()} intrinsic).

(@samp{CMPLX(0D0, 0D0)} returns a single-precision
@code{COMPLEX} result, as required by standard FORTRAN 77.
That's why so many compilers provide @code{DCMPLX()}, since
@samp{DCMPLX(0D0, 0D0)} returns a @code{DOUBLE COMPLEX}
result.
Still, @code{DCMPLX()} converts even @code{REAL*16} arguments
to their @code{REAL*8} equivalents in most dialects of
Fortran, so neither it nor @code{CMPLX()} allow easy
construction of arbitrary-precision values without
potentially forcing a conversion involving extending or
reducing precision.
GNU Fortran provides such an intrinsic, called @code{COMPLEX()}.)

@xref{Complex Intrinsic}, for information on easily constructing
a @code{COMPLEX} value of arbitrary precision from @code{REAL}
arguments.

@node DConjg Intrinsic
@subsubsection DConjg Intrinsic
@cindex DConjg intrinsic
@cindex intrinsics, DConjg

@noindent
@example
DConjg(@var{Z})
@end example

@noindent
DConjg: @code{COMPLEX(KIND=2)} function.

@noindent
@var{Z}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{CONJG()} that is specific
to one type for @var{Z}.
@xref{Conjg Intrinsic}.

@end ifset
@ifset familyF77
@node DCos Intrinsic
@subsubsection DCos Intrinsic
@cindex DCos intrinsic
@cindex intrinsics, DCos

@noindent
@example
DCos(@var{X})
@end example

@noindent
DCos: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{COS()} that is specific
to one type for @var{X}.
@xref{Cos Intrinsic}.

@end ifset
@ifset familyVXT
@node DCosD Intrinsic
@subsubsection DCosD Intrinsic
@cindex DCosD intrinsic
@cindex intrinsics, DCosD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DCosD} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node DCosH Intrinsic
@subsubsection DCosH Intrinsic
@cindex DCosH intrinsic
@cindex intrinsics, DCosH

@noindent
@example
DCosH(@var{X})
@end example

@noindent
DCosH: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{COSH()} that is specific
to one type for @var{X}.
@xref{CosH Intrinsic}.

@node DDiM Intrinsic
@subsubsection DDiM Intrinsic
@cindex DDiM intrinsic
@cindex intrinsics, DDiM

@noindent
@example
DDiM(@var{X}, @var{Y})
@end example

@noindent
DDiM: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
@var{Y}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{DIM()} that is specific
to one type for @var{X} and @var{Y}.
@xref{DiM Intrinsic}.

@end ifset
@ifset familyF2U
@node DErF Intrinsic
@subsubsection DErF Intrinsic
@cindex DErF intrinsic
@cindex intrinsics, DErF

@noindent
@example
DErF(@var{X})
@end example

@noindent
DErF: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{ERF()} that is specific
to one type for @var{X}.
@xref{ErF Intrinsic}.

@node DErFC Intrinsic
@subsubsection DErFC Intrinsic
@cindex DErFC intrinsic
@cindex intrinsics, DErFC

@noindent
@example
DErFC(@var{X})
@end example

@noindent
DErFC: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{ERFC()} that is specific
to one type for @var{X}.
@xref{ErFC Intrinsic}.

@end ifset
@ifset familyF77
@node DExp Intrinsic
@subsubsection DExp Intrinsic
@cindex DExp intrinsic
@cindex intrinsics, DExp

@noindent
@example
DExp(@var{X})
@end example

@noindent
DExp: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{EXP()} that is specific
to one type for @var{X}.
@xref{Exp Intrinsic}.

@end ifset
@ifset familyFVZ
@node DFloat Intrinsic
@subsubsection DFloat Intrinsic
@cindex DFloat intrinsic
@cindex intrinsics, DFloat

@noindent
@example
DFloat(@var{A})
@end example

@noindent
DFloat: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{REAL()} that is specific
to one type for @var{A}.
@xref{Real Intrinsic}.

@end ifset
@ifset familyVXT
@node DFlotI Intrinsic
@subsubsection DFlotI Intrinsic
@cindex DFlotI intrinsic
@cindex intrinsics, DFlotI

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DFlotI} to use this name for an
external procedure.

@node DFlotJ Intrinsic
@subsubsection DFlotJ Intrinsic
@cindex DFlotJ intrinsic
@cindex intrinsics, DFlotJ

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DFlotJ} to use this name for an
external procedure.

@end ifset
@ifset familyF90
@node Digits Intrinsic
@subsubsection Digits Intrinsic
@cindex Digits intrinsic
@cindex intrinsics, Digits

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Digits} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node DiM Intrinsic
@subsubsection DiM Intrinsic
@cindex DiM intrinsic
@cindex intrinsics, DiM

@noindent
@example
DiM(@var{X}, @var{Y})
@end example

@noindent
DiM: @code{INTEGER} or @code{REAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{X}: @code{INTEGER} or @code{REAL}; scalar; INTENT(IN).

@noindent
@var{Y}: @code{INTEGER} or @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @samp{@var{X}-@var{Y}} if @var{X} is greater than
@var{Y}; otherwise returns zero.

@end ifset
@ifset familyFVZ
@node DImag Intrinsic
@subsubsection DImag Intrinsic
@cindex DImag intrinsic
@cindex intrinsics, DImag

@noindent
@example
DImag(@var{Z})
@end example

@noindent
DImag: @code{REAL(KIND=2)} function.

@noindent
@var{Z}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{vxt}.

@noindent
Description:

Archaic form of @code{AIMAG()} that is specific
to one type for @var{Z}.
@xref{AImag Intrinsic}.

@end ifset
@ifset familyF77
@node DInt Intrinsic
@subsubsection DInt Intrinsic
@cindex DInt intrinsic
@cindex intrinsics, DInt

@noindent
@example
DInt(@var{A})
@end example

@noindent
DInt: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{AINT()} that is specific
to one type for @var{A}.
@xref{AInt Intrinsic}.

@node DLog Intrinsic
@subsubsection DLog Intrinsic
@cindex DLog intrinsic
@cindex intrinsics, DLog

@noindent
@example
DLog(@var{X})
@end example

@noindent
DLog: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{LOG()} that is specific
to one type for @var{X}.
@xref{Log Intrinsic}.

@node DLog10 Intrinsic
@subsubsection DLog10 Intrinsic
@cindex DLog10 intrinsic
@cindex intrinsics, DLog10

@noindent
@example
DLog10(@var{X})
@end example

@noindent
DLog10: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{LOG10()} that is specific
to one type for @var{X}.
@xref{Log10 Intrinsic}.

@node DMax1 Intrinsic
@subsubsection DMax1 Intrinsic
@cindex DMax1 intrinsic
@cindex intrinsics, DMax1

@noindent
@example
DMax1(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
DMax1: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MAX()} that is specific
to one type for @var{A}.
@xref{Max Intrinsic}.

@node DMin1 Intrinsic
@subsubsection DMin1 Intrinsic
@cindex DMin1 intrinsic
@cindex intrinsics, DMin1

@noindent
@example
DMin1(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
DMin1: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MIN()} that is specific
to one type for @var{A}.
@xref{Min Intrinsic}.

@node DMod Intrinsic
@subsubsection DMod Intrinsic
@cindex DMod intrinsic
@cindex intrinsics, DMod

@noindent
@example
DMod(@var{A}, @var{P})
@end example

@noindent
DMod: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
@var{P}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MOD()} that is specific
to one type for @var{A}.
@xref{Mod Intrinsic}.

@node DNInt Intrinsic
@subsubsection DNInt Intrinsic
@cindex DNInt intrinsic
@cindex intrinsics, DNInt

@noindent
@example
DNInt(@var{A})
@end example

@noindent
DNInt: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{ANINT()} that is specific
to one type for @var{A}.
@xref{ANInt Intrinsic}.

@end ifset
@ifset familyF90
@node Dot_Product Intrinsic
@subsubsection Dot_Product Intrinsic
@cindex Dot_Product intrinsic
@cindex intrinsics, Dot_Product

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Dot_Product} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node DProd Intrinsic
@subsubsection DProd Intrinsic
@cindex DProd intrinsic
@cindex intrinsics, DProd

@noindent
@example
DProd(@var{X}, @var{Y})
@end example

@noindent
DProd: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=1)}; scalar; INTENT(IN).

@noindent
@var{Y}: @code{REAL(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @samp{DBLE(@var{X})*DBLE(@var{Y})}.

@end ifset
@ifset familyVXT
@node DReal Intrinsic
@subsubsection DReal Intrinsic
@cindex DReal intrinsic
@cindex intrinsics, DReal

@noindent
@example
DReal(@var{A})
@end example

@noindent
DReal: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{vxt}.

@noindent
Description:

Converts @var{A} to @code{REAL(KIND=2)}.

If @var{A} is type @code{COMPLEX}, its real part
is converted (if necessary) to @code{REAL(KIND=2)},
and its imaginary part is disregarded.

Although this intrinsic is not standard Fortran,
it is a popular extension offered by many compilers
that support @code{DOUBLE COMPLEX}, since it offers
the easiest way to extract the real part of a @code{DOUBLE COMPLEX}
value without using the Fortran 90 @code{REAL()} intrinsic
in a way that produces a return value inconsistent with
the way many FORTRAN 77 compilers handle @code{REAL()} of
a @code{DOUBLE COMPLEX} value.

@xref{RealPart Intrinsic}, for information on a GNU Fortran
intrinsic that avoids these areas of confusion.

@xref{Dble Intrinsic}, for information on the standard FORTRAN 77
replacement for @code{DREAL()}.

@xref{REAL() and AIMAG() of Complex}, for more information on
this issue.

@end ifset
@ifset familyF77
@node DSign Intrinsic
@subsubsection DSign Intrinsic
@cindex DSign intrinsic
@cindex intrinsics, DSign

@noindent
@example
DSign(@var{A}, @var{B})
@end example

@noindent
DSign: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
@var{B}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{SIGN()} that is specific
to one type for @var{A} and @var{B}.
@xref{Sign Intrinsic}.

@node DSin Intrinsic
@subsubsection DSin Intrinsic
@cindex DSin intrinsic
@cindex intrinsics, DSin

@noindent
@example
DSin(@var{X})
@end example

@noindent
DSin: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{SIN()} that is specific
to one type for @var{X}.
@xref{Sin Intrinsic}.

@end ifset
@ifset familyVXT
@node DSinD Intrinsic
@subsubsection DSinD Intrinsic
@cindex DSinD intrinsic
@cindex intrinsics, DSinD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DSinD} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node DSinH Intrinsic
@subsubsection DSinH Intrinsic
@cindex DSinH intrinsic
@cindex intrinsics, DSinH

@noindent
@example
DSinH(@var{X})
@end example

@noindent
DSinH: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{SINH()} that is specific
to one type for @var{X}.
@xref{SinH Intrinsic}.

@node DSqRt Intrinsic
@subsubsection DSqRt Intrinsic
@cindex DSqRt intrinsic
@cindex intrinsics, DSqRt

@noindent
@example
DSqRt(@var{X})
@end example

@noindent
DSqRt: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{SQRT()} that is specific
to one type for @var{X}.
@xref{SqRt Intrinsic}.

@node DTan Intrinsic
@subsubsection DTan Intrinsic
@cindex DTan intrinsic
@cindex intrinsics, DTan

@noindent
@example
DTan(@var{X})
@end example

@noindent
DTan: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{TAN()} that is specific
to one type for @var{X}.
@xref{Tan Intrinsic}.

@end ifset
@ifset familyVXT
@node DTanD Intrinsic
@subsubsection DTanD Intrinsic
@cindex DTanD intrinsic
@cindex intrinsics, DTanD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL DTanD} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node DTanH Intrinsic
@subsubsection DTanH Intrinsic
@cindex DTanH intrinsic
@cindex intrinsics, DTanH

@noindent
@example
DTanH(@var{X})
@end example

@noindent
DTanH: @code{REAL(KIND=2)} function.

@noindent
@var{X}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{TANH()} that is specific
to one type for @var{X}.
@xref{TanH Intrinsic}.

@end ifset
@ifset familyF2U
@node DTime Intrinsic (subroutine)
@subsubsection DTime Intrinsic (subroutine)
@cindex DTime intrinsic
@cindex intrinsics, DTime

@noindent
@example
CALL DTime(@var{TArray}, @var{Result})
@end example

@noindent
@var{TArray}: @code{REAL(KIND=1)}; DIMENSION(2); INTENT(OUT).

@noindent
@var{Result}: @code{REAL(KIND=1)}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Initially, return the number of seconds of runtime
since the start of the process's execution
in @var{Result},
and the user and system components of this in @samp{@var{TArray}(1)}
and @samp{@var{TArray}(2)} respectively.
The value of @var{Result} is equal to @samp{@var{TArray}(1) + @var{TArray}(2)}.

Subsequent invocations of @samp{DTIME()} set values based on accumulations
since the previous invocation.

@cindex wraparound, timings
@cindex limits, timings
On some systems, the underlying timings are represented
using types with sufficiently small limits that overflows
(wraparounds) are possible, such as 32-bit types.
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.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine.

For information on other intrinsics with the same name:
@xref{DTime Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node DTime Intrinsic (function)
@subsubsection DTime Intrinsic (function)
@cindex DTime intrinsic
@cindex intrinsics, DTime

@noindent
@example
DTime(@var{TArray})
@end example

@noindent
DTime: @code{REAL(KIND=1)} function.

@noindent
@var{TArray}: @code{REAL(KIND=1)}; DIMENSION(2); INTENT(OUT).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Initially, return the number of seconds of runtime
since the start of the process's execution
as the function value,
and the user and system components of this in @samp{@var{TArray}(1)}
and @samp{@var{TArray}(2)} respectively.
The functions' value is equal to @samp{@var{TArray}(1) + @var{TArray}(2)}.

Subsequent invocations of @samp{DTIME()} return values accumulated since the
previous invocation.

@cindex wraparound, timings
@cindex limits, timings
On some systems, the underlying timings are represented
using types with sufficiently small limits that overflows
(wraparounds) are possible, such as 32-bit types.
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.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{DTime Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node EOShift Intrinsic
@subsubsection EOShift Intrinsic
@cindex EOShift intrinsic
@cindex intrinsics, EOShift

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL EOShift} to use this name for an
external procedure.

@node Epsilon Intrinsic
@subsubsection Epsilon Intrinsic
@cindex Epsilon intrinsic
@cindex intrinsics, Epsilon

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Epsilon} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node ErF Intrinsic
@subsubsection ErF Intrinsic
@cindex ErF intrinsic
@cindex intrinsics, ErF

@noindent
@example
ErF(@var{X})
@end example

@noindent
ErF: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the error function of @var{X}.
See @code{erf(3m)}, which provides the implementation.

@node ErFC Intrinsic
@subsubsection ErFC Intrinsic
@cindex ErFC intrinsic
@cindex intrinsics, ErFC

@noindent
@example
ErFC(@var{X})
@end example

@noindent
ErFC: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the complementary error function of @var{X}:
@samp{ERFC(R) = 1 - ERF(R)} (except that the result might be more
accurate than explicitly evaluating that formulae would give).
See @code{erfc(3m)}, which provides the implementation.

@node ETime Intrinsic (subroutine)
@subsubsection ETime Intrinsic (subroutine)
@cindex ETime intrinsic
@cindex intrinsics, ETime

@noindent
@example
CALL ETime(@var{TArray}, @var{Result})
@end example

@noindent
@var{TArray}: @code{REAL(KIND=1)}; DIMENSION(2); INTENT(OUT).

@noindent
@var{Result}: @code{REAL(KIND=1)}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Return the number of seconds of runtime
since the start of the process's execution
in @var{Result},
and the user and system components of this in @samp{@var{TArray}(1)}
and @samp{@var{TArray}(2)} respectively.
The value of @var{Result} is equal to @samp{@var{TArray}(1) + @var{TArray}(2)}.

@cindex wraparound, timings
@cindex limits, timings
On some systems, the underlying timings are represented
using types with sufficiently small limits that overflows
(wraparounds) are possible, such as 32-bit types.
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.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine.

For information on other intrinsics with the same name:
@xref{ETime Intrinsic (function)}.

@node ETime Intrinsic (function)
@subsubsection ETime Intrinsic (function)
@cindex ETime intrinsic
@cindex intrinsics, ETime

@noindent
@example
ETime(@var{TArray})
@end example

@noindent
ETime: @code{REAL(KIND=1)} function.

@noindent
@var{TArray}: @code{REAL(KIND=1)}; DIMENSION(2); INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Return the number of seconds of runtime
since the start of the process's execution
as the function value,
and the user and system components of this in @samp{@var{TArray}(1)}
and @samp{@var{TArray}(2)} respectively.
The functions' value is equal to @samp{@var{TArray}(1) + @var{TArray}(2)}.

@cindex wraparound, timings
@cindex limits, timings
On some systems, the underlying timings are represented
using types with sufficiently small limits that overflows
(wraparounds) are possible, such as 32-bit types.
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.

For information on other intrinsics with the same name:
@xref{ETime Intrinsic (subroutine)}.

@node Exit Intrinsic
@subsubsection Exit Intrinsic
@cindex Exit intrinsic
@cindex intrinsics, Exit

@noindent
@example
CALL Exit(@var{Status})
@end example

@noindent
@var{Status}: @code{INTEGER} not wider than the default kind; OPTIONAL; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Exit the program with status @var{Status} after closing open Fortran
I/O units and otherwise behaving as @code{exit(2)}.
If @var{Status} is omitted the canonical `success' value
will be returned to the system.

@end ifset
@ifset familyF77
@node Exp Intrinsic
@subsubsection Exp Intrinsic
@cindex Exp intrinsic
@cindex intrinsics, Exp

@noindent
@example
Exp(@var{X})
@end example

@noindent
Exp: @code{REAL} or @code{COMPLEX} function, the exact type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL} or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @samp{@var{e}**@var{X}}, where
@var{e} is approximately 2.7182818.

@xref{Log Intrinsic}, for the inverse of this function.

@end ifset
@ifset familyF90
@node Exponent Intrinsic
@subsubsection Exponent Intrinsic
@cindex Exponent intrinsic
@cindex intrinsics, Exponent

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Exponent} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node FDate Intrinsic (subroutine)
@subsubsection FDate Intrinsic (subroutine)
@cindex FDate intrinsic
@cindex intrinsics, FDate

@noindent
@example
CALL FDate(@var{Date})
@end example

@noindent
@var{Date}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the current date (using the same format as @code{CTIME()})
in @var{Date}.

Equivalent to:

@example
CALL CTIME(@var{Date}, TIME8())
@end example

@cindex Y10K compliance
@cindex Year 10000 compliance
@cindex wraparound, Y10K
@cindex limits, Y10K
Programs making use of this intrinsic
might not be Year 10000 (Y10K) compliant.
For example, the date might appear,
to such programs, to wrap around
(change from a larger value to a smaller one)
as of the Year 10000.

@xref{CTime Intrinsic (subroutine)}.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine.

For information on other intrinsics with the same name:
@xref{FDate Intrinsic (function)}.

@node FDate Intrinsic (function)
@subsubsection FDate Intrinsic (function)
@cindex FDate intrinsic
@cindex intrinsics, FDate

@noindent
@example
FDate()
@end example

@noindent
FDate: @code{CHARACTER*(*)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the current date (using the same format as @code{CTIME()}).

Equivalent to:

@example
CTIME(TIME8())
@end example

@cindex Y10K compliance
@cindex Year 10000 compliance
@cindex wraparound, Y10K
@cindex limits, Y10K
Programs making use of this intrinsic
might not be Year 10000 (Y10K) compliant.
For example, the date might appear,
to such programs, to wrap around
(change from a larger value to a smaller one)
as of the Year 10000.

@xref{CTime Intrinsic (function)}.

For information on other intrinsics with the same name:
@xref{FDate Intrinsic (subroutine)}.

@node FGet Intrinsic (subroutine)
@subsubsection FGet Intrinsic (subroutine)
@cindex FGet intrinsic
@cindex intrinsics, FGet

@noindent
@example
CALL FGet(@var{C}, @var{Status})
@end example

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Reads a single character into @var{C} in stream mode from unit 5
(by-passing normal formatted output) using @code{getc(3)}.
Returns in
@var{Status} 0 on success, @minus{}1 on end-of-file, and the error code
from @code{ferror(3)} otherwise.

Stream I/O should not be mixed with normal record-oriented (formatted or
unformatted) I/O on the same unit; the results are unpredictable.

For information on other intrinsics with the same name:
@xref{FGet Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node FGet Intrinsic (function)
@subsubsection FGet Intrinsic (function)
@cindex FGet intrinsic
@cindex intrinsics, FGet

@noindent
@example
FGet(@var{C})
@end example

@noindent
FGet: @code{INTEGER(KIND=1)} function.

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Reads a single character into @var{C} in stream mode from unit 5
(by-passing normal formatted input) using @code{getc(3)}.
Returns 0 on
success, @minus{}1 on end-of-file, and the error code from
@code{ferror(3)} otherwise.

Stream I/O should not be mixed with normal record-oriented (formatted or
unformatted) I/O on the same unit; the results are unpredictable.

For information on other intrinsics with the same name:
@xref{FGet Intrinsic (subroutine)}.

@end ifset
@ifset familyF2U
@node FGetC Intrinsic (subroutine)
@subsubsection FGetC Intrinsic (subroutine)
@cindex FGetC intrinsic
@cindex intrinsics, FGetC

@noindent
@example
CALL FGetC(@var{Unit}, @var{C}, @var{Status})
@end example

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Reads a single character into @var{C} in stream mode from unit @var{Unit}
(by-passing normal formatted output) using @code{getc(3)}.
Returns in
@var{Status} 0 on success, @minus{}1 on end-of-file, and the error code from
@code{ferror(3)} otherwise.

Stream I/O should not be mixed with normal record-oriented (formatted or
unformatted) I/O on the same unit; the results are unpredictable.

For information on other intrinsics with the same name:
@xref{FGetC Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node FGetC Intrinsic (function)
@subsubsection FGetC Intrinsic (function)
@cindex FGetC intrinsic
@cindex intrinsics, FGetC

@noindent
@example
FGetC(@var{Unit}, @var{C})
@end example

@noindent
FGetC: @code{INTEGER(KIND=1)} function.

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Reads a single character into @var{C} in stream mode from unit @var{Unit}
(by-passing normal formatted output) using @code{getc(3)}.
Returns 0 on
success, @minus{}1 on end-of-file, and the error code from
@code{ferror(3)} otherwise.

Stream I/O should not be mixed with normal record-oriented (formatted or
unformatted) I/O on the same unit; the results are unpredictable.

For information on other intrinsics with the same name:
@xref{FGetC Intrinsic (subroutine)}.

@end ifset
@ifset familyF77
@node Float Intrinsic
@subsubsection Float Intrinsic
@cindex Float intrinsic
@cindex intrinsics, Float

@noindent
@example
Float(@var{A})
@end example

@noindent
Float: @code{REAL(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{REAL()} that is specific
to one type for @var{A}.
@xref{Real Intrinsic}.

@end ifset
@ifset familyVXT
@node FloatI Intrinsic
@subsubsection FloatI Intrinsic
@cindex FloatI intrinsic
@cindex intrinsics, FloatI

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL FloatI} to use this name for an
external procedure.

@node FloatJ Intrinsic
@subsubsection FloatJ Intrinsic
@cindex FloatJ intrinsic
@cindex intrinsics, FloatJ

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL FloatJ} to use this name for an
external procedure.

@end ifset
@ifset familyF90
@node Floor Intrinsic
@subsubsection Floor Intrinsic
@cindex Floor intrinsic
@cindex intrinsics, Floor

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Floor} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node Flush Intrinsic
@subsubsection Flush Intrinsic
@cindex Flush intrinsic
@cindex intrinsics, Flush

@noindent
@example
CALL Flush(@var{Unit})
@end example

@noindent
@var{Unit}: @code{INTEGER}; OPTIONAL; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Flushes Fortran unit(s) currently open for output.
Without the optional argument, all such units are flushed,
otherwise just the unit specified by @var{Unit}.

Some non-GNU implementations of Fortran provide this intrinsic
as a library procedure that might or might not support the
(optional) @var{Unit} argument.

@node FNum Intrinsic
@subsubsection FNum Intrinsic
@cindex FNum intrinsic
@cindex intrinsics, FNum

@noindent
@example
FNum(@var{Unit})
@end example

@noindent
FNum: @code{INTEGER(KIND=1)} function.

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the Unix file descriptor number corresponding to the open
Fortran I/O unit @var{Unit}.
This could be passed to an interface to C I/O routines.

@node FPut Intrinsic (subroutine)
@subsubsection FPut Intrinsic (subroutine)
@cindex FPut intrinsic
@cindex intrinsics, FPut

@noindent
@example
CALL FPut(@var{C}, @var{Status})
@end example

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Writes the single character @var{C} in stream mode to unit 6
(by-passing normal formatted output) using @code{putc(3)}.
Returns in
@var{Status} 0 on success, the error code from @code{ferror(3)} otherwise.

Stream I/O should not be mixed with normal record-oriented (formatted or
unformatted) I/O on the same unit; the results are unpredictable.

For information on other intrinsics with the same name:
@xref{FPut Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node FPut Intrinsic (function)
@subsubsection FPut Intrinsic (function)
@cindex FPut intrinsic
@cindex intrinsics, FPut

@noindent
@example
FPut(@var{C})
@end example

@noindent
FPut: @code{INTEGER(KIND=1)} function.

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Writes the single character @var{C} in stream mode to unit 6
(by-passing normal formatted output) using @code{getc(3)}.
Returns 0 on
success, the error code from @code{ferror(3)} otherwise.

Stream I/O should not be mixed with normal record-oriented (formatted or
unformatted) I/O on the same unit; the results are unpredictable.

For information on other intrinsics with the same name:
@xref{FPut Intrinsic (subroutine)}.

@end ifset
@ifset familyF2U
@node FPutC Intrinsic (subroutine)
@subsubsection FPutC Intrinsic (subroutine)
@cindex FPutC intrinsic
@cindex intrinsics, FPutC

@noindent
@example
CALL FPutC(@var{Unit}, @var{C}, @var{Status})
@end example

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Writes the single character @var{Unit} in stream mode to unit 6
(by-passing normal formatted output) using @code{putc(3)}.
Returns in
@var{C} 0 on success, the error code from @code{ferror(3)} otherwise.

Stream I/O should not be mixed with normal record-oriented (formatted or
unformatted) I/O on the same unit; the results are unpredictable.

For information on other intrinsics with the same name:
@xref{FPutC Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node FPutC Intrinsic (function)
@subsubsection FPutC Intrinsic (function)
@cindex FPutC intrinsic
@cindex intrinsics, FPutC

@noindent
@example
FPutC(@var{Unit}, @var{C})
@end example

@noindent
FPutC: @code{INTEGER(KIND=1)} function.

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Writes the single character @var{C} in stream mode to unit @var{Unit}
(by-passing normal formatted output) using @code{putc(3)}.
Returns 0 on
success, the error code from @code{ferror(3)} otherwise.

Stream I/O should not be mixed with normal record-oriented (formatted or
unformatted) I/O on the same unit; the results are unpredictable.

For information on other intrinsics with the same name:
@xref{FPutC Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node Fraction Intrinsic
@subsubsection Fraction Intrinsic
@cindex Fraction intrinsic
@cindex intrinsics, Fraction

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Fraction} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node FSeek Intrinsic
@subsubsection FSeek Intrinsic
@cindex FSeek intrinsic
@cindex intrinsics, FSeek

@noindent
@example
CALL FSeek(@var{Unit}, @var{Offset}, @var{Whence}, @var{ErrLab})
@end example

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Offset}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Whence}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{ErrLab}: @samp{*@var{label}}, where @var{label} is the label
of an executable statement; OPTIONAL.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Attempts to move Fortran unit @var{Unit} to the specified
@var{Offset}: absolute offset if @var{Whence}=0; relative to the
current offset if @var{Whence}=1; relative to the end of the file if
@var{Whence}=2.
It branches to label @var{ErrLab} if @var{Unit} is
not open or if the call otherwise fails.

@node FStat Intrinsic (subroutine)
@subsubsection FStat Intrinsic (subroutine)
@cindex FStat intrinsic
@cindex intrinsics, FStat

@noindent
@example
CALL FStat(@var{Unit}, @var{SArray}, @var{Status})
@end example

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{SArray}: @code{INTEGER(KIND=1)}; DIMENSION(13); INTENT(OUT).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Obtains data about the file open on Fortran I/O unit @var{Unit} and
places them in the array @var{SArray}.
The values in this array are
extracted from the @code{stat} structure as returned by
@code{fstat(2)} q.v., as follows:

@enumerate
@item
Device ID

@item
Inode number

@item
File mode

@item
Number of links

@item
Owner's uid

@item
Owner's gid

@item
ID of device containing directory entry for file
(0 if not available)

@item
File size (bytes)

@item
Last access time

@item
Last modification time

@item
Last file status change time

@item
Preferred I/O block size (-1 if not available)

@item
Number of blocks allocated (-1 if not available)
@end enumerate

Not all these elements are relevant on all systems.
If an element is not relevant, it is returned as 0.

If the @var{Status} argument is supplied, it contains
0 on success or a nonzero error code upon return.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{FStat Intrinsic (function)}.

@node FStat Intrinsic (function)
@subsubsection FStat Intrinsic (function)
@cindex FStat intrinsic
@cindex intrinsics, FStat

@noindent
@example
FStat(@var{Unit}, @var{SArray})
@end example

@noindent
FStat: @code{INTEGER(KIND=1)} function.

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{SArray}: @code{INTEGER(KIND=1)}; DIMENSION(13); INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Obtains data about the file open on Fortran I/O unit @var{Unit} and
places them in the array @var{SArray}.
The values in this array are
extracted from the @code{stat} structure as returned by
@code{fstat(2)} q.v., as follows:

@enumerate
@item
Device ID

@item
Inode number

@item
File mode

@item
Number of links

@item
Owner's uid

@item
Owner's gid

@item
ID of device containing directory entry for file
(0 if not available)

@item
File size (bytes)

@item
Last access time

@item
Last modification time

@item
Last file status change time

@item
Preferred I/O block size (-1 if not available)

@item
Number of blocks allocated (-1 if not available)
@end enumerate

Not all these elements are relevant on all systems.
If an element is not relevant, it is returned as 0.

Returns 0 on success or a nonzero error code.

For information on other intrinsics with the same name:
@xref{FStat Intrinsic (subroutine)}.

@node FTell Intrinsic (subroutine)
@subsubsection FTell Intrinsic (subroutine)
@cindex FTell intrinsic
@cindex intrinsics, FTell

@noindent
@example
CALL FTell(@var{Unit}, @var{Offset})
@end example

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Offset}: @code{INTEGER(KIND=1)}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Sets @var{Offset} to the current offset of Fortran unit @var{Unit}
(or to @minus{}1 if @var{Unit} is not open).

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine.

For information on other intrinsics with the same name:
@xref{FTell Intrinsic (function)}.

@node FTell Intrinsic (function)
@subsubsection FTell Intrinsic (function)
@cindex FTell intrinsic
@cindex intrinsics, FTell

@noindent
@example
FTell(@var{Unit})
@end example

@noindent
FTell: @code{INTEGER(KIND=1)} function.

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the current offset of Fortran unit @var{Unit}
(or @minus{}1 if @var{Unit} is not open).

For information on other intrinsics with the same name:
@xref{FTell Intrinsic (subroutine)}.

@node GError Intrinsic
@subsubsection GError Intrinsic
@cindex GError intrinsic
@cindex intrinsics, GError

@noindent
@example
CALL GError(@var{Message})
@end example

@noindent
@var{Message}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the system error message corresponding to the last system
error (C @code{errno}).

@node GetArg Intrinsic
@subsubsection GetArg Intrinsic
@cindex GetArg intrinsic
@cindex intrinsics, GetArg

@noindent
@example
CALL GetArg(@var{Pos}, @var{Value})
@end example

@noindent
@var{Pos}: @code{INTEGER} not wider than the default kind; scalar; INTENT(IN).

@noindent
@var{Value}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Sets @var{Value} to the @var{Pos}-th command-line argument (or to all
blanks if there are fewer than @var{Value} command-line arguments);
@code{CALL GETARG(0, @var{value})} sets @var{value} to the name of the
program (on systems that support this feature).

@xref{IArgC Intrinsic}, for information on how to get the number
of arguments.

@node GetCWD Intrinsic (subroutine)
@subsubsection GetCWD Intrinsic (subroutine)
@cindex GetCWD intrinsic
@cindex intrinsics, GetCWD

@noindent
@example
CALL GetCWD(@var{Name}, @var{Status})
@end example

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Places the current working directory in @var{Name}.
If the @var{Status} argument is supplied, it contains 0
success or a nonzero error code upon return
(@code{ENOSYS} if the system does not provide @code{getcwd(3)}
or @code{getwd(3)}).

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{GetCWD Intrinsic (function)}.

@node GetCWD Intrinsic (function)
@subsubsection GetCWD Intrinsic (function)
@cindex GetCWD intrinsic
@cindex intrinsics, GetCWD

@noindent
@example
GetCWD(@var{Name})
@end example

@noindent
GetCWD: @code{INTEGER(KIND=1)} function.

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Places the current working directory in @var{Name}.
Returns 0 on
success, otherwise a nonzero error code
(@code{ENOSYS} if the system does not provide @code{getcwd(3)}
or @code{getwd(3)}).

For information on other intrinsics with the same name:
@xref{GetCWD Intrinsic (subroutine)}.

@node GetEnv Intrinsic
@subsubsection GetEnv Intrinsic
@cindex GetEnv intrinsic
@cindex intrinsics, GetEnv

@noindent
@example
CALL GetEnv(@var{Name}, @var{Value})
@end example

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Value}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Sets @var{Value} to the value of environment variable given by the
value of @var{Name} (@code{$name} in shell terms) or to blanks if
@code{$name} has not been set.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{Name}---otherwise,
trailing blanks in @var{Name} are ignored.

@node GetGId Intrinsic
@subsubsection GetGId Intrinsic
@cindex GetGId intrinsic
@cindex intrinsics, GetGId

@noindent
@example
GetGId()
@end example

@noindent
GetGId: @code{INTEGER(KIND=1)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the group id for the current process.

@node GetLog Intrinsic
@subsubsection GetLog Intrinsic
@cindex GetLog intrinsic
@cindex intrinsics, GetLog

@noindent
@example
CALL GetLog(@var{Login})
@end example

@noindent
@var{Login}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the login name for the process in @var{Login}.

@emph{Caution:} On some systems, the @code{getlogin(3)}
function, which this intrinsic calls at run time,
is either not implemented or returns a null pointer.
In the latter case, this intrinsic returns blanks
in @var{Login}.

@node GetPId Intrinsic
@subsubsection GetPId Intrinsic
@cindex GetPId intrinsic
@cindex intrinsics, GetPId

@noindent
@example
GetPId()
@end example

@noindent
GetPId: @code{INTEGER(KIND=1)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the process id for the current process.

@node GetUId Intrinsic
@subsubsection GetUId Intrinsic
@cindex GetUId intrinsic
@cindex intrinsics, GetUId

@noindent
@example
GetUId()
@end example

@noindent
GetUId: @code{INTEGER(KIND=1)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the user id for the current process.

@node GMTime Intrinsic
@subsubsection GMTime Intrinsic
@cindex GMTime intrinsic
@cindex intrinsics, GMTime

@noindent
@example
CALL GMTime(@var{STime}, @var{TArray})
@end example

@noindent
@var{STime}: @code{INTEGER(KIND=1)}; scalar; INTENT(IN).

@noindent
@var{TArray}: @code{INTEGER(KIND=1)}; DIMENSION(9); INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Given a system time value @var{STime}, fills @var{TArray} with values
extracted from it appropriate to the GMT time zone using
@code{gmtime(3)}.

The array elements are 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 isn't available.
@end enumerate

@node HostNm Intrinsic (subroutine)
@subsubsection HostNm Intrinsic (subroutine)
@cindex HostNm intrinsic
@cindex intrinsics, HostNm

@noindent
@example
CALL HostNm(@var{Name}, @var{Status})
@end example

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Fills @var{Name} with the system's host name returned by
@code{gethostname(2)}.
If the @var{Status} argument is supplied, it contains
0 on success or a nonzero error code upon return
(@code{ENOSYS} if the system does not provide @code{gethostname(2)}).

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

On some systems (specifically SCO) it might be necessary to link the
``socket'' library if you call this routine.
Typically this means adding @samp{-lg2c -lsocket -lm}
to the @code{g77} command line when linking the program.

For information on other intrinsics with the same name:
@xref{HostNm Intrinsic (function)}.

@node HostNm Intrinsic (function)
@subsubsection HostNm Intrinsic (function)
@cindex HostNm intrinsic
@cindex intrinsics, HostNm

@noindent
@example
HostNm(@var{Name})
@end example

@noindent
HostNm: @code{INTEGER(KIND=1)} function.

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Fills @var{Name} with the system's host name returned by
@code{gethostname(2)}, returning 0 on success or a nonzero error code
(@code{ENOSYS} if the system does not provide @code{gethostname(2)}).

On some systems (specifically SCO) it might be necessary to link the
``socket'' library if you call this routine.
Typically this means adding @samp{-lg2c -lsocket -lm}
to the @code{g77} command line when linking the program.

For information on other intrinsics with the same name:
@xref{HostNm Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node Huge Intrinsic
@subsubsection Huge Intrinsic
@cindex Huge intrinsic
@cindex intrinsics, Huge

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Huge} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node IAbs Intrinsic
@subsubsection IAbs Intrinsic
@cindex IAbs intrinsic
@cindex intrinsics, IAbs

@noindent
@example
IAbs(@var{A})
@end example

@noindent
IAbs: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{ABS()} that is specific
to one type for @var{A}.
@xref{Abs Intrinsic}.

@end ifset
@ifset familyASC
@node IAChar Intrinsic
@subsubsection IAChar Intrinsic
@cindex IAChar intrinsic
@cindex intrinsics, IAChar

@noindent
@example
IAChar(@var{C})
@end example

@noindent
IAChar: @code{INTEGER(KIND=1)} function.

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}, @code{f90}.

@noindent
Description:

Returns the code for the ASCII character in the
first character position of @var{C}.

@xref{AChar Intrinsic}, for the inverse of this function.

@xref{IChar Intrinsic}, for the function corresponding
to the system's native character set.

@end ifset
@ifset familyMIL
@node IAnd Intrinsic
@subsubsection IAnd Intrinsic
@cindex IAnd intrinsic
@cindex intrinsics, IAnd

@noindent
@example
IAnd(@var{I}, @var{J})
@end example

@noindent
IAnd: @code{INTEGER} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{J}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Returns value resulting from boolean AND of
pair of bits in each of @var{I} and @var{J}.

@end ifset
@ifset familyF2U
@node IArgC Intrinsic
@subsubsection IArgC Intrinsic
@cindex IArgC intrinsic
@cindex intrinsics, IArgC

@noindent
@example
IArgC()
@end example

@noindent
IArgC: @code{INTEGER(KIND=1)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the number of command-line arguments.

This count does not include the specification of the program
name itself.

@end ifset
@ifset familyMIL
@node IBClr Intrinsic
@subsubsection IBClr Intrinsic
@cindex IBClr intrinsic
@cindex intrinsics, IBClr

@noindent
@example
IBClr(@var{I}, @var{Pos})
@end example

@noindent
IBClr: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Pos}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Returns the value of @var{I} with bit @var{Pos} cleared (set to
zero).
@xref{BTest Intrinsic}, for information on bit positions.

@node IBits Intrinsic
@subsubsection IBits Intrinsic
@cindex IBits intrinsic
@cindex intrinsics, IBits

@noindent
@example
IBits(@var{I}, @var{Pos}, @var{Len})
@end example

@noindent
IBits: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Pos}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Len}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Extracts a subfield 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 @samp{@var{Pos}+@var{Len}} must be less than or equal to the value
@samp{BIT_SIZE(@var{I})}.
@xref{Bit_Size Intrinsic}.

@node IBSet Intrinsic
@subsubsection IBSet Intrinsic
@cindex IBSet intrinsic
@cindex intrinsics, IBSet

@noindent
@example
IBSet(@var{I}, @var{Pos})
@end example

@noindent
IBSet: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Pos}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Returns the value of @var{I} with bit @var{Pos} set (to one).
@xref{BTest Intrinsic}, for information on bit positions.

@end ifset
@ifset familyF77
@node IChar Intrinsic
@subsubsection IChar Intrinsic
@cindex IChar intrinsic
@cindex intrinsics, IChar

@noindent
@example
IChar(@var{C})
@end example

@noindent
IChar: @code{INTEGER(KIND=1)} function.

@noindent
@var{C}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the code for the character in the
first character position of @var{C}.

Because the system's native character set is used,
the correspondence between character and their codes
is not necessarily the same between GNU Fortran
implementations.

Note that no intrinsic exists to convert a printable
character string to a numerical value.
For example, there is no intrinsic that, given
the @code{CHARACTER} value @samp{'154'}, returns an
@code{INTEGER} or @code{REAL} value with the value @samp{154}.

Instead, you can use internal-file I/O to do this kind
of conversion.
For example:

@smallexample
INTEGER VALUE
CHARACTER*10 STRING
STRING = '154'
READ (STRING, '(I10)'), VALUE
PRINT *, VALUE
END
@end smallexample

The above program, when run, prints:

@smallexample
 154
@end smallexample

@xref{Char Intrinsic}, for the inverse of the @code{ICHAR} function.

@xref{IAChar Intrinsic}, for the function corresponding
to the ASCII character set.

@end ifset
@ifset familyF2U
@node IDate Intrinsic (UNIX)
@subsubsection IDate Intrinsic (UNIX)
@cindex IDate intrinsic
@cindex intrinsics, IDate

@noindent
@example
CALL IDate(@var{TArray})
@end example

@noindent
@var{TArray}: @code{INTEGER(KIND=1)}; DIMENSION(3); INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Fills @var{TArray} with the numerical values at the current local time.
The day (in the range 1--31), month (in the range 1--12),
and year appear in elements 1, 2, and 3 of @var{TArray}, respectively.
The year has four significant digits.

@cindex Y10K compliance
@cindex Year 10000 compliance
@cindex wraparound, Y10K
@cindex limits, Y10K
Programs making use of this intrinsic
might not be Year 10000 (Y10K) compliant.
For example, the date might appear,
to such programs, to wrap around
(change from a larger value to a smaller one)
as of the Year 10000.

For information on other intrinsics with the same name:
@xref{IDate Intrinsic (VXT)}.

@end ifset
@ifset familyVXT
@node IDate Intrinsic (VXT)
@subsubsection IDate Intrinsic (VXT)
@cindex IDate intrinsic
@cindex intrinsics, IDate

@noindent
@example
CALL IDate(@var{M}, @var{D}, @var{Y})
@end example

@noindent
@var{M}: @code{INTEGER(KIND=1)}; scalar; INTENT(OUT).

@noindent
@var{D}: @code{INTEGER(KIND=1)}; scalar; INTENT(OUT).

@noindent
@var{Y}: @code{INTEGER(KIND=1)}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{vxt}.

@noindent
Description:

Returns the numerical values of the current local time.
The month (in the range 1--12) is returned in @var{M},
the day (in the range 1--31) in @var{D},
and the year in @var{Y} (in the range 0--99).

@cindex Y2K compliance
@cindex Year 2000 compliance
@cindex wraparound, Y2K
@cindex limits, Y2K
This intrinsic is not recommended, due to the fact that
its return value for year wraps around century boundaries
(change from a larger value to a smaller one).
Therefore, programs making use of this intrinsic, for
instance, might not be Year 2000 (Y2K) compliant.
For example, the date might appear,
to such programs, to wrap around
as of the Year 2000.

@xref{IDate Intrinsic (UNIX)}, for information on obtaining more digits
for the current date.

For information on other intrinsics with the same name:
@xref{IDate Intrinsic (UNIX)}.

@end ifset
@ifset familyF77
@node IDiM Intrinsic
@subsubsection IDiM Intrinsic
@cindex IDiM intrinsic
@cindex intrinsics, IDiM

@noindent
@example
IDiM(@var{X}, @var{Y})
@end example

@noindent
IDiM: @code{INTEGER(KIND=1)} function.

@noindent
@var{X}: @code{INTEGER(KIND=1)}; scalar; INTENT(IN).

@noindent
@var{Y}: @code{INTEGER(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{DIM()} that is specific
to one type for @var{X} and @var{Y}.
@xref{DiM Intrinsic}.

@node IDInt Intrinsic
@subsubsection IDInt Intrinsic
@cindex IDInt intrinsic
@cindex intrinsics, IDInt

@noindent
@example
IDInt(@var{A})
@end example

@noindent
IDInt: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{INT()} that is specific
to one type for @var{A}.
@xref{Int Intrinsic}.

@node IDNInt Intrinsic
@subsubsection IDNInt Intrinsic
@cindex IDNInt intrinsic
@cindex intrinsics, IDNInt

@noindent
@example
IDNInt(@var{A})
@end example

@noindent
IDNInt: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{NINT()} that is specific
to one type for @var{A}.
@xref{NInt Intrinsic}.

@end ifset
@ifset familyMIL
@node IEOr Intrinsic
@subsubsection IEOr Intrinsic
@cindex IEOr intrinsic
@cindex intrinsics, IEOr

@noindent
@example
IEOr(@var{I}, @var{J})
@end example

@noindent
IEOr: @code{INTEGER} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{J}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Returns value resulting from boolean exclusive-OR of
pair of bits in each of @var{I} and @var{J}.

@end ifset
@ifset familyF2U
@node IErrNo Intrinsic
@subsubsection IErrNo Intrinsic
@cindex IErrNo intrinsic
@cindex intrinsics, IErrNo

@noindent
@example
IErrNo()
@end example

@noindent
IErrNo: @code{INTEGER(KIND=1)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the last system error number (corresponding to the C
@code{errno}).

@end ifset
@ifset familyF77
@node IFix Intrinsic
@subsubsection IFix Intrinsic
@cindex IFix intrinsic
@cindex intrinsics, IFix

@noindent
@example
IFix(@var{A})
@end example

@noindent
IFix: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{INT()} that is specific
to one type for @var{A}.
@xref{Int Intrinsic}.

@end ifset
@ifset familyVXT
@node IIAbs Intrinsic
@subsubsection IIAbs Intrinsic
@cindex IIAbs intrinsic
@cindex intrinsics, IIAbs

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIAbs} to use this name for an
external procedure.

@node IIAnd Intrinsic
@subsubsection IIAnd Intrinsic
@cindex IIAnd intrinsic
@cindex intrinsics, IIAnd

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIAnd} to use this name for an
external procedure.

@node IIBClr Intrinsic
@subsubsection IIBClr Intrinsic
@cindex IIBClr intrinsic
@cindex intrinsics, IIBClr

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIBClr} to use this name for an
external procedure.

@node IIBits Intrinsic
@subsubsection IIBits Intrinsic
@cindex IIBits intrinsic
@cindex intrinsics, IIBits

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIBits} to use this name for an
external procedure.

@node IIBSet Intrinsic
@subsubsection IIBSet Intrinsic
@cindex IIBSet intrinsic
@cindex intrinsics, IIBSet

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIBSet} to use this name for an
external procedure.

@node IIDiM Intrinsic
@subsubsection IIDiM Intrinsic
@cindex IIDiM intrinsic
@cindex intrinsics, IIDiM

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIDiM} to use this name for an
external procedure.

@node IIDInt Intrinsic
@subsubsection IIDInt Intrinsic
@cindex IIDInt intrinsic
@cindex intrinsics, IIDInt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIDInt} to use this name for an
external procedure.

@node IIDNnt Intrinsic
@subsubsection IIDNnt Intrinsic
@cindex IIDNnt intrinsic
@cindex intrinsics, IIDNnt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIDNnt} to use this name for an
external procedure.

@node IIEOr Intrinsic
@subsubsection IIEOr Intrinsic
@cindex IIEOr intrinsic
@cindex intrinsics, IIEOr

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIEOr} to use this name for an
external procedure.

@node IIFix Intrinsic
@subsubsection IIFix Intrinsic
@cindex IIFix intrinsic
@cindex intrinsics, IIFix

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIFix} to use this name for an
external procedure.

@node IInt Intrinsic
@subsubsection IInt Intrinsic
@cindex IInt intrinsic
@cindex intrinsics, IInt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IInt} to use this name for an
external procedure.

@node IIOr Intrinsic
@subsubsection IIOr Intrinsic
@cindex IIOr intrinsic
@cindex intrinsics, IIOr

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIOr} to use this name for an
external procedure.

@node IIQint Intrinsic
@subsubsection IIQint Intrinsic
@cindex IIQint intrinsic
@cindex intrinsics, IIQint

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIQint} to use this name for an
external procedure.

@node IIQNnt Intrinsic
@subsubsection IIQNnt Intrinsic
@cindex IIQNnt intrinsic
@cindex intrinsics, IIQNnt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIQNnt} to use this name for an
external procedure.

@node IIShftC Intrinsic
@subsubsection IIShftC Intrinsic
@cindex IIShftC intrinsic
@cindex intrinsics, IIShftC

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IIShftC} to use this name for an
external procedure.

@node IISign Intrinsic
@subsubsection IISign Intrinsic
@cindex IISign intrinsic
@cindex intrinsics, IISign

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IISign} to use this name for an
external procedure.

@end ifset
@ifset familyF2C
@node Imag Intrinsic
@subsubsection Imag Intrinsic
@cindex Imag intrinsic
@cindex intrinsics, Imag

@noindent
@example
Imag(@var{Z})
@end example

@noindent
Imag: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{Z}.

@noindent
@var{Z}: @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

The imaginary part of @var{Z} is returned, without conversion.

@emph{Note:} The way to do this in standard Fortran 90
is @samp{AIMAG(@var{Z})}.
However, when, for example, @var{Z} is @code{DOUBLE COMPLEX},
@samp{AIMAG(@var{Z})} means something different for some compilers
that are not true Fortran 90 compilers but offer some
extensions standardized by Fortran 90 (such as the
@code{DOUBLE COMPLEX} type, also known as @code{COMPLEX(KIND=2)}).

The advantage of @code{IMAG()} is that, while not necessarily
more or less portable than @code{AIMAG()}, it is more likely to
cause a compiler that doesn't support it to produce a diagnostic
than generate incorrect code.

@xref{REAL() and AIMAG() of Complex}, for more information.

@end ifset
@ifset familyGNU
@node ImagPart Intrinsic
@subsubsection ImagPart Intrinsic
@cindex ImagPart intrinsic
@cindex intrinsics, ImagPart

@noindent
@example
ImagPart(@var{Z})
@end example

@noindent
ImagPart: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{Z}.

@noindent
@var{Z}: @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{gnu}.

@noindent
Description:

The imaginary part of @var{Z} is returned, without conversion.

@emph{Note:} The way to do this in standard Fortran 90
is @samp{AIMAG(@var{Z})}.
However, when, for example, @var{Z} is @code{DOUBLE COMPLEX},
@samp{AIMAG(@var{Z})} means something different for some compilers
that are not true Fortran 90 compilers but offer some
extensions standardized by Fortran 90 (such as the
@code{DOUBLE COMPLEX} type, also known as @code{COMPLEX(KIND=2)}).

The advantage of @code{IMAGPART()} is that, while not necessarily
more or less portable than @code{AIMAG()}, it is more likely to
cause a compiler that doesn't support it to produce a diagnostic
than generate incorrect code.

@xref{REAL() and AIMAG() of Complex}, for more information.

@end ifset
@ifset familyVXT
@node IMax0 Intrinsic
@subsubsection IMax0 Intrinsic
@cindex IMax0 intrinsic
@cindex intrinsics, IMax0

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IMax0} to use this name for an
external procedure.

@node IMax1 Intrinsic
@subsubsection IMax1 Intrinsic
@cindex IMax1 intrinsic
@cindex intrinsics, IMax1

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IMax1} to use this name for an
external procedure.

@node IMin0 Intrinsic
@subsubsection IMin0 Intrinsic
@cindex IMin0 intrinsic
@cindex intrinsics, IMin0

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IMin0} to use this name for an
external procedure.

@node IMin1 Intrinsic
@subsubsection IMin1 Intrinsic
@cindex IMin1 intrinsic
@cindex intrinsics, IMin1

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IMin1} to use this name for an
external procedure.

@node IMod Intrinsic
@subsubsection IMod Intrinsic
@cindex IMod intrinsic
@cindex intrinsics, IMod

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IMod} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node Index Intrinsic
@subsubsection Index Intrinsic
@cindex Index intrinsic
@cindex intrinsics, Index

@noindent
@example
Index(@var{String}, @var{Substring})
@end example

@noindent
Index: @code{INTEGER(KIND=1)} function.

@noindent
@var{String}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Substring}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
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} doesn't occur in @var{String}, zero is returned.

@end ifset
@ifset familyVXT
@node INInt Intrinsic
@subsubsection INInt Intrinsic
@cindex INInt intrinsic
@cindex intrinsics, INInt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL INInt} to use this name for an
external procedure.

@node INot Intrinsic
@subsubsection INot Intrinsic
@cindex INot intrinsic
@cindex intrinsics, INot

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL INot} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node Int Intrinsic
@subsubsection Int Intrinsic
@cindex Int intrinsic
@cindex intrinsics, Int

@noindent
@example
Int(@var{A})
@end example

@noindent
Int: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @var{A} with the fractional portion of its
magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=1)}.

If @var{A} is type @code{COMPLEX}, its real part is
truncated and converted, and its imaginary part is disregarded.

@xref{NInt Intrinsic}, for how to convert, rounded to nearest
whole number.

@xref{AInt Intrinsic}, for how to truncate to whole number
without converting.

@end ifset
@ifset familyGNU
@node Int2 Intrinsic
@subsubsection Int2 Intrinsic
@cindex Int2 intrinsic
@cindex intrinsics, Int2

@noindent
@example
Int2(@var{A})
@end example

@noindent
Int2: @code{INTEGER(KIND=6)} function.

@noindent
@var{A}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{gnu}.

@noindent
Description:

Returns @var{A} with the fractional portion of its
magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=6)}.

If @var{A} is type @code{COMPLEX}, its real part
is truncated and converted, and its imaginary part is disregarded.

@xref{Int Intrinsic}.

The precise meaning of this intrinsic might change
in a future version of the GNU Fortran language,
as more is learned about how it is used.

@node Int8 Intrinsic
@subsubsection Int8 Intrinsic
@cindex Int8 intrinsic
@cindex intrinsics, Int8

@noindent
@example
Int8(@var{A})
@end example

@noindent
Int8: @code{INTEGER(KIND=2)} function.

@noindent
@var{A}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{gnu}.

@noindent
Description:

Returns @var{A} with the fractional portion of its
magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=2)}.

If @var{A} is type @code{COMPLEX}, its real part
is truncated and converted, and its imaginary part is disregarded.

@xref{Int Intrinsic}.

The precise meaning of this intrinsic might change
in a future version of the GNU Fortran language,
as more is learned about how it is used.

@end ifset
@ifset familyMIL
@node IOr Intrinsic
@subsubsection IOr Intrinsic
@cindex IOr intrinsic
@cindex intrinsics, IOr

@noindent
@example
IOr(@var{I}, @var{J})
@end example

@noindent
IOr: @code{INTEGER} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{J}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Returns value resulting from boolean OR of
pair of bits in each of @var{I} and @var{J}.

@end ifset
@ifset familyF2U
@node IRand Intrinsic
@subsubsection IRand Intrinsic
@cindex IRand intrinsic
@cindex intrinsics, IRand

@noindent
@example
IRand(@var{Flag})
@end example

@noindent
IRand: @code{INTEGER(KIND=1)} function.

@noindent
@var{Flag}: @code{INTEGER}; OPTIONAL; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns a uniform quasi-random number up to a system-dependent limit.
If @var{Flag} is 0, the next number in sequence is returned; if
@var{Flag} is 1, the generator is restarted by calling the UNIX function
@samp{srand(0)}; if @var{Flag} has any other value,
it is used as a new seed with @code{srand()}.

@xref{SRand Intrinsic}.

@emph{Note:} As typically implemented (by the routine of the same
name in the C library), this random number generator is a very poor
one, though the BSD and GNU libraries provide a much better
implementation than the `traditional' one.
On a different system you almost certainly want to use something better.

@node IsaTty Intrinsic
@subsubsection IsaTty Intrinsic
@cindex IsaTty intrinsic
@cindex intrinsics, IsaTty

@noindent
@example
IsaTty(@var{Unit})
@end example

@noindent
IsaTty: @code{LOGICAL(KIND=1)} function.

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns @code{.TRUE.} if and only if the Fortran I/O unit
specified by @var{Unit} is connected
to a terminal device.
See @code{isatty(3)}.

@end ifset
@ifset familyMIL
@node IShft Intrinsic
@subsubsection IShft Intrinsic
@cindex IShft intrinsic
@cindex intrinsics, IShft

@noindent
@example
IShft(@var{I}, @var{Shift})
@end example

@noindent
IShft: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Shift}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

All bits representing @var{I} are shifted @var{Shift} places.
@samp{@var{Shift}.GT.0} indicates a left shift, @samp{@var{Shift}.EQ.0}
indicates no shift and @samp{@var{Shift}.LT.0} indicates a right shift.
If the absolute value of the shift count is greater than
@samp{BIT_SIZE(@var{I})}, the result is undefined.
Bits shifted out from the left end or the right end are lost.
Zeros are shifted in from the opposite end.

@xref{IShftC Intrinsic}, for the circular-shift equivalent.

@node IShftC Intrinsic
@subsubsection IShftC Intrinsic
@cindex IShftC intrinsic
@cindex intrinsics, IShftC

@noindent
@example
IShftC(@var{I}, @var{Shift}, @var{Size})
@end example

@noindent
IShftC: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Shift}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Size}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

The rightmost @var{Size} bits of the argument @var{I}
are shifted circularly @var{Shift}
places, i.e.@: the bits shifted out of one end are shifted into 
the opposite end.
No bits are lost.
The unshifted bits of the result are the same as
the unshifted bits of @var{I}.
The  absolute value of the argument @var{Shift}
must be less than or equal to @var{Size}.  
The value of @var{Size} must be greater than or equal to one and less than 
or equal to @samp{BIT_SIZE(@var{I})}.

@xref{IShft Intrinsic}, for the logical shift equivalent.

@end ifset
@ifset familyF77
@node ISign Intrinsic
@subsubsection ISign Intrinsic
@cindex ISign intrinsic
@cindex intrinsics, ISign

@noindent
@example
ISign(@var{A}, @var{B})
@end example

@noindent
ISign: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER(KIND=1)}; scalar; INTENT(IN).

@noindent
@var{B}: @code{INTEGER(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{SIGN()} that is specific
to one type for @var{A} and @var{B}.
@xref{Sign Intrinsic}.

@end ifset
@ifset familyF2U
@node ITime Intrinsic
@subsubsection ITime Intrinsic
@cindex ITime intrinsic
@cindex intrinsics, ITime

@noindent
@example
CALL ITime(@var{TArray})
@end example

@noindent
@var{TArray}: @code{INTEGER(KIND=1)}; DIMENSION(3); INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the current local time hour, minutes, and seconds in elements
1, 2, and 3 of @var{TArray}, respectively.

@end ifset
@ifset familyVXT
@node IZExt Intrinsic
@subsubsection IZExt Intrinsic
@cindex IZExt intrinsic
@cindex intrinsics, IZExt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL IZExt} to use this name for an
external procedure.

@node JIAbs Intrinsic
@subsubsection JIAbs Intrinsic
@cindex JIAbs intrinsic
@cindex intrinsics, JIAbs

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIAbs} to use this name for an
external procedure.

@node JIAnd Intrinsic
@subsubsection JIAnd Intrinsic
@cindex JIAnd intrinsic
@cindex intrinsics, JIAnd

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIAnd} to use this name for an
external procedure.

@node JIBClr Intrinsic
@subsubsection JIBClr Intrinsic
@cindex JIBClr intrinsic
@cindex intrinsics, JIBClr

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIBClr} to use this name for an
external procedure.

@node JIBits Intrinsic
@subsubsection JIBits Intrinsic
@cindex JIBits intrinsic
@cindex intrinsics, JIBits

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIBits} to use this name for an
external procedure.

@node JIBSet Intrinsic
@subsubsection JIBSet Intrinsic
@cindex JIBSet intrinsic
@cindex intrinsics, JIBSet

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIBSet} to use this name for an
external procedure.

@node JIDiM Intrinsic
@subsubsection JIDiM Intrinsic
@cindex JIDiM intrinsic
@cindex intrinsics, JIDiM

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIDiM} to use this name for an
external procedure.

@node JIDInt Intrinsic
@subsubsection JIDInt Intrinsic
@cindex JIDInt intrinsic
@cindex intrinsics, JIDInt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIDInt} to use this name for an
external procedure.

@node JIDNnt Intrinsic
@subsubsection JIDNnt Intrinsic
@cindex JIDNnt intrinsic
@cindex intrinsics, JIDNnt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIDNnt} to use this name for an
external procedure.

@node JIEOr Intrinsic
@subsubsection JIEOr Intrinsic
@cindex JIEOr intrinsic
@cindex intrinsics, JIEOr

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIEOr} to use this name for an
external procedure.

@node JIFix Intrinsic
@subsubsection JIFix Intrinsic
@cindex JIFix intrinsic
@cindex intrinsics, JIFix

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIFix} to use this name for an
external procedure.

@node JInt Intrinsic
@subsubsection JInt Intrinsic
@cindex JInt intrinsic
@cindex intrinsics, JInt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JInt} to use this name for an
external procedure.

@node JIOr Intrinsic
@subsubsection JIOr Intrinsic
@cindex JIOr intrinsic
@cindex intrinsics, JIOr

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIOr} to use this name for an
external procedure.

@node JIQint Intrinsic
@subsubsection JIQint Intrinsic
@cindex JIQint intrinsic
@cindex intrinsics, JIQint

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIQint} to use this name for an
external procedure.

@node JIQNnt Intrinsic
@subsubsection JIQNnt Intrinsic
@cindex JIQNnt intrinsic
@cindex intrinsics, JIQNnt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIQNnt} to use this name for an
external procedure.

@node JIShft Intrinsic
@subsubsection JIShft Intrinsic
@cindex JIShft intrinsic
@cindex intrinsics, JIShft

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIShft} to use this name for an
external procedure.

@node JIShftC Intrinsic
@subsubsection JIShftC Intrinsic
@cindex JIShftC intrinsic
@cindex intrinsics, JIShftC

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JIShftC} to use this name for an
external procedure.

@node JISign Intrinsic
@subsubsection JISign Intrinsic
@cindex JISign intrinsic
@cindex intrinsics, JISign

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JISign} to use this name for an
external procedure.

@node JMax0 Intrinsic
@subsubsection JMax0 Intrinsic
@cindex JMax0 intrinsic
@cindex intrinsics, JMax0

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JMax0} to use this name for an
external procedure.

@node JMax1 Intrinsic
@subsubsection JMax1 Intrinsic
@cindex JMax1 intrinsic
@cindex intrinsics, JMax1

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JMax1} to use this name for an
external procedure.

@node JMin0 Intrinsic
@subsubsection JMin0 Intrinsic
@cindex JMin0 intrinsic
@cindex intrinsics, JMin0

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JMin0} to use this name for an
external procedure.

@node JMin1 Intrinsic
@subsubsection JMin1 Intrinsic
@cindex JMin1 intrinsic
@cindex intrinsics, JMin1

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JMin1} to use this name for an
external procedure.

@node JMod Intrinsic
@subsubsection JMod Intrinsic
@cindex JMod intrinsic
@cindex intrinsics, JMod

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JMod} to use this name for an
external procedure.

@node JNInt Intrinsic
@subsubsection JNInt Intrinsic
@cindex JNInt intrinsic
@cindex intrinsics, JNInt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JNInt} to use this name for an
external procedure.

@node JNot Intrinsic
@subsubsection JNot Intrinsic
@cindex JNot intrinsic
@cindex intrinsics, JNot

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JNot} to use this name for an
external procedure.

@node JZExt Intrinsic
@subsubsection JZExt Intrinsic
@cindex JZExt intrinsic
@cindex intrinsics, JZExt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL JZExt} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node Kill Intrinsic (subroutine)
@subsubsection Kill Intrinsic (subroutine)
@cindex Kill intrinsic
@cindex intrinsics, Kill

@noindent
@example
CALL Kill(@var{Pid}, @var{Signal}, @var{Status})
@end example

@noindent
@var{Pid}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Signal}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Sends the signal specified by @var{Signal} to the process @var{Pid}.
If the @var{Status} argument is supplied, it contains
0 on success or a nonzero error code upon return.
See @code{kill(2)}.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{Kill Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node Kill Intrinsic (function)
@subsubsection Kill Intrinsic (function)
@cindex Kill intrinsic
@cindex intrinsics, Kill

@noindent
@example
Kill(@var{Pid}, @var{Signal})
@end example

@noindent
Kill: @code{INTEGER(KIND=1)} function.

@noindent
@var{Pid}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Signal}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Sends the signal specified by @var{Signal} to the process @var{Pid}.
Returns 0 on success or a nonzero error code.
See @code{kill(2)}.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{Kill Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node Kind Intrinsic
@subsubsection Kind Intrinsic
@cindex Kind intrinsic
@cindex intrinsics, Kind

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Kind} to use this name for an
external procedure.

@node LBound Intrinsic
@subsubsection LBound Intrinsic
@cindex LBound intrinsic
@cindex intrinsics, LBound

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL LBound} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node Len Intrinsic
@subsubsection Len Intrinsic
@cindex Len intrinsic
@cindex intrinsics, Len

@noindent
@example
Len(@var{String})
@end example

@noindent
Len: @code{INTEGER(KIND=1)} function.

@noindent
@var{String}: @code{CHARACTER}; scalar.

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the length of @var{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.

@xref{Bit_Size Intrinsic}, for the function that determines
the size of its argument in bits.

@end ifset
@ifset familyF90
@node Len_Trim Intrinsic
@subsubsection Len_Trim Intrinsic
@cindex Len_Trim intrinsic
@cindex intrinsics, Len_Trim

@noindent
@example
Len_Trim(@var{String})
@end example

@noindent
Len_Trim: @code{INTEGER(KIND=1)} function.

@noindent
@var{String}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f90}.

@noindent
Description:

Returns the index of the last non-blank character in @var{String}.
@code{LNBLNK} and @code{LEN_TRIM} are equivalent.

@end ifset
@ifset familyF77
@node LGe Intrinsic
@subsubsection LGe Intrinsic
@cindex LGe intrinsic
@cindex intrinsics, LGe

@noindent
@example
LGe(@var{String_A}, @var{String_B})
@end example

@noindent
LGe: @code{LOGICAL(KIND=1)} function.

@noindent
@var{String_A}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{String_B}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @samp{.TRUE.} if @samp{@var{String_A}.GE.@var{String_B}},
@samp{.FALSE.} otherwise.
@var{String_A} and @var{String_B} are interpreted as containing
ASCII character codes.
If either value contains a character not in the ASCII
character set, the result is processor dependent.

If the @var{String_A} and @var{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.

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.}, @code{.LT.}.
Because the ASCII collating sequence is assumed,
the following expressions always return @samp{.TRUE.}:

@smallexample
LGE ('0', ' ')
LGE ('A', '0')
LGE ('a', 'A')
@end smallexample

The following related expressions do @emph{not} always
return @samp{.TRUE.}, as they are not necessarily evaluated
assuming the arguments use ASCII encoding:

@smallexample
'0' .GE. ' '
'A' .GE. '0'
'a' .GE. 'A'
@end smallexample

The same difference exists
between @code{LGt} and @code{.GT.};
between @code{LLe} and @code{.LE.}; and
between @code{LLt} and @code{.LT.}.

@node LGt Intrinsic
@subsubsection LGt Intrinsic
@cindex LGt intrinsic
@cindex intrinsics, LGt

@noindent
@example
LGt(@var{String_A}, @var{String_B})
@end example

@noindent
LGt: @code{LOGICAL(KIND=1)} function.

@noindent
@var{String_A}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{String_B}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @samp{.TRUE.} if @samp{@var{String_A}.GT.@var{String_B}},
@samp{.FALSE.} otherwise.
@var{String_A} and @var{String_B} are interpreted as containing
ASCII character codes.
If either value contains a character not in the ASCII
character set, the result is processor dependent.

If the @var{String_A} and @var{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.

@xref{LGe Intrinsic}, for information on the distinction
between the @code{LGT} intrinsic and the @code{.GT.}
operator.

@end ifset
@ifset familyF2U
@node Link Intrinsic (subroutine)
@subsubsection Link Intrinsic (subroutine)
@cindex Link intrinsic
@cindex intrinsics, Link

@noindent
@example
CALL Link(@var{Path1}, @var{Path2}, @var{Status})
@end example

@noindent
@var{Path1}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Path2}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Makes a (hard) link from file @var{Path1} to @var{Path2}.
A null character (@samp{CHAR(0)}) marks the end of
the names in @var{Path1} and @var{Path2}---otherwise,
trailing blanks in @var{Path1} and @var{Path2} 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)}.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{Link Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node Link Intrinsic (function)
@subsubsection Link Intrinsic (function)
@cindex Link intrinsic
@cindex intrinsics, Link

@noindent
@example
Link(@var{Path1}, @var{Path2})
@end example

@noindent
Link: @code{INTEGER(KIND=1)} function.

@noindent
@var{Path1}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Path2}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Makes a (hard) link from file @var{Path1} to @var{Path2}.
A null character (@samp{CHAR(0)}) marks the end of
the names in @var{Path1} and @var{Path2}---otherwise,
trailing blanks in @var{Path1} and @var{Path2} are ignored.
Returns 0 on success or a nonzero error code.
See @code{link(2)}.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{Link Intrinsic (subroutine)}.

@end ifset
@ifset familyF77
@node LLe Intrinsic
@subsubsection LLe Intrinsic
@cindex LLe intrinsic
@cindex intrinsics, LLe

@noindent
@example
LLe(@var{String_A}, @var{String_B})
@end example

@noindent
LLe: @code{LOGICAL(KIND=1)} function.

@noindent
@var{String_A}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{String_B}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @samp{.TRUE.} if @samp{@var{String_A}.LE.@var{String_B}},
@samp{.FALSE.} otherwise.
@var{String_A} and @var{String_B} are interpreted as containing
ASCII character codes.
If either value contains a character not in the ASCII
character set, the result is processor dependent.

If the @var{String_A} and @var{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.

@xref{LGe Intrinsic}, for information on the distinction
between the @code{LLE} intrinsic and the @code{.LE.}
operator.

@node LLt Intrinsic
@subsubsection LLt Intrinsic
@cindex LLt intrinsic
@cindex intrinsics, LLt

@noindent
@example
LLt(@var{String_A}, @var{String_B})
@end example

@noindent
LLt: @code{LOGICAL(KIND=1)} function.

@noindent
@var{String_A}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{String_B}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @samp{.TRUE.} if @samp{@var{String_A}.LT.@var{String_B}},
@samp{.FALSE.} otherwise.
@var{String_A} and @var{String_B} are interpreted as containing
ASCII character codes.
If either value contains a character not in the ASCII
character set, the result is processor dependent.

If the @var{String_A} and @var{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.

@xref{LGe Intrinsic}, for information on the distinction
between the @code{LLT} intrinsic and the @code{.LT.}
operator.

@end ifset
@ifset familyF2U
@node LnBlnk Intrinsic
@subsubsection LnBlnk Intrinsic
@cindex LnBlnk intrinsic
@cindex intrinsics, LnBlnk

@noindent
@example
LnBlnk(@var{String})
@end example

@noindent
LnBlnk: @code{INTEGER(KIND=1)} function.

@noindent
@var{String}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the index of the last non-blank character in @var{String}.
@code{LNBLNK} and @code{LEN_TRIM} are equivalent.

@node Loc Intrinsic
@subsubsection Loc Intrinsic
@cindex Loc intrinsic
@cindex intrinsics, Loc

@noindent
@example
Loc(@var{Entity})
@end example

@noindent
Loc: @code{INTEGER(KIND=7)} function.

@noindent
@var{Entity}: Any type; cannot be a constant or expression.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

The @code{LOC()} intrinsic works the
same way as the @code{%LOC()} construct.
@xref{%LOC(),,The @code{%LOC()} Construct}, for
more information.

@end ifset
@ifset familyF77
@node Log Intrinsic
@subsubsection Log Intrinsic
@cindex Log intrinsic
@cindex intrinsics, Log

@noindent
@example
Log(@var{X})
@end example

@noindent
Log: @code{REAL} or @code{COMPLEX} function, the exact type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL} or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the natural logarithm of @var{X}, which must
be greater than zero or, if type @code{COMPLEX}, must not
be zero.

@xref{Exp Intrinsic}, for the inverse of this function.

@xref{Log10 Intrinsic}, for the `common' (base-10) logarithm function.

@node Log10 Intrinsic
@subsubsection Log10 Intrinsic
@cindex Log10 intrinsic
@cindex intrinsics, Log10

@noindent
@example
Log10(@var{X})
@end example

@noindent
Log10: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the common logarithm (base 10) of @var{X}, which must
be greater than zero.

The inverse of this function is @samp{10. ** LOG10(@var{X})}.

@xref{Log Intrinsic}, for the natural logarithm function.

@end ifset
@ifset familyF90
@node Logical Intrinsic
@subsubsection Logical Intrinsic
@cindex Logical intrinsic
@cindex intrinsics, Logical

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Logical} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node Long Intrinsic
@subsubsection Long Intrinsic
@cindex Long intrinsic
@cindex intrinsics, Long

@noindent
@example
Long(@var{A})
@end example

@noindent
Long: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER(KIND=6)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Archaic form of @code{INT()} that is specific
to one type for @var{A}.
@xref{Int Intrinsic}.

The precise meaning of this intrinsic might change
in a future version of the GNU Fortran language,
as more is learned about how it is used.

@end ifset
@ifset familyF2C
@node LShift Intrinsic
@subsubsection LShift Intrinsic
@cindex LShift intrinsic
@cindex intrinsics, LShift

@noindent
@example
LShift(@var{I}, @var{Shift})
@end example

@noindent
LShift: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Shift}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Returns @var{I} shifted to the left
@var{Shift} bits.

Although similar to the expression
@samp{@var{I}*(2**@var{Shift})}, there
are important differences.
For example, the sign of the result is
not necessarily the same as the sign of
@var{I}.

Currently this intrinsic is defined assuming
the underlying representation of @var{I}
is as a two's-complement integer.
It is unclear at this point whether that
definition will apply when a different
representation is involved.

@xref{LShift Intrinsic}, for the inverse of this function.

@xref{IShft Intrinsic}, for information
on a more widely available left-shifting
intrinsic that is also more precisely defined.

@end ifset
@ifset familyF2U
@node LStat Intrinsic (subroutine)
@subsubsection LStat Intrinsic (subroutine)
@cindex LStat intrinsic
@cindex intrinsics, LStat

@noindent
@example
CALL LStat(@var{File}, @var{SArray}, @var{Status})
@end example

@noindent
@var{File}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{SArray}: @code{INTEGER(KIND=1)}; DIMENSION(13); INTENT(OUT).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Obtains data about the given file @var{File} and places them in the array
@var{SArray}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{File}---otherwise,
trailing blanks in @var{File} are ignored.
If @var{File} is a symbolic link it returns data on the
link itself, so the routine is available only on systems that support
symbolic links.
The values in this array are extracted from the
@code{stat} structure as returned by @code{fstat(2)} q.v., as follows:

@enumerate
@item
Device ID

@item
Inode number

@item
File mode

@item
Number of links

@item
Owner's uid

@item
Owner's gid

@item
ID of device containing directory entry for file
(0 if not available)

@item
File size (bytes)

@item
Last access time

@item
Last modification time

@item
Last file status change time

@item
Preferred I/O block size (-1 if not available)

@item
Number of blocks allocated (-1 if not available)
@end enumerate

Not all these elements are relevant on all systems.
If an element is not relevant, it is returned as 0.

If the @var{Status} argument is supplied, it contains
0 on success or a nonzero error code upon return
(@code{ENOSYS} if the system does not provide @code{lstat(2)}).

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{LStat Intrinsic (function)}.

@node LStat Intrinsic (function)
@subsubsection LStat Intrinsic (function)
@cindex LStat intrinsic
@cindex intrinsics, LStat

@noindent
@example
LStat(@var{File}, @var{SArray})
@end example

@noindent
LStat: @code{INTEGER(KIND=1)} function.

@noindent
@var{File}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{SArray}: @code{INTEGER(KIND=1)}; DIMENSION(13); INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Obtains data about the given file @var{File} and places them in the array
@var{SArray}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{File}---otherwise,
trailing blanks in @var{File} are ignored.
If @var{File} is a symbolic link it returns data on the
link itself, so the routine is available only on systems that support
symbolic links.
The values in this array are extracted from the
@code{stat} structure as returned by @code{fstat(2)} q.v., as follows:

@enumerate
@item
Device ID

@item
Inode number

@item
File mode

@item
Number of links

@item
Owner's uid

@item
Owner's gid

@item
ID of device containing directory entry for file
(0 if not available)

@item
File size (bytes)

@item
Last access time

@item
Last modification time

@item
Last file status change time

@item
Preferred I/O block size (-1 if not available)

@item
Number of blocks allocated (-1 if not available)
@end enumerate

Not all these elements are relevant on all systems.
If an element is not relevant, it is returned as 0.

Returns 0 on success or a nonzero error code
(@code{ENOSYS} if the system does not provide @code{lstat(2)}).

For information on other intrinsics with the same name:
@xref{LStat Intrinsic (subroutine)}.

@node LTime Intrinsic
@subsubsection LTime Intrinsic
@cindex LTime intrinsic
@cindex intrinsics, LTime

@noindent
@example
CALL LTime(@var{STime}, @var{TArray})
@end example

@noindent
@var{STime}: @code{INTEGER(KIND=1)}; scalar; INTENT(IN).

@noindent
@var{TArray}: @code{INTEGER(KIND=1)}; DIMENSION(9); INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Given a system time value @var{STime}, fills @var{TArray} with values
extracted from it appropriate to the GMT time zone using
@code{localtime(3)}.

The array elements are 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 isn't available.
@end enumerate

@end ifset
@ifset familyF90
@node MatMul Intrinsic
@subsubsection MatMul Intrinsic
@cindex MatMul intrinsic
@cindex intrinsics, MatMul

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL MatMul} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node Max Intrinsic
@subsubsection Max Intrinsic
@cindex Max intrinsic
@cindex intrinsics, Max

@noindent
@example
Max(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
Max: @code{INTEGER} or @code{REAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{A}: @code{INTEGER} or @code{REAL}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the argument with the largest value.

@xref{Min Intrinsic}, for the opposite function.

@node Max0 Intrinsic
@subsubsection Max0 Intrinsic
@cindex Max0 intrinsic
@cindex intrinsics, Max0

@noindent
@example
Max0(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
Max0: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER(KIND=1)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MAX()} that is specific
to one type for @var{A}.
@xref{Max Intrinsic}.

@node Max1 Intrinsic
@subsubsection Max1 Intrinsic
@cindex Max1 intrinsic
@cindex intrinsics, Max1

@noindent
@example
Max1(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
Max1: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=1)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MAX()} that is specific
to one type for @var{A} and a different return type.
@xref{Max Intrinsic}.

@end ifset
@ifset familyF90
@node MaxExponent Intrinsic
@subsubsection MaxExponent Intrinsic
@cindex MaxExponent intrinsic
@cindex intrinsics, MaxExponent

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL MaxExponent} to use this name for an
external procedure.

@node MaxLoc Intrinsic
@subsubsection MaxLoc Intrinsic
@cindex MaxLoc intrinsic
@cindex intrinsics, MaxLoc

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL MaxLoc} to use this name for an
external procedure.

@node MaxVal Intrinsic
@subsubsection MaxVal Intrinsic
@cindex MaxVal intrinsic
@cindex intrinsics, MaxVal

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL MaxVal} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node MClock Intrinsic
@subsubsection MClock Intrinsic
@cindex MClock intrinsic
@cindex intrinsics, MClock

@noindent
@example
MClock()
@end example

@noindent
MClock: @code{INTEGER(KIND=1)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the number of clock ticks since the start of the process.
Supported on systems with @code{clock(3)} (q.v.).

@cindex wraparound, timings
@cindex limits, timings
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.

@xref{MClock8 Intrinsic}, for information on a
similar intrinsic that might be portable to more
GNU Fortran implementations, though to fewer
Fortran compilers.

If the system does not support @code{clock(3)},
-1 is returned.

@node MClock8 Intrinsic
@subsubsection MClock8 Intrinsic
@cindex MClock8 intrinsic
@cindex intrinsics, MClock8

@noindent
@example
MClock8()
@end example

@noindent
MClock8: @code{INTEGER(KIND=2)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the number of clock ticks since the start of the process.
Supported on systems with @code{clock(3)} (q.v.).

@cindex wraparound, timings
@cindex limits, timings
@emph{Warning:} this intrinsic does not increase the range
of the timing values over that returned by @code{clock(3)}.
On a system with a 32-bit @code{clock(3)},
@code{MCLOCK8} will return a 32-bit value,
even though converted to an @samp{INTEGER(KIND=2)} 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.

No Fortran implementations other than GNU Fortran are
known to support this intrinsic at the time of this
writing.
@xref{MClock Intrinsic}, for information on a
similar intrinsic that might be portable to more Fortran
compilers, though to fewer GNU Fortran implementations.

If the system does not support @code{clock(3)},
-1 is returned.

@end ifset
@ifset familyF90
@node Merge Intrinsic
@subsubsection Merge Intrinsic
@cindex Merge intrinsic
@cindex intrinsics, Merge

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Merge} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node Min Intrinsic
@subsubsection Min Intrinsic
@cindex Min intrinsic
@cindex intrinsics, Min

@noindent
@example
Min(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
Min: @code{INTEGER} or @code{REAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{A}: @code{INTEGER} or @code{REAL}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the argument with the smallest value.

@xref{Max Intrinsic}, for the opposite function.

@node Min0 Intrinsic
@subsubsection Min0 Intrinsic
@cindex Min0 intrinsic
@cindex intrinsics, Min0

@noindent
@example
Min0(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
Min0: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{INTEGER(KIND=1)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MIN()} that is specific
to one type for @var{A}.
@xref{Min Intrinsic}.

@node Min1 Intrinsic
@subsubsection Min1 Intrinsic
@cindex Min1 intrinsic
@cindex intrinsics, Min1

@noindent
@example
Min1(@var{A}-1, @var{A}-2, @dots{}, @var{A}-n)
@end example

@noindent
Min1: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=1)}; at least two such arguments must be provided; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{MIN()} that is specific
to one type for @var{A} and a different return type.
@xref{Min Intrinsic}.

@end ifset
@ifset familyF90
@node MinExponent Intrinsic
@subsubsection MinExponent Intrinsic
@cindex MinExponent intrinsic
@cindex intrinsics, MinExponent

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL MinExponent} to use this name for an
external procedure.

@node MinLoc Intrinsic
@subsubsection MinLoc Intrinsic
@cindex MinLoc intrinsic
@cindex intrinsics, MinLoc

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL MinLoc} to use this name for an
external procedure.

@node MinVal Intrinsic
@subsubsection MinVal Intrinsic
@cindex MinVal intrinsic
@cindex intrinsics, MinVal

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL MinVal} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node Mod Intrinsic
@subsubsection Mod Intrinsic
@cindex Mod intrinsic
@cindex intrinsics, Mod

@noindent
@example
Mod(@var{A}, @var{P})
@end example

@noindent
Mod: @code{INTEGER} or @code{REAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{A}: @code{INTEGER} or @code{REAL}; scalar; INTENT(IN).

@noindent
@var{P}: @code{INTEGER} or @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns remainder calculated as:

@smallexample
@var{A} - (INT(@var{A} / @var{P}) * @var{P})
@end smallexample

@var{P} must not be zero.

@end ifset
@ifset familyF90
@node Modulo Intrinsic
@subsubsection Modulo Intrinsic
@cindex Modulo intrinsic
@cindex intrinsics, Modulo

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Modulo} to use this name for an
external procedure.

@end ifset
@ifset familyMIL
@node MvBits Intrinsic
@subsubsection MvBits Intrinsic
@cindex MvBits intrinsic
@cindex intrinsics, MvBits

@noindent
@example
CALL MvBits(@var{From}, @var{FromPos}, @var{Len}, @var{TO}, @var{ToPos})
@end example

@noindent
@var{From}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{FromPos}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Len}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{TO}: @code{INTEGER} with same @samp{KIND=} value as for @var{From}; scalar; INTENT(INOUT).

@noindent
@var{ToPos}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Moves @var{Len} bits from positions @var{FromPos} through
@samp{@var{FromPos}+@var{Len}-1} of @var{From} to positions @var{ToPos} through
@samp{@var{FromPos}+@var{Len}-1} of @var{TO}.  The portion of argument
@var{TO} not affected by the movement of bits is unchanged.  Arguments
@var{From} and @var{TO} are permitted to be the same numeric storage
unit.  The values of @samp{@var{FromPos}+@var{Len}} and
@samp{@var{ToPos}+@var{Len}} must be less than or equal to
@samp{BIT_SIZE(@var{From})}.

@end ifset
@ifset familyF90
@node Nearest Intrinsic
@subsubsection Nearest Intrinsic
@cindex Nearest intrinsic
@cindex intrinsics, Nearest

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Nearest} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node NInt Intrinsic
@subsubsection NInt Intrinsic
@cindex NInt intrinsic
@cindex intrinsics, NInt

@noindent
@example
NInt(@var{A})
@end example

@noindent
NInt: @code{INTEGER(KIND=1)} function.

@noindent
@var{A}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @var{A} with the fractional portion of its
magnitude eliminated by rounding to the nearest whole
number and with its sign preserved, converted
to type @code{INTEGER(KIND=1)}.

If @var{A} is type @code{COMPLEX}, its real part is
rounded and converted.

A fractional portion exactly equal to
@samp{.5} is rounded to the whole number that
is larger in magnitude.
(Also called ``Fortran round''.)

@xref{Int Intrinsic}, for how to convert, truncate to
whole number.

@xref{ANInt Intrinsic}, for how to round to nearest whole number
without converting.

@end ifset
@ifset familyMIL
@node Not Intrinsic
@subsubsection Not Intrinsic
@cindex Not intrinsic
@cindex intrinsics, Not

@noindent
@example
Not(@var{I})
@end example

@noindent
Not: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{mil}, @code{f90}, @code{vxt}.

@noindent
Description:

Returns value resulting from boolean NOT of each bit
in @var{I}.

@end ifset
@ifset familyF2C
@node Or Intrinsic
@subsubsection Or Intrinsic
@cindex Or intrinsic
@cindex intrinsics, Or

@noindent
@example
Or(@var{I}, @var{J})
@end example

@noindent
Or: @code{INTEGER} or @code{LOGICAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{I}: @code{INTEGER} or @code{LOGICAL}; scalar; INTENT(IN).

@noindent
@var{J}: @code{INTEGER} or @code{LOGICAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Returns value resulting from boolean OR of
pair of bits in each of @var{I} and @var{J}.

@end ifset
@ifset familyF90
@node Pack Intrinsic
@subsubsection Pack Intrinsic
@cindex Pack intrinsic
@cindex intrinsics, Pack

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Pack} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node PError Intrinsic
@subsubsection PError Intrinsic
@cindex PError intrinsic
@cindex intrinsics, PError

@noindent
@example
CALL PError(@var{String})
@end example

@noindent
@var{String}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
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)}.

@end ifset
@ifset familyF90
@node Precision Intrinsic
@subsubsection Precision Intrinsic
@cindex Precision intrinsic
@cindex intrinsics, Precision

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Precision} to use this name for an
external procedure.

@node Present Intrinsic
@subsubsection Present Intrinsic
@cindex Present intrinsic
@cindex intrinsics, Present

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Present} to use this name for an
external procedure.

@node Product Intrinsic
@subsubsection Product Intrinsic
@cindex Product intrinsic
@cindex intrinsics, Product

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Product} to use this name for an
external procedure.

@end ifset
@ifset familyVXT
@node QAbs Intrinsic
@subsubsection QAbs Intrinsic
@cindex QAbs intrinsic
@cindex intrinsics, QAbs

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QAbs} to use this name for an
external procedure.

@node QACos Intrinsic
@subsubsection QACos Intrinsic
@cindex QACos intrinsic
@cindex intrinsics, QACos

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QACos} to use this name for an
external procedure.

@node QACosD Intrinsic
@subsubsection QACosD Intrinsic
@cindex QACosD intrinsic
@cindex intrinsics, QACosD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QACosD} to use this name for an
external procedure.

@node QASin Intrinsic
@subsubsection QASin Intrinsic
@cindex QASin intrinsic
@cindex intrinsics, QASin

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QASin} to use this name for an
external procedure.

@node QASinD Intrinsic
@subsubsection QASinD Intrinsic
@cindex QASinD intrinsic
@cindex intrinsics, QASinD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QASinD} to use this name for an
external procedure.

@node QATan Intrinsic
@subsubsection QATan Intrinsic
@cindex QATan intrinsic
@cindex intrinsics, QATan

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QATan} to use this name for an
external procedure.

@node QATan2 Intrinsic
@subsubsection QATan2 Intrinsic
@cindex QATan2 intrinsic
@cindex intrinsics, QATan2

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QATan2} to use this name for an
external procedure.

@node QATan2D Intrinsic
@subsubsection QATan2D Intrinsic
@cindex QATan2D intrinsic
@cindex intrinsics, QATan2D

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QATan2D} to use this name for an
external procedure.

@node QATanD Intrinsic
@subsubsection QATanD Intrinsic
@cindex QATanD intrinsic
@cindex intrinsics, QATanD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QATanD} to use this name for an
external procedure.

@node QCos Intrinsic
@subsubsection QCos Intrinsic
@cindex QCos intrinsic
@cindex intrinsics, QCos

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QCos} to use this name for an
external procedure.

@node QCosD Intrinsic
@subsubsection QCosD Intrinsic
@cindex QCosD intrinsic
@cindex intrinsics, QCosD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QCosD} to use this name for an
external procedure.

@node QCosH Intrinsic
@subsubsection QCosH Intrinsic
@cindex QCosH intrinsic
@cindex intrinsics, QCosH

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QCosH} to use this name for an
external procedure.

@node QDiM Intrinsic
@subsubsection QDiM Intrinsic
@cindex QDiM intrinsic
@cindex intrinsics, QDiM

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QDiM} to use this name for an
external procedure.

@node QExp Intrinsic
@subsubsection QExp Intrinsic
@cindex QExp intrinsic
@cindex intrinsics, QExp

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QExp} to use this name for an
external procedure.

@node QExt Intrinsic
@subsubsection QExt Intrinsic
@cindex QExt intrinsic
@cindex intrinsics, QExt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QExt} to use this name for an
external procedure.

@node QExtD Intrinsic
@subsubsection QExtD Intrinsic
@cindex QExtD intrinsic
@cindex intrinsics, QExtD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QExtD} to use this name for an
external procedure.

@node QFloat Intrinsic
@subsubsection QFloat Intrinsic
@cindex QFloat intrinsic
@cindex intrinsics, QFloat

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QFloat} to use this name for an
external procedure.

@node QInt Intrinsic
@subsubsection QInt Intrinsic
@cindex QInt intrinsic
@cindex intrinsics, QInt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QInt} to use this name for an
external procedure.

@node QLog Intrinsic
@subsubsection QLog Intrinsic
@cindex QLog intrinsic
@cindex intrinsics, QLog

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QLog} to use this name for an
external procedure.

@node QLog10 Intrinsic
@subsubsection QLog10 Intrinsic
@cindex QLog10 intrinsic
@cindex intrinsics, QLog10

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QLog10} to use this name for an
external procedure.

@node QMax1 Intrinsic
@subsubsection QMax1 Intrinsic
@cindex QMax1 intrinsic
@cindex intrinsics, QMax1

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QMax1} to use this name for an
external procedure.

@node QMin1 Intrinsic
@subsubsection QMin1 Intrinsic
@cindex QMin1 intrinsic
@cindex intrinsics, QMin1

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QMin1} to use this name for an
external procedure.

@node QMod Intrinsic
@subsubsection QMod Intrinsic
@cindex QMod intrinsic
@cindex intrinsics, QMod

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QMod} to use this name for an
external procedure.

@node QNInt Intrinsic
@subsubsection QNInt Intrinsic
@cindex QNInt intrinsic
@cindex intrinsics, QNInt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QNInt} to use this name for an
external procedure.

@node QSin Intrinsic
@subsubsection QSin Intrinsic
@cindex QSin intrinsic
@cindex intrinsics, QSin

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QSin} to use this name for an
external procedure.

@node QSinD Intrinsic
@subsubsection QSinD Intrinsic
@cindex QSinD intrinsic
@cindex intrinsics, QSinD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QSinD} to use this name for an
external procedure.

@node QSinH Intrinsic
@subsubsection QSinH Intrinsic
@cindex QSinH intrinsic
@cindex intrinsics, QSinH

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QSinH} to use this name for an
external procedure.

@node QSqRt Intrinsic
@subsubsection QSqRt Intrinsic
@cindex QSqRt intrinsic
@cindex intrinsics, QSqRt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QSqRt} to use this name for an
external procedure.

@node QTan Intrinsic
@subsubsection QTan Intrinsic
@cindex QTan intrinsic
@cindex intrinsics, QTan

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QTan} to use this name for an
external procedure.

@node QTanD Intrinsic
@subsubsection QTanD Intrinsic
@cindex QTanD intrinsic
@cindex intrinsics, QTanD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QTanD} to use this name for an
external procedure.

@node QTanH Intrinsic
@subsubsection QTanH Intrinsic
@cindex QTanH intrinsic
@cindex intrinsics, QTanH

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL QTanH} to use this name for an
external procedure.

@end ifset
@ifset familyF90
@node Radix Intrinsic
@subsubsection Radix Intrinsic
@cindex Radix intrinsic
@cindex intrinsics, Radix

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Radix} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node Rand Intrinsic
@subsubsection Rand Intrinsic
@cindex Rand intrinsic
@cindex intrinsics, Rand

@noindent
@example
Rand(@var{Flag})
@end example

@noindent
Rand: @code{REAL(KIND=1)} function.

@noindent
@var{Flag}: @code{INTEGER}; OPTIONAL; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns a uniform quasi-random number between 0 and 1.
If @var{Flag} is 0, the next number in sequence is returned; if
@var{Flag} is 1, the generator is restarted by calling @samp{srand(0)};
if @var{Flag} has any other value, it is used as a new seed with
@code{srand}.

@xref{SRand Intrinsic}.

@emph{Note:} As typically implemented (by the routine of the same
name in the C library), this random number generator is a very poor
one, though the BSD and GNU libraries provide a much better
implementation than the `traditional' one.
On a different system you
almost certainly want to use something better.

@end ifset
@ifset familyF90
@node Random_Number Intrinsic
@subsubsection Random_Number Intrinsic
@cindex Random_Number intrinsic
@cindex intrinsics, Random_Number

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Random_Number} to use this name for an
external procedure.

@node Random_Seed Intrinsic
@subsubsection Random_Seed Intrinsic
@cindex Random_Seed intrinsic
@cindex intrinsics, Random_Seed

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Random_Seed} to use this name for an
external procedure.

@node Range Intrinsic
@subsubsection Range Intrinsic
@cindex Range intrinsic
@cindex intrinsics, Range

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Range} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node Real Intrinsic
@subsubsection Real Intrinsic
@cindex Real intrinsic
@cindex intrinsics, Real

@noindent
@example
Real(@var{A})
@end example

@noindent
Real: @code{REAL} function.
The exact type is @samp{REAL(KIND=1)} when argument @var{A} is
any type other than @code{COMPLEX}, or when it is @code{COMPLEX(KIND=1)}.
When @var{A} is any @code{COMPLEX} type other than @code{COMPLEX(KIND=1)},
this intrinsic is valid only when used as the argument to
@code{REAL()}, as explained below.

@noindent
@var{A}: @code{INTEGER}, @code{REAL}, or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Converts @var{A} to @code{REAL(KIND=1)}.

Use of @code{REAL()} with a @code{COMPLEX} argument
(other than @code{COMPLEX(KIND=1)}) is restricted to the following case:

@example
REAL(REAL(A))
@end example

@noindent
This expression converts the real part of A to
@code{REAL(KIND=1)}.

@xref{RealPart Intrinsic}, for information on a GNU Fortran
intrinsic that extracts the real part of an arbitrary
@code{COMPLEX} value.

@xref{REAL() and AIMAG() of Complex}, for more information.

@end ifset
@ifset familyGNU
@node RealPart Intrinsic
@subsubsection RealPart Intrinsic
@cindex RealPart intrinsic
@cindex intrinsics, RealPart

@noindent
@example
RealPart(@var{Z})
@end example

@noindent
RealPart: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{Z}.

@noindent
@var{Z}: @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{gnu}.

@noindent
Description:

The real part of @var{Z} is returned, without conversion.

@emph{Note:} The way to do this in standard Fortran 90
is @samp{REAL(@var{Z})}.
However, when, for example, @var{Z} is @code{COMPLEX(KIND=2)},
@samp{REAL(@var{Z})} means something different for some compilers
that are not true Fortran 90 compilers but offer some
extensions standardized by Fortran 90 (such as the
@code{DOUBLE COMPLEX} type, also known as @code{COMPLEX(KIND=2)}).

The advantage of @code{REALPART()} is that, while not necessarily
more or less portable than @code{REAL()}, it is more likely to
cause a compiler that doesn't support it to produce a diagnostic
than generate incorrect code.

@xref{REAL() and AIMAG() of Complex}, for more information.

@end ifset
@ifset familyF2U
@node Rename Intrinsic (subroutine)
@subsubsection Rename Intrinsic (subroutine)
@cindex Rename intrinsic
@cindex intrinsics, Rename

@noindent
@example
CALL Rename(@var{Path1}, @var{Path2}, @var{Status})
@end example

@noindent
@var{Path1}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Path2}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Renames the file @var{Path1} to @var{Path2}.
A null character (@samp{CHAR(0)}) marks the end of
the names in @var{Path1} and @var{Path2}---otherwise,
trailing blanks in @var{Path1} and @var{Path2} are ignored.
See @code{rename(2)}.
If the @var{Status} argument is supplied, it contains
0 on success or a nonzero error code upon return.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{Rename Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node Rename Intrinsic (function)
@subsubsection Rename Intrinsic (function)
@cindex Rename intrinsic
@cindex intrinsics, Rename

@noindent
@example
Rename(@var{Path1}, @var{Path2})
@end example

@noindent
Rename: @code{INTEGER(KIND=1)} function.

@noindent
@var{Path1}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Path2}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Renames the file @var{Path1} to @var{Path2}.
A null character (@samp{CHAR(0)}) marks the end of
the names in @var{Path1} and @var{Path2}---otherwise,
trailing blanks in @var{Path1} and @var{Path2} are ignored.
See @code{rename(2)}.
Returns 0 on success or a nonzero error code.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{Rename Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node Repeat Intrinsic
@subsubsection Repeat Intrinsic
@cindex Repeat intrinsic
@cindex intrinsics, Repeat

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Repeat} to use this name for an
external procedure.

@node Reshape Intrinsic
@subsubsection Reshape Intrinsic
@cindex Reshape intrinsic
@cindex intrinsics, Reshape

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Reshape} to use this name for an
external procedure.

@node RRSpacing Intrinsic
@subsubsection RRSpacing Intrinsic
@cindex RRSpacing intrinsic
@cindex intrinsics, RRSpacing

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL RRSpacing} to use this name for an
external procedure.

@end ifset
@ifset familyF2C
@node RShift Intrinsic
@subsubsection RShift Intrinsic
@cindex RShift intrinsic
@cindex intrinsics, RShift

@noindent
@example
RShift(@var{I}, @var{Shift})
@end example

@noindent
RShift: @code{INTEGER} function, the @samp{KIND=} value of the type being that of argument @var{I}.

@noindent
@var{I}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Shift}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Returns @var{I} shifted to the right
@var{Shift} bits.

Although similar to the expression
@samp{@var{I}/(2**@var{Shift})}, there
are important differences.
For example, the sign of the result is
undefined.

Currently this intrinsic is defined assuming
the underlying representation of @var{I}
is as a two's-complement integer.
It is unclear at this point whether that
definition will apply when a different
representation is involved.

@xref{RShift Intrinsic}, for the inverse of this function.

@xref{IShft Intrinsic}, for information
on a more widely available right-shifting
intrinsic that is also more precisely defined.

@end ifset
@ifset familyF90
@node Scale Intrinsic
@subsubsection Scale Intrinsic
@cindex Scale intrinsic
@cindex intrinsics, Scale

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Scale} to use this name for an
external procedure.

@node Scan Intrinsic
@subsubsection Scan Intrinsic
@cindex Scan intrinsic
@cindex intrinsics, Scan

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Scan} to use this name for an
external procedure.

@end ifset
@ifset familyVXT
@node Secnds Intrinsic
@subsubsection Secnds Intrinsic
@cindex Secnds intrinsic
@cindex intrinsics, Secnds

@noindent
@example
Secnds(@var{T})
@end example

@noindent
Secnds: @code{REAL(KIND=1)} function.

@noindent
@var{T}: @code{REAL(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{vxt}.

@noindent
Description:

Returns the local time in seconds since midnight minus the value
@var{T}.

@cindex wraparound, timings
@cindex limits, timings
This values returned by this intrinsic
become numerically less than previous values
(they wrap around) during a single run of the
compiler program, under normal circumstances
(such as running through the midnight hour).

@end ifset
@ifset familyF2U
@node Second Intrinsic (function)
@subsubsection Second Intrinsic (function)
@cindex Second intrinsic
@cindex intrinsics, Second

@noindent
@example
Second()
@end example

@noindent
Second: @code{REAL(KIND=1)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the process's runtime in seconds---the same value as the
UNIX function @code{etime} returns.

@cindex wraparound, timings
@cindex limits, timings
On some systems, the underlying timings are represented
using types with sufficiently small limits that overflows
(wraparounds) are possible, such as 32-bit types.
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.

For information on other intrinsics with the same name:
@xref{Second Intrinsic (subroutine)}.

@node Second Intrinsic (subroutine)
@subsubsection Second Intrinsic (subroutine)
@cindex Second intrinsic
@cindex intrinsics, Second

@noindent
@example
CALL Second(@var{Seconds})
@end example

@noindent
@var{Seconds}: @code{REAL}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the process's runtime in seconds in @var{Seconds}---the same value
as the UNIX function @code{etime} returns.

@cindex wraparound, timings
@cindex limits, timings
On some systems, the underlying timings are represented
using types with sufficiently small limits that overflows
(wraparounds) are possible, such as 32-bit types.
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.

This routine is known from Cray Fortran.  @xref{CPU_Time Intrinsic},
for a standard equivalent.

For information on other intrinsics with the same name:
@xref{Second Intrinsic (function)}.

@end ifset
@ifset familyF90
@node Selected_Int_Kind Intrinsic
@subsubsection Selected_Int_Kind Intrinsic
@cindex Selected_Int_Kind intrinsic
@cindex intrinsics, Selected_Int_Kind

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Selected_Int_Kind} to use this name for an
external procedure.

@node Selected_Real_Kind Intrinsic
@subsubsection Selected_Real_Kind Intrinsic
@cindex Selected_Real_Kind intrinsic
@cindex intrinsics, Selected_Real_Kind

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Selected_Real_Kind} to use this name for an
external procedure.

@node Set_Exponent Intrinsic
@subsubsection Set_Exponent Intrinsic
@cindex Set_Exponent intrinsic
@cindex intrinsics, Set_Exponent

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Set_Exponent} to use this name for an
external procedure.

@node Shape Intrinsic
@subsubsection Shape Intrinsic
@cindex Shape intrinsic
@cindex intrinsics, Shape

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Shape} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node Short Intrinsic
@subsubsection Short Intrinsic
@cindex Short intrinsic
@cindex intrinsics, Short

@noindent
@example
Short(@var{A})
@end example

@noindent
Short: @code{INTEGER(KIND=6)} function.

@noindent
@var{A}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns @var{A} with the fractional portion of its
magnitude truncated and its sign preserved, converted
to type @code{INTEGER(KIND=6)}.

If @var{A} is type @code{COMPLEX}, its real part
is truncated and converted, and its imaginary part is disregarded.

@xref{Int Intrinsic}.

The precise meaning of this intrinsic might change
in a future version of the GNU Fortran language,
as more is learned about how it is used.

@end ifset
@ifset familyF77
@node Sign Intrinsic
@subsubsection Sign Intrinsic
@cindex Sign intrinsic
@cindex intrinsics, Sign

@noindent
@example
Sign(@var{A}, @var{B})
@end example

@noindent
Sign: @code{INTEGER} or @code{REAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{A}: @code{INTEGER} or @code{REAL}; scalar; INTENT(IN).

@noindent
@var{B}: @code{INTEGER} or @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns @samp{ABS(@var{A})*@var{s}}, where
@var{s} is +1 if @samp{@var{B}.GE.0},
-1 otherwise.

@xref{Abs Intrinsic}, for the function that returns
the magnitude of a value.

@end ifset
@ifset familyF2U
@node Signal Intrinsic (subroutine)
@subsubsection Signal Intrinsic (subroutine)
@cindex Signal intrinsic
@cindex intrinsics, Signal

@noindent
@example
CALL Signal(@var{Number}, @var{Handler}, @var{Status})
@end example

@noindent
@var{Number}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Handler}: Signal handler (@code{INTEGER FUNCTION} or @code{SUBROUTINE})
or dummy/global @code{INTEGER(KIND=1)} scalar.

@noindent
@var{Status}: @code{INTEGER(KIND=7)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

If @var{Handler} is a an @code{EXTERNAL} routine, arranges for it to be
invoked with a single integer argument (of system-dependent length)
when signal @var{Number} occurs.
If @var{Handler} is an integer, it can be
used to turn off handling of signal @var{Number} or revert to its default
action.
See @code{signal(2)}.

Note that @var{Handler} will be called using C conventions,
so the value of its argument in Fortran terms
Fortran terms is obtained by applying @code{%LOC()} (or @var{LOC()}) to it.

The value returned by @code{signal(2)} is written to @var{Status}, if
that argument is supplied.
Otherwise the return value is ignored.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

@emph{Warning:} Use of the @code{libf2c} run-time library function
@samp{signal_} directly
(such as via @samp{EXTERNAL SIGNAL})
requires use of the @code{%VAL()} construct
to pass an @code{INTEGER} value
(such as @samp{SIG_IGN} or @samp{SIG_DFL})
for the @var{Handler} argument.

However, while @samp{CALL SIGNAL(@var{signum}, %VAL(SIG_IGN))}
works when @samp{SIGNAL} is treated as an external procedure
(and resolves, at link time, to @code{libf2c}'s @samp{signal_} routine),
this construct is not valid when @samp{SIGNAL} is recognized
as the intrinsic of that name.

Therefore, for maximum portability and reliability,
code such references to the @samp{SIGNAL} facility as follows:

@smallexample
INTRINSIC SIGNAL
@dots{}
CALL SIGNAL(@var{signum}, SIG_IGN)
@end smallexample

@code{g77} will compile such a call correctly,
while other compilers will generally either do so as well
or reject the @samp{INTRINSIC SIGNAL} statement via a diagnostic,
allowing you to take appropriate action.

For information on other intrinsics with the same name:
@xref{Signal Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node Signal Intrinsic (function)
@subsubsection Signal Intrinsic (function)
@cindex Signal intrinsic
@cindex intrinsics, Signal

@noindent
@example
Signal(@var{Number}, @var{Handler})
@end example

@noindent
Signal: @code{INTEGER(KIND=7)} function.

@noindent
@var{Number}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Handler}: Signal handler (@code{INTEGER FUNCTION} or @code{SUBROUTINE})
or dummy/global @code{INTEGER(KIND=1)} scalar.

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

If @var{Handler} is a an @code{EXTERNAL} routine, arranges for it to be
invoked with a single integer argument (of system-dependent length)
when signal @var{Number} occurs.
If @var{Handler} is an integer, it can be
used to turn off handling of signal @var{Number} or revert to its default
action.
See @code{signal(2)}.

Note that @var{Handler} will be called using C conventions,
so the value of its argument in Fortran terms
is obtained by applying @code{%LOC()} (or @var{LOC()}) to it.

The value returned by @code{signal(2)} is returned.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

@emph{Warning:} If the returned value is stored in
an @code{INTEGER(KIND=1)} (default @code{INTEGER}) argument,
truncation of the original return value occurs on some systems
(such as Alphas, which have 64-bit pointers but 32-bit default integers),
with no warning issued by @code{g77} under normal circumstances.

Therefore, the following code fragment might silently fail on
some systems:

@smallexample
INTEGER RTN
EXTERNAL MYHNDL
RTN = SIGNAL(@var{signum}, MYHNDL)
@dots{}
! Restore original handler:
RTN = SIGNAL(@var{signum}, RTN)
@end smallexample

The reason for the failure is that @samp{RTN} might not hold
all the information on the original handler for the signal,
thus restoring an invalid handler.
This bug could manifest itself as a spurious run-time failure
at an arbitrary point later during the program's execution,
for example.

@emph{Warning:} Use of the @code{libf2c} run-time library function
@samp{signal_} directly
(such as via @samp{EXTERNAL SIGNAL})
requires use of the @code{%VAL()} construct
to pass an @code{INTEGER} value
(such as @samp{SIG_IGN} or @samp{SIG_DFL})
for the @var{Handler} argument.

However, while @samp{RTN = SIGNAL(@var{signum}, %VAL(SIG_IGN))}
works when @samp{SIGNAL} is treated as an external procedure
(and resolves, at link time, to @code{libf2c}'s @samp{signal_} routine),
this construct is not valid when @samp{SIGNAL} is recognized
as the intrinsic of that name.

Therefore, for maximum portability and reliability,
code such references to the @samp{SIGNAL} facility as follows:

@smallexample
INTRINSIC SIGNAL
@dots{}
RTN = SIGNAL(@var{signum}, SIG_IGN)
@end smallexample

@code{g77} will compile such a call correctly,
while other compilers will generally either do so as well
or reject the @samp{INTRINSIC SIGNAL} statement via a diagnostic,
allowing you to take appropriate action.

For information on other intrinsics with the same name:
@xref{Signal Intrinsic (subroutine)}.

@end ifset
@ifset familyF77
@node Sin Intrinsic
@subsubsection Sin Intrinsic
@cindex Sin intrinsic
@cindex intrinsics, Sin

@noindent
@example
Sin(@var{X})
@end example

@noindent
Sin: @code{REAL} or @code{COMPLEX} function, the exact type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL} or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the sine of @var{X}, an angle measured
in radians.

@xref{ASin Intrinsic}, for the inverse of this function.

@end ifset
@ifset familyVXT
@node SinD Intrinsic
@subsubsection SinD Intrinsic
@cindex SinD intrinsic
@cindex intrinsics, SinD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL SinD} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node SinH Intrinsic
@subsubsection SinH Intrinsic
@cindex SinH intrinsic
@cindex intrinsics, SinH

@noindent
@example
SinH(@var{X})
@end example

@noindent
SinH: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the hyperbolic sine of @var{X}.

@end ifset
@ifset familyF2U
@node Sleep Intrinsic
@subsubsection Sleep Intrinsic
@cindex Sleep intrinsic
@cindex intrinsics, Sleep

@noindent
@example
CALL Sleep(@var{Seconds})
@end example

@noindent
@var{Seconds}: @code{INTEGER(KIND=1)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Causes the process to pause for @var{Seconds} seconds.
See @code{sleep(2)}.

@end ifset
@ifset familyF77
@node Sngl Intrinsic
@subsubsection Sngl Intrinsic
@cindex Sngl intrinsic
@cindex intrinsics, Sngl

@noindent
@example
Sngl(@var{A})
@end example

@noindent
Sngl: @code{REAL(KIND=1)} function.

@noindent
@var{A}: @code{REAL(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Archaic form of @code{REAL()} that is specific
to one type for @var{A}.
@xref{Real Intrinsic}.

@end ifset
@ifset familyVXT
@node SnglQ Intrinsic
@subsubsection SnglQ Intrinsic
@cindex SnglQ intrinsic
@cindex intrinsics, SnglQ

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL SnglQ} to use this name for an
external procedure.

@end ifset
@ifset familyF90
@node Spacing Intrinsic
@subsubsection Spacing Intrinsic
@cindex Spacing intrinsic
@cindex intrinsics, Spacing

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Spacing} to use this name for an
external procedure.

@node Spread Intrinsic
@subsubsection Spread Intrinsic
@cindex Spread intrinsic
@cindex intrinsics, Spread

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Spread} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node SqRt Intrinsic
@subsubsection SqRt Intrinsic
@cindex SqRt intrinsic
@cindex intrinsics, SqRt

@noindent
@example
SqRt(@var{X})
@end example

@noindent
SqRt: @code{REAL} or @code{COMPLEX} function, the exact type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL} or @code{COMPLEX}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the square root of @var{X}, which must
not be negative.

To calculate and represent the square root of a negative
number, complex arithmetic must be used.
For example, @samp{SQRT(COMPLEX(@var{X}))}.

The inverse of this function is @samp{SQRT(@var{X}) * SQRT(@var{X})}.

@end ifset
@ifset familyF2U
@node SRand Intrinsic
@subsubsection SRand Intrinsic
@cindex SRand intrinsic
@cindex intrinsics, SRand

@noindent
@example
CALL SRand(@var{Seed})
@end example

@noindent
@var{Seed}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Reinitializes the generator with the seed in @var{Seed}.
@xref{IRand Intrinsic}.
@xref{Rand Intrinsic}.

@node Stat Intrinsic (subroutine)
@subsubsection Stat Intrinsic (subroutine)
@cindex Stat intrinsic
@cindex intrinsics, Stat

@noindent
@example
CALL Stat(@var{File}, @var{SArray}, @var{Status})
@end example

@noindent
@var{File}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{SArray}: @code{INTEGER(KIND=1)}; DIMENSION(13); INTENT(OUT).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Obtains data about the given file @var{File} and places them in the array
@var{SArray}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{File}---otherwise,
trailing blanks in @var{File} are ignored.
The values in this array are extracted from the
@code{stat} structure as returned by @code{fstat(2)} q.v., as follows:

@enumerate
@item
Device ID

@item
Inode number

@item
File mode

@item
Number of links

@item
Owner's uid

@item
Owner's gid

@item
ID of device containing directory entry for file
(0 if not available)

@item
File size (bytes)

@item
Last access time

@item
Last modification time

@item
Last file status change time

@item
Preferred I/O block size (-1 if not available)

@item
Number of blocks allocated (-1 if not available)
@end enumerate

Not all these elements are relevant on all systems.
If an element is not relevant, it is returned as 0.

If the @var{Status} argument is supplied, it contains
0 on success or a nonzero error code upon return.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{Stat Intrinsic (function)}.

@node Stat Intrinsic (function)
@subsubsection Stat Intrinsic (function)
@cindex Stat intrinsic
@cindex intrinsics, Stat

@noindent
@example
Stat(@var{File}, @var{SArray})
@end example

@noindent
Stat: @code{INTEGER(KIND=1)} function.

@noindent
@var{File}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{SArray}: @code{INTEGER(KIND=1)}; DIMENSION(13); INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Obtains data about the given file @var{File} and places them in the array
@var{SArray}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{File}---otherwise,
trailing blanks in @var{File} are ignored.
The values in this array are extracted from the
@code{stat} structure as returned by @code{fstat(2)} q.v., as follows:

@enumerate
@item
Device ID

@item
Inode number

@item
File mode

@item
Number of links

@item
Owner's uid

@item
Owner's gid

@item
ID of device containing directory entry for file
(0 if not available)

@item
File size (bytes)

@item
Last access time

@item
Last modification time

@item
Last file status change time

@item
Preferred I/O block size (-1 if not available)

@item
Number of blocks allocated (-1 if not available)
@end enumerate

Not all these elements are relevant on all systems.
If an element is not relevant, it is returned as 0.

Returns 0 on success or a nonzero error code.

For information on other intrinsics with the same name:
@xref{Stat Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node Sum Intrinsic
@subsubsection Sum Intrinsic
@cindex Sum intrinsic
@cindex intrinsics, Sum

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Sum} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node SymLnk Intrinsic (subroutine)
@subsubsection SymLnk Intrinsic (subroutine)
@cindex SymLnk intrinsic
@cindex intrinsics, SymLnk

@noindent
@example
CALL SymLnk(@var{Path1}, @var{Path2}, @var{Status})
@end example

@noindent
@var{Path1}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Path2}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Makes a symbolic link from file @var{Path1} to @var{Path2}.
A null character (@samp{CHAR(0)}) marks the end of
the names in @var{Path1} and @var{Path2}---otherwise,
trailing blanks in @var{Path1} and @var{Path2} are ignored.
If the @var{Status} argument is supplied, it contains
0 on success or a nonzero error code upon return
(@code{ENOSYS} if the system does not provide @code{symlink(2)}).

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{SymLnk Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node SymLnk Intrinsic (function)
@subsubsection SymLnk Intrinsic (function)
@cindex SymLnk intrinsic
@cindex intrinsics, SymLnk

@noindent
@example
SymLnk(@var{Path1}, @var{Path2})
@end example

@noindent
SymLnk: @code{INTEGER(KIND=1)} function.

@noindent
@var{Path1}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Path2}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Makes a symbolic link from file @var{Path1} to @var{Path2}.
A null character (@samp{CHAR(0)}) marks the end of
the names in @var{Path1} and @var{Path2}---otherwise,
trailing blanks in @var{Path1} and @var{Path2} are ignored.
Returns 0 on success or a nonzero error code
(@code{ENOSYS} if the system does not provide @code{symlink(2)}).

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{SymLnk Intrinsic (subroutine)}.

@end ifset
@ifset familyF2U
@node System Intrinsic (subroutine)
@subsubsection System Intrinsic (subroutine)
@cindex System intrinsic
@cindex intrinsics, System

@noindent
@example
CALL System(@var{Command}, @var{Status})
@end example

@noindent
@var{Command}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
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)}, presumably 0 if the shell command succeeded.
Note that which shell is used to invoke the command is system-dependent
and environment-dependent.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{System Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node System Intrinsic (function)
@subsubsection System Intrinsic (function)
@cindex System intrinsic
@cindex intrinsics, System

@noindent
@example
System(@var{Command})
@end example

@noindent
System: @code{INTEGER(KIND=1)} function.

@noindent
@var{Command}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Passes the command @var{Command} to a shell (see @code{system(3)}).
Returns the value returned by
@code{system(3)}, presumably 0 if the shell command succeeded.
Note that which shell is used to invoke the command is system-dependent
and environment-dependent.

Due to the side effects performed by this intrinsic, the function
form is not recommended.
However, the function form can be valid in cases where the
actual side effects performed by the call are unimportant to
the application.

For example, on a UNIX system, @samp{SAME = SYSTEM('cmp a b')}
does not perform any side effects likely to be important to the
program, so the programmer would not care if the actual system
call (and invocation of @code{cmp}) was optimized away in a situation
where the return value could be determined otherwise, or was not
actually needed (@samp{SAME} not actually referenced after the
sample assignment statement).

For information on other intrinsics with the same name:
@xref{System Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node System_Clock Intrinsic
@subsubsection System_Clock Intrinsic
@cindex System_Clock intrinsic
@cindex intrinsics, System_Clock

@noindent
@example
CALL System_Clock(@var{Count}, @var{Rate}, @var{Max})
@end example

@noindent
@var{Count}: @code{INTEGER(KIND=1)}; scalar; INTENT(OUT).

@noindent
@var{Rate}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
@var{Max}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{f90}.

@noindent
Description:

Returns in @var{Count} the current value of the system clock; this is
the value returned by the UNIX function @code{times(2)}
in this implementation, but
isn't in general.
@var{Rate} is the number of clock ticks per second and
@var{Max} is the maximum value this can take, which isn't very useful
in this implementation since it's just the maximum C @code{unsigned
int} value.

@cindex wraparound, timings
@cindex limits, timings
On some systems, the underlying timings are represented
using types with sufficiently small limits that overflows
(wraparounds) are possible, such as 32-bit types.
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.

@end ifset
@ifset familyF77
@node Tan Intrinsic
@subsubsection Tan Intrinsic
@cindex Tan intrinsic
@cindex intrinsics, Tan

@noindent
@example
Tan(@var{X})
@end example

@noindent
Tan: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the tangent of @var{X}, an angle measured
in radians.

@xref{ATan Intrinsic}, for the inverse of this function.

@end ifset
@ifset familyVXT
@node TanD Intrinsic
@subsubsection TanD Intrinsic
@cindex TanD intrinsic
@cindex intrinsics, TanD

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL TanD} to use this name for an
external procedure.

@end ifset
@ifset familyF77
@node TanH Intrinsic
@subsubsection TanH Intrinsic
@cindex TanH intrinsic
@cindex intrinsics, TanH

@noindent
@example
TanH(@var{X})
@end example

@noindent
TanH: @code{REAL} function, the @samp{KIND=} value of the type being that of argument @var{X}.

@noindent
@var{X}: @code{REAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: (standard FORTRAN 77).

@noindent
Description:

Returns the hyperbolic tangent of @var{X}.

@end ifset
@ifset familyF2U
@node Time Intrinsic (UNIX)
@subsubsection Time Intrinsic (UNIX)
@cindex Time intrinsic
@cindex intrinsics, Time

@noindent
@example
Time()
@end example

@noindent
Time: @code{INTEGER(KIND=1)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
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}.

@cindex wraparound, timings
@cindex limits, timings
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.

@xref{Time8 Intrinsic}, for information on a
similar intrinsic that might be portable to more
GNU Fortran implementations, though to fewer
Fortran compilers.

For information on other intrinsics with the same name:
@xref{Time Intrinsic (VXT)}.

@end ifset
@ifset familyVXT
@node Time Intrinsic (VXT)
@subsubsection Time Intrinsic (VXT)
@cindex Time intrinsic
@cindex intrinsics, Time

@noindent
@example
CALL Time(@var{Time})
@end example

@noindent
@var{Time}: @code{CHARACTER*8}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{vxt}.

@noindent
Description:

Returns in @var{Time} a character representation of the current time as
obtained from @code{ctime(3)}.

@cindex Y10K compliance
@cindex Year 10000 compliance
@cindex wraparound, Y10K
@cindex limits, Y10K
Programs making use of this intrinsic
might not be Year 10000 (Y10K) compliant.
For example, the date might appear,
to such programs, to wrap around
(change from a larger value to a smaller one)
as of the Year 10000.

@xref{FDate Intrinsic (subroutine)}, for an equivalent routine.

For information on other intrinsics with the same name:
@xref{Time Intrinsic (UNIX)}.

@end ifset
@ifset familyF2U
@node Time8 Intrinsic
@subsubsection Time8 Intrinsic
@cindex Time8 intrinsic
@cindex intrinsics, Time8

@noindent
@example
Time8()
@end example

@noindent
Time8: @code{INTEGER(KIND=2)} function.

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the current time encoded as a long 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}.

@cindex wraparound, timings
@cindex limits, timings
@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 converted to an @samp{INTEGER(KIND=2)} 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.

No Fortran implementations other than GNU Fortran are
known to support this intrinsic at the time of this
writing.
@xref{Time Intrinsic (UNIX)}, for information on a
similar intrinsic that might be portable to more Fortran
compilers, though to fewer GNU Fortran implementations.

@end ifset
@ifset familyF90
@node Tiny Intrinsic
@subsubsection Tiny Intrinsic
@cindex Tiny intrinsic
@cindex intrinsics, Tiny

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Tiny} to use this name for an
external procedure.

@node Transfer Intrinsic
@subsubsection Transfer Intrinsic
@cindex Transfer intrinsic
@cindex intrinsics, Transfer

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Transfer} to use this name for an
external procedure.

@node Transpose Intrinsic
@subsubsection Transpose Intrinsic
@cindex Transpose intrinsic
@cindex intrinsics, Transpose

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Transpose} to use this name for an
external procedure.

@node Trim Intrinsic
@subsubsection Trim Intrinsic
@cindex Trim intrinsic
@cindex intrinsics, Trim

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Trim} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node TtyNam Intrinsic (subroutine)
@subsubsection TtyNam Intrinsic (subroutine)
@cindex TtyNam intrinsic
@cindex intrinsics, TtyNam

@noindent
@example
CALL TtyNam(@var{Unit}, @var{Name})
@end example

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Name}: @code{CHARACTER}; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Sets @var{Name} to the name of the terminal device open on logical unit
@var{Unit} or to a blank string if @var{Unit} is not connected to a
terminal.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine.

For information on other intrinsics with the same name:
@xref{TtyNam Intrinsic (function)}.

@node TtyNam Intrinsic (function)
@subsubsection TtyNam Intrinsic (function)
@cindex TtyNam intrinsic
@cindex intrinsics, TtyNam

@noindent
@example
TtyNam(@var{Unit})
@end example

@noindent
TtyNam: @code{CHARACTER*(*)} function.

@noindent
@var{Unit}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Returns the name of the terminal device open on logical unit
@var{Unit} or a blank string if @var{Unit} is not connected to a
terminal.

For information on other intrinsics with the same name:
@xref{TtyNam Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node UBound Intrinsic
@subsubsection UBound Intrinsic
@cindex UBound intrinsic
@cindex intrinsics, UBound

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL UBound} to use this name for an
external procedure.

@end ifset
@ifset familyF2U
@node UMask Intrinsic (subroutine)
@subsubsection UMask Intrinsic (subroutine)
@cindex UMask intrinsic
@cindex intrinsics, UMask

@noindent
@example
CALL UMask(@var{Mask}, @var{Old})
@end example

@noindent
@var{Mask}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
@var{Old}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
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)}.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine.

For information on other intrinsics with the same name:
@xref{UMask Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node UMask Intrinsic (function)
@subsubsection UMask Intrinsic (function)
@cindex UMask intrinsic
@cindex intrinsics, UMask

@noindent
@example
UMask(@var{Mask})
@end example

@noindent
UMask: @code{INTEGER(KIND=1)} function.

@noindent
@var{Mask}: @code{INTEGER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Sets the file creation mask to @var{Mask} and returns the old value.
See @code{umask(2)}.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{UMask Intrinsic (subroutine)}.

@end ifset
@ifset familyF2U
@node Unlink Intrinsic (subroutine)
@subsubsection Unlink Intrinsic (subroutine)
@cindex Unlink intrinsic
@cindex intrinsics, Unlink

@noindent
@example
CALL Unlink(@var{File}, @var{Status})
@end example

@noindent
@var{File}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
@var{Status}: @code{INTEGER(KIND=1)}; OPTIONAL; scalar; INTENT(OUT).

@noindent
Intrinsic groups: @code{unix}.

@noindent
Description:

Unlink the file @var{File}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{File}---otherwise,
trailing blanks in @var{File} 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)}.

Some non-GNU implementations of Fortran provide this intrinsic as
only a function, not as a subroutine, or do not support the
(optional) @var{Status} argument.

For information on other intrinsics with the same name:
@xref{Unlink Intrinsic (function)}.

@end ifset
@ifset familyBADU77
@node Unlink Intrinsic (function)
@subsubsection Unlink Intrinsic (function)
@cindex Unlink intrinsic
@cindex intrinsics, Unlink

@noindent
@example
Unlink(@var{File})
@end example

@noindent
Unlink: @code{INTEGER(KIND=1)} function.

@noindent
@var{File}: @code{CHARACTER}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{badu77}.

@noindent
Description:

Unlink the file @var{File}.
A null character (@samp{CHAR(0)}) marks the end of
the name in @var{File}---otherwise,
trailing blanks in @var{File} are ignored.
Returns 0 on success or a nonzero error code.
See @code{unlink(2)}.

Due to the side effects performed by this intrinsic, the function
form is not recommended.

For information on other intrinsics with the same name:
@xref{Unlink Intrinsic (subroutine)}.

@end ifset
@ifset familyF90
@node Unpack Intrinsic
@subsubsection Unpack Intrinsic
@cindex Unpack intrinsic
@cindex intrinsics, Unpack

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Unpack} to use this name for an
external procedure.

@node Verify Intrinsic
@subsubsection Verify Intrinsic
@cindex Verify intrinsic
@cindex intrinsics, Verify

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL Verify} to use this name for an
external procedure.

@end ifset
@ifset familyF2C
@node XOr Intrinsic
@subsubsection XOr Intrinsic
@cindex XOr intrinsic
@cindex intrinsics, XOr

@noindent
@example
XOr(@var{I}, @var{J})
@end example

@noindent
XOr: @code{INTEGER} or @code{LOGICAL} function, the exact type being the result of cross-promoting the
types of all the arguments.

@noindent
@var{I}: @code{INTEGER} or @code{LOGICAL}; scalar; INTENT(IN).

@noindent
@var{J}: @code{INTEGER} or @code{LOGICAL}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Returns value resulting from boolean exclusive-OR of
pair of bits in each of @var{I} and @var{J}.

@node ZAbs Intrinsic
@subsubsection ZAbs Intrinsic
@cindex ZAbs intrinsic
@cindex intrinsics, ZAbs

@noindent
@example
ZAbs(@var{A})
@end example

@noindent
ZAbs: @code{REAL(KIND=2)} function.

@noindent
@var{A}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Archaic form of @code{ABS()} that is specific
to one type for @var{A}.
@xref{Abs Intrinsic}.

@node ZCos Intrinsic
@subsubsection ZCos Intrinsic
@cindex ZCos intrinsic
@cindex intrinsics, ZCos

@noindent
@example
ZCos(@var{X})
@end example

@noindent
ZCos: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Archaic form of @code{COS()} that is specific
to one type for @var{X}.
@xref{Cos Intrinsic}.

@node ZExp Intrinsic
@subsubsection ZExp Intrinsic
@cindex ZExp intrinsic
@cindex intrinsics, ZExp

@noindent
@example
ZExp(@var{X})
@end example

@noindent
ZExp: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Archaic form of @code{EXP()} that is specific
to one type for @var{X}.
@xref{Exp Intrinsic}.

@end ifset
@ifset familyVXT
@node ZExt Intrinsic
@subsubsection ZExt Intrinsic
@cindex ZExt intrinsic
@cindex intrinsics, ZExt

This intrinsic is not yet implemented.
The name is, however, reserved as an intrinsic.
Use @samp{EXTERNAL ZExt} to use this name for an
external procedure.

@end ifset
@ifset familyF2C
@node ZLog Intrinsic
@subsubsection ZLog Intrinsic
@cindex ZLog intrinsic
@cindex intrinsics, ZLog

@noindent
@example
ZLog(@var{X})
@end example

@noindent
ZLog: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Archaic form of @code{LOG()} that is specific
to one type for @var{X}.
@xref{Log Intrinsic}.

@node ZSin Intrinsic
@subsubsection ZSin Intrinsic
@cindex ZSin intrinsic
@cindex intrinsics, ZSin

@noindent
@example
ZSin(@var{X})
@end example

@noindent
ZSin: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Archaic form of @code{SIN()} that is specific
to one type for @var{X}.
@xref{Sin Intrinsic}.

@node ZSqRt Intrinsic
@subsubsection ZSqRt Intrinsic
@cindex ZSqRt intrinsic
@cindex intrinsics, ZSqRt

@noindent
@example
ZSqRt(@var{X})
@end example

@noindent
ZSqRt: @code{COMPLEX(KIND=2)} function.

@noindent
@var{X}: @code{COMPLEX(KIND=2)}; scalar; INTENT(IN).

@noindent
Intrinsic groups: @code{f2c}.

@noindent
Description:

Archaic form of @code{SQRT()} that is specific
to one type for @var{X}.
@xref{SqRt Intrinsic}.

@end ifset
