INTRINSIC
Purpose
The INTRINSIC attribute identifies a name as an intrinsic procedure and allows you to use specific names of intrinsic procedures as actual arguments.
Syntax
Rules
If you use a specific intrinsic procedure name as an actual argument in a scoping unit, it must have the INTRINSIC attribute. Generic names can have the INTRINSIC attribute, but you cannot pass them as arguments unless they are also specific names.
A generic or specific procedure that has the INTRINSIC attribute keeps its generic or specific properties.
A generic intrinsic procedure that has the INTRINSIC attribute can also be the name of a generic interface block. The generic interface block defines extensions to the generic intrinsic procedure.
Examples
PROGRAM MAIN
INTRINSIC SIN, ABS
INTERFACE ABS
LOGICAL FUNCTION MYABS(ARG)
LOGICAL ARG
END FUNCTION
END INTERFACE
LOGICAL LANS,LVAR
REAL(8) DANS,DVAR
DANS = ABS(DVAR) ! Calls the DABS intrinsic procedure
LANS = ABS(LVAR) ! Calls the MYABS external procedure
! Pass intrinsic procedure name to subroutine
CALL DOIT(0.5,SIN,X) ! Passes the SIN specific intrinsic
END PROGRAM
SUBROUTINE DOIT(RIN,OPER,RESULT)
INTRINSIC :: MATMUL
INTRINSIC COS
RESULT = OPER(RIN)
END SUBROUTINE
Related information
- Generic and specific intrinsic procedures are listed in Intrinsic procedures. See this section to find out if a specific intrinsic name can be used as an actual argument.
- Generic interface blocks
