custom_findloc_integer_int32 Function

private pure function custom_findloc_integer_int32(arr, val, back) result(loc)

Custom implementation of the findloc intrinsic (with somewhat reduced functionality) as it requires fortran2008 support and is thus not available for some relevant compilers

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: arr(:)
integer(kind=int32), intent(in) :: val
logical, intent(in), optional :: back

Return Value integer


Contents


Source Code

    pure function custom_findloc_integer_int32(arr, val, back) result(loc)
        integer(int32), intent(in) :: arr(:)
        integer(int32), intent(in) :: val
        logical, intent(in), optional :: back
        integer :: loc

        integer :: i, first, last, step
        logical :: back_

        def_default(back_, back, .false.)

        if(back_) then
            first = size(arr)
            last = 1
            step = -1
        else
            first = 1
            last = size(arr)
            step = 1
        end if

        loc = 0
        do i = first, last, step
            if(arr(i) == val) then
                loc = i
                return
            endif
        end do
    end function custom_findloc_integer_int32