The main documentation of the NotInInterval Procedure contains additional explanation of this code listing.
define([NOT_IN_INTERVAL_ROUTINE],[
pushdef([TYPE], [$1])
pushdef([DIM], [$2])
pushdef([NotInInterval_TYPE_DIM], expand(NotInInterval_TYPE_DIM))
function NotInInterval_TYPE_DIM (X, Interval) result(NotInInterval)
! Input variables.
type(TYPE,DIM,np), intent(in) :: X ! Variable to be checked.
type(TYPE), dimension(2), intent(in) :: Interval ! Interval to check.
! Output variable.
type(logical) :: NotInInterval ! Result of check.
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! Verify requirements.
VERIFY(Interval(1) <= Interval(2),7) ! Interval should be well-formed.
! NotInInterval is true if X is not in the interval.
NotInInterval = ALL(X < Interval(1) .or. &
X > Interval(2))
! Verify guarantees -- none.
return
end function NotInInterval_TYPE_DIM
popdef([TYPE])
popdef([DIM])
popdef([NotInInterval_TYPE_DIM])
])
forloop([Dim],[0],[7],[
fortext([Type],[real integer],[
NOT_IN_INTERVAL_ROUTINE(Type, Dim)
])
])