Intrinsic Procedures

Intrinsic procedures are functions and subroutines that are included in the Fortran library. The following are classes of intrinsic procedures:

The intrinsic subroutine MVBITS, and the subroutine MOVE_ALLOC with a noncoarray argument FROM, are pure. All other intrinsic subroutines are impure.

Intrinsic procedures are invoked the same way as other procedures, and follow the same rules of argument association.

The intrinsic procedures have generic (or common) names, and many of the intrinsic functions have specific names. Some intrinsic function names are both generic and specific. The interfaces of intrinsic procedures are explicit.

In general, generic functions accept arguments of more than one data type; the data type of the result is the same as that of the arguments in the function reference. For elemental functions with more than one argument, all arguments must be of the same type (except for the function MERGE).

When an intrinsic function is passed as an actual argument to a procedure, its specific name must be used, and when called, its arguments must be scalar. Some specific intrinsic functions are not allowed as actual arguments in all circumstances. The following table lists specific functions that cannot be passed as actual arguments or as targets in procedure pointer assignment statements.

Starting with Fortran 2018, specific names of intrinsic functions that also have generic names are obsolescent.

Specific Intrinsic Functions Not Allowed as Actual Arguments, to Specify an Interface, or as a Target of a Procedure Pointer

AIMAX0

HFIX

JINT

MIN1

AIMIN0

IADDR

JIQINT

NARGS

AJMAX0

IARGC

JMAX0

QCMPLX

AJMIN0

ICHAR

JMAX1

QEXT

AKMAX0

IDINT

JMIN0

QEXTD

AKMIN0

IFIX

JMIN1

QMAX1

AMAX0

IIDINT

JNUM

QMIN1

AMAX1

IIFIX

JZEXT

QNUM

AMIN0

IINT

KIDINT

QREAL

AMIN1

IIQINT

KIFIX

RAN

CHAR

IJINT

KINT

RANF

DBLE

IMAX0

KIQINT

REAL

DBLEQ

IMAX1

KMAX0

RNUM

DCMPLX

IMIN0

KMAX1

SECNDS

DFLOTI

IMIN1

KMIN0

SNGL

DFLOTJ

INT

KMIN1

SNGLQ

DFLOTK

INT1

KNUM

ZEXT

DMAX1

INT2

KZEXT

 

DMIN1

INT4

LGE

 

DNUM

INT8

LGT

 

DREAL

INUM

LLE

 

FLOAT

IQINT

LLT

 

FLOATI

IZEXT

LOC

 

FLOATJ

JFIX

MAX0

 

FLOATK

JIDINT

MAX1

 

FP_CLASS

JIFIX

MIN0

 

Note that none of the intrinsic subroutines can be passed as actual arguments or as targets in procedure pointer assignment statements.

The A to Z Reference contains the descriptions of all intrinsics listed in alphabetical order. Each reference entry indicates whether the procedure is inquiry, elemental, transformational, or nonelemental, and whether it is a function or a subroutine.

See Also